基于嵌入式 RFID 中間件的標(biāo)簽數(shù)據(jù)處理
SQLite 的應(yīng)用開發(fā)是在GoAhead 基礎(chǔ)上對數(shù)據(jù)進(jìn)行接收、過濾和分組處理??蛻舳藢⒂脩籼顚懙腦ML 表單通過HTTP 協(xié)議發(fā)送到GoAhead 服務(wù)器端。GoAhead 進(jìn)程中的主線程接收XML文件,將文件內(nèi)容通過命令消息通道傳給ALE子進(jìn)程。ALE子進(jìn)程通過ezXML模塊把XML 文件解析出來,提取出數(shù)據(jù)存入ECSpec 結(jié)構(gòu)體中。
DSP 解調(diào)出二進(jìn)制EPC 數(shù)據(jù),通過DSP 驅(qū)動發(fā)送到接收模塊。接收模塊濾除重復(fù)EPC碼,屏蔽閱讀器數(shù)據(jù)格式差異,轉(zhuǎn)換成統(tǒng)一數(shù)據(jù)格式后將數(shù)據(jù)送入到SQLite 中,作為數(shù)據(jù)庫操作的數(shù)據(jù)源。每個 ECSpec 對應(yīng)創(chuàng)建一個線程。該線程根據(jù)ECSpec 結(jié)構(gòu)體執(zhí)行數(shù)據(jù)庫操作,將查詢結(jié)果封裝成XML 數(shù)據(jù)報表通過數(shù)據(jù)消息通道發(fā)送給XML 報告線程。XML 報告線程通過TCP 協(xié)議發(fā)送給客戶端。數(shù)據(jù)流程圖如圖2 所示。下面以EPC 標(biāo)簽數(shù)據(jù)的流動方向進(jìn)行詳細(xì)分析。
3.1 EPC 標(biāo)簽數(shù)據(jù)格式
EPC(Electronic Product Code)是本世紀(jì)初由美國麻省理工學(xué)院(MIT)的AUTO-ID 中心提出的編碼方式。EPC 數(shù)據(jù)標(biāo)準(zhǔn)1.3 版本[5]中,EPC 由代表版本號的頭部、過濾字段、制造商、物品種類以及物品序列號組成。是唯一存儲在RFID 標(biāo)簽中的信息。AUTO-ID 中心將全球接受的EAN/UCC 編碼整合到新的EPC 中,共8 種格式:GID,SGTIN,SSCC,GLN,GRAI,GIAI,GDTI 和GSRN。后兩種是數(shù)據(jù)標(biāo)準(zhǔn)1.4 版本新增加的。為了在應(yīng)用軟件中更好地表示EPC 碼以及方便用戶閱讀和查詢,AUTO-ID 中心定義另一種表示方式:統(tǒng)一資源標(biāo)識符(Uniform. Resource Identifier,URI)。嵌入式中間件中用到的URI 格式如:urn:epc:pat:sgtin-96:0.*.*.*?!皍rn:epc:pat:”部分為URI 命令格式的固定內(nèi)容,“sgtin-96”即由EAN/UCC 編碼轉(zhuǎn)化而來的96 位二進(jìn)制SGTIN 編碼頭部分,其后四部分為具體編碼內(nèi)容。
3.2 EPC 二進(jìn)制數(shù)據(jù)轉(zhuǎn)化成標(biāo)準(zhǔn)URI
在數(shù)據(jù)轉(zhuǎn)化標(biāo)準(zhǔn)[6]中,EPC 有四種表示方式:二進(jìn)制、URI、不帶物品序列號的純識別URI 和EAN/UCC 編碼。在中間件中需要將閱讀器發(fā)送過來的二進(jìn)制EPC 編碼轉(zhuǎn)換成標(biāo)準(zhǔn)URI 形式,才能方便數(shù)據(jù)庫的分組過濾操作。方法是首先將EPC 二進(jìn)制數(shù)據(jù)轉(zhuǎn)換成一個字符一位的‘0’和‘1’字符串。選出代表版本號的頭部,根據(jù)頭部查詢EPC 格式表找到這種類型標(biāo)簽的分段結(jié)構(gòu),然后依據(jù)該分段結(jié)構(gòu)分別提取出各個部分。例如96 位標(biāo)簽數(shù)據(jù)300833B2DDD9014935050007(十六進(jìn)制數(shù)表示)轉(zhuǎn)換成URI 格式為urn:epc:pat:sgtin-96:0.0867360217.005.39544225799。
3.3 標(biāo)簽數(shù)據(jù)插入 SQLite 數(shù)據(jù)庫
因?yàn)橛脩舳说?filter 或group 命令是以URI 命令格式發(fā)送,查詢結(jié)果也是以URI 格式返回,所以在二進(jìn)制EPC 碼到達(dá)數(shù)據(jù)庫時,立即轉(zhuǎn)化為URI 格式存儲到SQLite 中,方便查詢操作。tableURI 就是用來保存URI 形式標(biāo)簽數(shù)據(jù)的信息表。tableURI 分成七個字段存貯URI 標(biāo)簽數(shù)據(jù):Header,F(xiàn)ilter,Company,Class,Serial,ReaderID,Time。前五個字段都是EPC 碼URI 格式的組成部分,ReaderID 為閱讀器ID 號,表明EPC 碼來自哪個物理閱讀器。Time 為DSP 上交標(biāo)簽數(shù)據(jù)的時間,是控制產(chǎn)生報表的邊界條件。EPC 數(shù)據(jù)轉(zhuǎn)化成標(biāo)準(zhǔn)URI 后提取各個數(shù)據(jù)段,使用sqlite3_mprintf 函數(shù)將數(shù)據(jù)段的值添加到SQL 語句中,然后通過sqlite3_exec 函數(shù)執(zhí)行該SQL 語句把標(biāo)簽數(shù)據(jù)插入到數(shù)據(jù)庫中。
linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)
評論