基于嵌入式 RFID 中間件的標簽數(shù)據(jù)處理
(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 滿足下面任一規(guī)則時不沖突。
(1) field_i_k 和field_j_k 都為固定值且不相同;
(2) field_i_k 和field_j_k 一個是固定值,另一個是區(qū)間low-high,固定值不包含在區(qū)間中;
(3) field_i_k 和field_j_k 都是區(qū)間值而且沒有重疊。
groupPattern 無重疊,即可進行分組操作。分組時URI 命令明確指出頭部分,查詢時直接使用SELECT 操作。其他4 個字段,因為格式可選(確定的數(shù)值/部分值[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 提交數(shù)據(jù)報表
每個 EventCycle(中間件向客戶端提供報表的時間間隔,客戶端定義ECSpec 時設置)結束時根據(jù)Time 字段,選取生成視圖中當前EventCycle 的數(shù)據(jù)封裝成XML 數(shù)據(jù)報表發(fā)送給客戶端。相應操作語句為:
//time2 = 當前時間,time1 = time2 - EventCycle
sql = sqlite3_mprintf(“SELECT * FROM viewGroup WHERE Time BETWEEN %d AND %d”,
time1, time2);
3.6 刪除過期數(shù)據(jù)
為了使中間件能長期穩(wěn)定工作,必須定期刪除過期數(shù)據(jù)。過期數(shù)據(jù)包括多次插入數(shù)據(jù)庫的重復URI 以及過濾和分組產生的臨時視圖。對重復產生的URI 標簽數(shù)據(jù),只保留最新記錄。標簽數(shù)據(jù)表table URI 總記錄條數(shù)大于某個值時調用數(shù)據(jù)備份程序,將表中的數(shù)據(jù)存貯到另一個目錄下,供用戶進一步處理。EventCycle 結束時刪除相應視圖。
4 結束語
經編譯運行測試,該系統(tǒng)體積非常小,除去 SQLite 動態(tài)庫不足1MB。兼容不同類型閱讀器,穩(wěn)定可靠,標簽數(shù)據(jù)處理速度高??蛻舳耸褂眠^濾和分組命令能非常方便地訂閱所需數(shù)據(jù)。SQLite 憑借輕型,易于移植,免費開源的優(yōu)點,除了可以作為RFID 中間件的數(shù)據(jù)庫,還可廣泛用于其它嵌入式領域,比如嵌入式家庭網關,POS 終端、智能手機和遠程監(jiān)控系統(tǒng)等。
評論