《電子技術應用》
您所在的位置:首頁 > 通信與網絡 > 設計應用 > 基于嵌入式RFID 中間件的標簽數據處理
基于嵌入式RFID 中間件的標簽數據處理
維庫電子市場網
摘要: 射頻識別(RadioFrequencyIdentification,RFID)中間件介于RFID閱讀器和上層應用之間,用來...
Abstract:
Key words :

    1 引言

  射頻識別(Radio Frequency Identification, RFID中間件介于RFID 閱讀器和上層應用之間,用來屏蔽不同型號的閱讀器和各種協議標準的標簽,為上層應用軟件提供統一接口。另外,還負責整合和過濾數據,產生報表,減少應用層軟件的處理負擔,使海量標簽數據的傳輸和應用成為可能。目前,國內外的RFID 中間件體積龐大,只適用于PC 機,不能移植到嵌入式閱讀器中。本文提出一種可直接運行于各種嵌入式閱讀器設備,基于EPCglobal ALE 標準的嵌入式 RFID 中間件,并詳細研究其中的標簽數據處理流程。

  2 軟件體系結構

  嵌入式 RFID 中間件體系結構如圖1 所示。采用Linux 2.4.18 作為操作系統,操作系統自帶有網絡驅動和串口驅動。DSP 驅動是為本閱讀器DSP 模塊開發的驅動模塊,相當于一個連接到中間件服務器的閱讀器。中間層是GoAhead Web 服務器和嵌入式數據庫SQLite,上層是閱讀器管理,閱讀器協議服務和ALE 服務模塊。
 

  

圖 1 軟件體系結構

     GoAhead Web 服務器是一款面向嵌入式系統的Web 服務器,作為中間件的數據轉發和模塊承載平臺。閱讀器與客戶端之間,閱讀器與閱讀器之間的數據通信都是由GoAhead Web服務器完成。ALE 服務模塊,數據庫管理模塊,閱讀器管理模塊,閱讀器協議服務模塊等的開發也是建立在GoAhead 基礎上。

  數據庫采用 SQLite 3.3.9。SQLite 是輕型,免費和開源的嵌入式數據庫。提供絕大多數標準的SQL92 語句,工作速度快,滿足中間件數據處理的實時要求。在嵌人式系統中,數據庫管理、執行、維護的簡單化比企業數據庫提供的復雜應用更重要。因此選用SQLite數據庫在大小和功能方面是一個理想的折中。

  ALE 協議服務模塊是過濾和統計數據的基層部件與高層應用程序之間的接口。ALE 協議服務模塊采用EPCglobal ALE 標準,為高層軟件提供了通用接口。

  3 標簽數據處理流程

  SQLite 的應用開發是在GoAhead 基礎上對數據進行接收、過濾和分組處理??蛻舳藢⒂脩籼顚懙腦ML 表單通過HTTP 協議發送到GoAhead 服務器端。GoAhead 進程中的主線程接收XML文件,將文件內容通過命令消息通道傳給ALE子進程。ALE子進程通過ezXML模塊把XML 文件解析出來,提取出數據存入ECSpec 結構體中。

  DSP 解調出二進制EPC 數據,通過DSP 驅動發送到接收模塊。接收模塊濾除重復EPC碼,屏蔽閱讀器數據格式差異,轉換成統一數據格式后將數據送入到SQLite 中,作為數據庫操作的數據源。每個 ECSpec 對應創建一個線程。該線程根據ECSpec 結構體執行數據庫操作,將查詢結果封裝成XML 數據報表通過數據消息通道發送給XML 報告線程。XML 報告線程通過TCP 協議發送給客戶端。數據流程圖如圖2 所示。下面以EPC 標簽數據的流動方向進行詳細分析。



圖2 標簽數據處理流程

      3.1 EPC 標簽數據格式

  EPC(Electronic Product Code)是本世紀初由美國麻省理工學院(MIT)的AUTO-ID 中心提出的編碼方式。EPC 數據標準1.3 版本[5]中,EPC 由代表版本號的頭部、過濾字段、制造商、物品種類以及物品序列號組成。是唯一存儲在RFID 標簽中的信息。AUTO-ID 中心將全球接受的EAN/UCC 編碼整合到新的EPC 中,共8 種格式:GID,SGTIN,SSCC,GLN,GRAI,GIAI,GDTI 和GSRN。后兩種是數據標準1.4 版本新增加的。為了在應用軟件中更好地表示EPC 碼以及方便用戶閱讀和查詢,AUTO-ID 中心定義另一種表示方式:統一資源標識符(Uniform. Resource Identifier,URI)。嵌入式中間件中用到的URI 格式如:urn:epc:pat:sgtin-96:0.*.*.*。“urn:epc:pat:”部分為URI 命令格式的固定內容,“sgtin-96”即由EAN/UCC 編碼轉化而來的96 位二進制SGTIN 編碼頭部分,其后四部分為具體編碼內容。

  3.2 EPC 二進制數據轉化成標準URI

  在數據轉化標準[6]中,EPC 有四種表示方式:二進制、URI、不帶物品序列號的純識別URI 和EAN/UCC 編碼。在中間件中需要將閱讀器發送過來的二進制EPC 編碼轉換成標準URI 形式,才能方便數據庫的分組過濾操作。方法是首先將EPC 二進制數據轉換成一個字符一位的‘0’和‘1’字符串。選出代表版本號的頭部,根據頭部查詢EPC 格式表找到這種類型標簽的分段結構,然后依據該分段結構分別提取出各個部分。例如96 位標簽數據300833B2DDD9014935050007(十六進制數表示)轉換成URI 格式為urn:epc:pat:sgtin-96:0.0867360217.005.39544225799。

  3.3 標簽數據插入 SQLite 數據庫

  因為用戶端的 filter 或group 命令是以URI 命令格式發送,查詢結果也是以URI 格式返回,所以在二進制EPC 碼到達數據庫時,立即轉化為URI 格式存儲到SQLite 中,方便查詢操作。tableURI 就是用來保存URI 形式標簽數據的信息表。tableURI 分成七個字段存貯URI 標簽數據:Header,Filter,Company,Class,Serial,ReaderID,Time。前五個字段都是EPC 碼URI 格式的組成部分,ReaderID 為閱讀器ID 號,表明EPC 碼來自哪個物理閱讀器。Time 為DSP 上交標簽數據的時間,是控制產生報表的邊界條件。EPC 數據轉化成標準URI 后提取各個數據段,使用sqlite3_mprintf 函數將數據段的值添加到SQL 語句中,然后通過sqlite3_exec 函數執行該SQL 語句把標簽數據插入到數據庫中。

  3.4 過濾和分組標簽數據

  用戶定義的 ECSpec 中包含一個或多個Report,每個Report 由一個或多個filterSpec 或groupSpec 組成,每個filterSpec 有一個或多個includePattern 和excludePattern 組成,每個groupSpec 也包含一個或多個groupPattern 命令。這些過濾和分組命令可以方便用戶選擇出所需標簽數據。因此,需要實現兩種數據庫操作:filter 和group。

  3.4.1 過濾

  filter 是根據所給規則對數據進行過濾篩選,找出符合過濾條件的標簽數據。整個filter命令包含若干includePattern 和若干excludePattern,結果集為包含于任何一個或多個includePattern 中但是不包含于任何一個excludePattern 中的EPC 碼。用集合形式表示為:


  其中,R 為EPC 數據源集合,Ii 為EPC 集中符合第i 個includePattern 的數據集,Ei 為EPC集中的符合第i 個excludePattern 的數據集。

  過濾操作的 URI 命令中可出現:確定數值/部分值[low-high]/所有值*,如:urn:epc:pat:sgtin-96:0.0867360217.[001-1000].*。查詢時直接使用SELECT 操作,對各個字段逐個判斷格式類型生成SQL 語句,將各部分生成的SQL 語句匯總到一句中即可完成過濾操作。

  3.4.2 分組

  group 是根據用戶所給規則對標簽數據進行分組歸類,不屬于任何group 命令條件的EPC 碼自動歸為default group 組中。分組操作的URI 命令可出現:確定數值/部分值[low-high]/所有值*/分組X(即按該字段分組,有不同的值就分組,相同值的EPC 碼分到同一組中)。如:urn:epc:pat:sgtin-96:0.0867360217.X.*。

  當使用多個 groupPattern 命令時,為使EPC 碼只被歸為一個groupPattern 組中,要求URI 命令設置時,幾個groupPattern 不能有重疊區域。命令集:G = (Pat_1, Pat_2, ..., Pat_N)。Pat_i 和 Pat_j 為命令集G 中任意兩個URI 命令。

  Pat_i = urn:epc:pat:type_i:field_i_1.field_i_2.field_i_3...

  Pat_j = urn:epc:pat:type_j:field_j_1.field_j_2.field_j_3...

  Pat_i 和Pat_j 滿足下面任一規則時兩個URI 命令是無重疊區域的,允許使用。

  (1) type_i 和type_j 為不同編碼方式;

  (2) type_i 和type_j 編碼方式相同,但是字段field_i_1 和field_j_1 取值不沖突;

  (3) type_i 和type_j 編碼方式相同而且前面對應k-1 個字段都是固定值且相等,但是field_i_k 和field_j_k 取值不沖突;

  對應字段 field_i_k 和field_j_k 滿足下面任一規則時不沖突。

  (1) field_i_k 和field_j_k 都為固定值且不相同;

  (2) field_i_k 和field_j_k 一個是固定值,另一個是區間low-high,固定值不包含在區間中;

  (3) field_i_k 和field_j_k 都是區間值而且沒有重疊。

  groupPattern 無重疊,即可進行分組操作。分組時URI 命令明確指出頭部分,查詢時直接使用SELECT 操作。其他4 個字段,因為格式可選(確定的數值/部分值[low-high]/所有值*/分組X),所以要對各個字段逐個判斷其格式類型,對不同格式分別生成SQL 語句,將各部分生成的SQL 語句匯總到一句中。例如分組命令urn:epc:pat:sgtin-96:0.X.*.[20000-90000],最終產生SQL 操作語句為:

  CREATE VIEW viewGroup AS SELECT * FROM tableURI WHERE Header=’sgtin-96’AND

  Filter = 0 AND Serial BETWEEN 20000 AND 90000 GROUP BY Company。

  3.5 提交數據報表

  每個 EventCycle(中間件向客戶端提供報表的時間間隔,客戶端定義ECSpec 時設置)結束時根據Time 字段,選取生成視圖中當前EventCycle 的數據封裝成XML 數據報表發送給客戶端。相應操作語句為:

  //time2 = 當前時間,time1 = time2 - EventCycle

  sql = sqlite3_mprintf(“SELECT * FROM viewGroup WHERE Time BETWEEN %d AND %d”,

  time1, time2);

  3.6 刪除過期數據

  為了使中間件能長期穩定工作,必須定期刪除過期數據。過期數據包括多次插入數據庫的重復URI 以及過濾和分組產生的臨時視圖。對重復產生的URI 標簽數據,只保留最新記錄。標簽數據表table URI 總記錄條數大于某個值時調用數據備份程序,將表中的數據存貯到另一個目錄下,供用戶進一步處理。EventCycle 結束時刪除相應視圖。

  4 結束語

  經編譯運行測試,該系統體積非常小,除去 SQLite 動態庫不足1MB。兼容不同類型閱讀器,穩定可靠,標簽數據處理速度高??蛻舳耸褂眠^濾和分組命令能非常方便地訂閱所需數據。SQLite 憑借輕型,易于移植,免費開源的優點,除了可以作為RFID 中間件的數據庫,還可廣泛用于其它嵌入式領域,比如嵌入式家庭網關,POS 終端、智能手機和遠程監控系統等。
此內容為AET網站原創,未經授權禁止轉載。
亚洲一区二区欧美_亚洲丝袜一区_99re亚洲国产精品_日韩亚洲一区二区
国内视频一区| 亚洲大片在线观看| 久久久久久亚洲综合影院红桃 | 国产亚洲欧美一区在线观看| 亚洲欧美精品伊人久久| av成人动漫| 亚洲免费观看高清在线观看| 亚洲区欧美区| 亚洲美女精品久久| 亚洲精品极品| 亚洲美女黄网| 艳女tv在线观看国产一区| 夜夜躁日日躁狠狠久久88av| 一区二区冒白浆视频| 在线亚洲自拍| 亚洲一区在线播放| 亚洲综合国产| 香蕉精品999视频一区二区| 香蕉久久久久久久av网站| 性久久久久久久久| 欧美影院在线| 久久久人成影片一区二区三区观看 | 欧美亚洲免费高清在线观看| 性做久久久久久免费观看欧美| 亚洲欧美日韩在线不卡| 欧美一区二区在线播放| 久久精品国产免费观看| 久久综合图片| 欧美破处大片在线视频| 欧美网站在线观看| 国产精品视频区| 韩日成人av| 亚洲精华国产欧美| 在线亚洲精品| 久久不射电影网| 亚洲精品一品区二品区三品区| 99re66热这里只有精品3直播| 一区二区三区视频在线| 午夜视黄欧洲亚洲| 久久免费视频这里只有精品| 欧美黄色大片网站| 国产精品白丝jk黑袜喷水| 国产情侣久久| 亚洲成色999久久网站| 亚洲美女av黄| 亚洲欧美激情视频| 亚洲国产精品va在线观看黑人| 日韩天堂av| 香蕉久久一区二区不卡无毒影院| 久久久噜噜噜久久中文字免| 欧美激情综合在线| 国产精品日日做人人爱| 亚洲性视频网站| 亚洲午夜视频| 久久er99精品| 欧美黄在线观看| 国产精品九九久久久久久久| 国产日韩亚洲欧美精品| 亚洲高清一区二区三区| 亚洲一区二区欧美| 亚洲三级色网| 午夜伦理片一区| 久久亚洲捆绑美女| 欧美日韩日本国产亚洲在线| 国产亚洲精品aa| 亚洲欧洲日本在线| 亚洲欧美日韩成人高清在线一区| 亚洲黄色有码视频| 亚洲一区亚洲二区| 美玉足脚交一区二区三区图片| 欧美香蕉大胸在线视频观看| 激情视频亚洲| 亚洲天堂网站在线观看视频| 亚洲国产黄色| 午夜亚洲视频| 欧美日本韩国| 国外成人网址| 亚洲一级高清| 亚洲精品一区二区三区樱花| 久久福利视频导航| 欧美日韩亚洲综合| 欧美精品一区三区| 国内精品一区二区三区| 这里只有精品在线播放| 亚洲精品美女| 久久久伊人欧美| 国产精品人人爽人人做我的可爱| 亚洲激情第一区| 久久av二区| 欧美一二三视频| 欧美三级网页| 亚洲欧洲精品一区二区三区| 久久精品国产精品亚洲综合| 欧美亚洲三级| 国产精品家教| 夜夜嗨av一区二区三区免费区| 亚洲激情中文1区| 久久久久国产精品www| 国产精品日韩二区| 在线亚洲+欧美+日本专区| 亚洲美女黄色片| 欧美三级视频在线播放| 欧美在线国产| 国产精品a级| 亚洲日韩第九十九页| 91久久精品一区二区别| 久久久久久欧美| 国产亚洲一区二区三区在线播放| 亚洲一区二区三区精品在线观看 | 韩国免费一区| 欧美在线一二三| 久久国产精品毛片| 国产精品免费福利| 一区二区三区四区蜜桃| 一本久久知道综合久久| 欧美激情一区二区三区 | 亚洲一区二区三区影院| 亚洲香蕉网站| 欧美色区777第一页| 999亚洲国产精| 中文国产亚洲喷潮| 欧美日韩日韩| 一区二区欧美在线| 亚洲一区二区伦理| 欧美性事免费在线观看| 99这里只有精品| 亚洲毛片在线看| 欧美精品一区在线观看| 亚洲伦伦在线| 亚洲一区二区免费在线| 欧美系列亚洲系列| 亚洲一区二区三| 欧美一区二区三区视频在线观看 | 欧美日韩免费一区| 亚洲视频你懂的| 午夜精品电影| 国产一级一区二区| 亚洲国产精品999| 欧美国产日韩一区二区| 99国内精品久久| 午夜久久一区| 狠久久av成人天堂| 亚洲乱码国产乱码精品精可以看| 欧美人与禽猛交乱配视频| 在线视频中文亚洲| 久久精品国产77777蜜臀| 在线观看一区视频| 一区二区三区波多野结衣在线观看| 欧美日韩精品欧美日韩精品一| 一区二区三区日韩精品| 久久国产精品电影| 在线成人激情视频| 一区二区三区视频观看| 国产精品亚洲综合久久| 久久www成人_看片免费不卡| 欧美h视频在线| 日韩一二在线观看| 亚洲一区二区三区四区中文| 国产欧美午夜| 久久精品国产久精国产爱| 久久一二三国产| 亚洲精品久久久久久久久久久久| 亚洲综合第一| 在线播放不卡| 亚洲欧美另类中文字幕| 精品成人免费| 亚洲午夜免费视频| 好吊妞这里只有精品| 中国成人黄色视屏| 国产一区二区三区在线观看网站| 国产欧美综合在线| 亚洲精品久久久久久下一站| 欧美黑人国产人伦爽爽爽| 亚洲一区在线观看免费观看电影高清| 久久久久久久尹人综合网亚洲| 亚洲国产婷婷综合在线精品| 性做久久久久久久久| 亚洲福利视频免费观看| 亚洲免费在线观看视频| 国产一区在线看| 一本久道久久综合狠狠爱| 国产亚洲一区二区三区| 亚洲小少妇裸体bbw| 在线看欧美日韩| 欧美日韩亚洲综合在线| 免费久久精品视频| 在线亚洲一区| 欧美黄色免费| 欧美一区二区视频在线| 欧美日韩一区二区三区四区在线观看 | 欧美午夜一区| 亚洲日本va午夜在线电影| 国产精品一区免费视频| 日韩一级欧洲| 一区二区在线观看视频在线观看| 亚洲综合色激情五月| 亚洲国产精品999| 久久精品亚洲精品国产欧美kt∨| 一本色道久久88精品综合| 欧美h视频在线|