<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 設計應用 > 基于NFC手機的RFID中間件設計

基于NFC手機的RFID中間件設計

作者: 時(shí)間:2016-10-10 來(lái)源:網(wǎng)絡(luò ) 收藏

(RFID) 中間件位于RFID閱讀器與上層服務(wù)器應用層之間,具有屏蔽底層設備、標簽數據清洗、等功能。目前,國內外許多企業(yè)以及機構也都致力于RFID 中間件的研究,如:IBM、Microsoft、清華同方等都有自己的RFID 中間件產(chǎn)品。 這些產(chǎn)品大多部署在服務(wù)器端,如果短時(shí)間內產(chǎn)生了海量RFID 數據,大量原始數據都將集中在服務(wù)器端,對中間件的數據處理能力是很大的考驗。同時(shí),海量數據的傳輸會(huì )占用網(wǎng)絡(luò )帶寬,如果網(wǎng)絡(luò )出現故障,有可能會(huì )造成數據的丟失。隨著(zhù)大數據時(shí)代的到來(lái),傳統RFID 中間件的瓶頸逐漸暴露,直接影響系統的整體性能。因此,在面對海量RFID原始數據的情況下,如何減小服務(wù)器端處理壓力,降低系統對網(wǎng)絡(luò )的依賴(lài)性成為 RFID 中間件急需解決的問(wèn)題。本文就一種基于 NFC手機的RFID中間件進(jìn)行研究與實(shí)現,將RFID 中間件技術(shù)與移動(dòng)互聯(lián)網(wǎng)相結合,彌補了傳統RFID 中間件的不足之處,并且符合當前發(fā)展趨勢。

本文引用地址:http://dyxdggzs.com/article/201610/306217.htm

1 中間件設計方案

1.1 系統架構

根據RFID 中間件功能需求以及移動(dòng)設備資源有限等特點(diǎn),提出了如圖1 所示的系統架構。

圖1 系統總體架構圖

圖1 系統總體架構圖

1) 設備管理模塊主要包含 4 個(gè)部分,NFC讀卡部分負責調用手機自帶 NFC模塊進(jìn)行讀取標簽信息;外接閱讀器管理部分兼容外接閱讀器驅動(dòng),并通過(guò)藍牙、WiFi、3G網(wǎng)絡(luò )等與之進(jìn)行;工作日志管理部分主要對手機及中間件的工作日志進(jìn)行管理;手機狀態(tài)查詢(xún)部分能夠實(shí)時(shí)地對手機電量、剩余存儲空間、信號等狀態(tài)進(jìn)行查詢(xún)。

2)數據處理模塊主要包含5 個(gè)部分,協(xié)議校驗部分負責對RFID 標簽數據根據標識位進(jìn)行初步校驗,去除殘缺的或者非本系統數據;標簽緩存部分采用BlockingQueue 隊列作為緩存將初步校驗后的數據存儲;冗余數據處理部分采用自適應的臨近排序算法(Sorted Neighborhood Method,SNM)去除冗余數據;數據校驗部分采用 CRC16 算法對標簽數據中的校驗源數據進(jìn)行校驗,以此驗證標簽數據是否被篡改過(guò);數據分類(lèi)部分根據約定的數據規則將數據進(jìn)行分類(lèi)。

3)數據庫模塊采用 SQLite 嵌入式數據庫存儲處理好的數據。

4)模塊采用Quartz框架結合Socket編程實(shí)現中間件與服務(wù)器之間的數據交互。

5)任務(wù)管理模塊負責將服務(wù)器端發(fā)送來(lái)的命令文件進(jìn)行緩存與管理。

1.2 系統設計重點(diǎn)

1.2.1 設備管理模塊

該模塊主要為對硬件設備的管理與監控,集成NFC以及外接讀卡器驅動(dòng),并且能夠對系統工作日志以及手機狀態(tài)進(jìn)行查詢(xún)。

系統主要采用 NFC模塊對RFID 卡片進(jìn)行讀寫(xiě),集成多種NFC標準,可自動(dòng)判別卡片類(lèi)型,相關(guān)代碼如下所示:

mTechLists =new String[][]{new String[]{MifareClassic.class.getName()},

new String[]{MifareUltralight.class.getName()},

new String[]{NdefFormatable.class.getName()},

new String[]{Ndef.class.getName()},

new String[]{IsoDep.class.getName()},

new String[]{NfcV.class.getName()},

new String[]{NfcF.class.getName()},

new String[]{NfcB.class.getName()},

new String[]{NfcA.class.getName()}};

為了使系統有良好的可擴展性,中間件兼容多種讀卡器驅動(dòng),通過(guò)藍牙、WiFi、3G 網(wǎng)絡(luò )等與外接讀卡器進(jìn)行數據傳輸。

此外,提供良好的接口,可對中間件工作日志以及手機電量、信號強度、剩余存儲空間等信息進(jìn)行實(shí)時(shí)查詢(xún)與管理。

1.2.2 數據處理模塊

1)數據緩存、校驗及冗余數據處理。

系統采用BlockingQueue 隊列作為緩存來(lái)存儲短時(shí)間內接收的大量數據。 將接收的卡片數據進(jìn)行初步校驗,去除殘缺或者非本系統數據。

表 1 為標簽數據格式,其中UID 為每個(gè)標簽唯一標識,校驗數據中前7 位是用于生成校驗碼的原始數據,第8 位為本系統標簽標識,且對每個(gè)標簽的前7位校驗數據采用 CRC16 算法生成校驗碼,與標簽UID 一起由服務(wù)器通過(guò)JSON 文件寫(xiě)入到手機端數據庫中。 當讀取到標簽數據后,中間件首先根據校驗源數據中第8 位標識符來(lái)判斷該卡片是否為本系統所屬,然后采用相同的 CRC16 算法對前7 位校驗數據生成校驗碼,并根據標簽 UID 與數據庫中的校驗碼相比較,以此來(lái)判斷標簽數據是否被改寫(xiě)。 8 位校驗源數據在校驗完成后需去掉,只將有用數據存儲。

表1 RFID 標簽數據格式

表1 RFID 標簽數據格式

數據冗余是RFID 系統不可避免的問(wèn)題,如果數據不清洗,大量有用、無(wú)用的數據會(huì )占用網(wǎng)絡(luò )帶寬,增加系統處理負擔;如果將接收的數據逐一與數據庫中的數據進(jìn)行比對,雖然準確率高,但是面對大量的RFID數據時(shí)會(huì )降低系統效率,因此,針對移動(dòng)端有限的資源以及對數據處理效率的綜合考慮,本系統采用SNM 算法來(lái)處理冗余數據。

數據清洗流程如圖2 所示。

圖2 數據清洗流程圖

圖2 數據清洗流程圖

2)數據分類(lèi)。

將通過(guò)清洗的數據根據事先約定好的數據規則進(jìn)行分類(lèi),比如事先規定卡片中第 Ni ~Nj 位為數據標識位,則將數據存儲到 SQLite 數據庫相應表格中。

1.2.3 數據交互模塊

該模塊負責移動(dòng)端中間件與服務(wù)器之間的數據交互,在保證數據完整性、安全性的前提下,提高傳輸速度。 采用Socket 通信,以文件的方式傳輸命令與數據,模塊中采用 CRC 校驗確保文件安全,并且支持文件斷點(diǎn)上傳、下載。 將相關(guān)文件在移動(dòng)端進(jìn)行存儲與備份,即使網(wǎng)絡(luò )出現故障,中間件也可以正常工作,且不會(huì )造成數據丟失。

數據交互流程如圖3 所示。

圖3 數據交互模塊流程圖

圖3 數據交互模塊流程圖

中間件采用Quartz開(kāi)源框架根據需求設置作業(yè)調度,在一定時(shí)間自動(dòng)向服務(wù)器發(fā)送一次請求,若服務(wù)器端有新的命令,則獲取該命令,解析并執行,無(wú)需人工干預,且參數可由服務(wù)器端下發(fā)命令進(jìn)行修改,自動(dòng)化程度高,可配置性好,服務(wù)器端采用多線(xiàn)程處理中間件的請求,進(jìn)而提高處理效率。

表2 數據交互模塊傳輸速度測試

表2 數據交互模塊傳輸速度測試

表 2 為對數據交互模塊傳輸速度的測試結果,其中測試數據為支持ISO15693 標準的RFID標簽數據,手機端通過(guò)3G 網(wǎng)絡(luò )向服務(wù)器端上傳RFID 標簽數據文件,支持文件斷點(diǎn)續傳,而且當文件傳輸完成后,還會(huì )在本地進(jìn)行備份,避免文件數據丟失。 由于手機端緩存有限,且經(jīng)過(guò)測試,發(fā)送的數據包如果過(guò)大會(huì )導致數據丟失,所以系統數據包大小設置為 1kB,且每發(fā)送一次數據包,都會(huì )加上報頭用以標識該手機以及報尾用作 CRC 校驗。 當數據量較小時(shí),傳輸速度受報頭、報尾的影響較大,而當數據量增大時(shí),報頭、報尾對數據傳輸速度的影響越來(lái)越少。 所以,當傳輸的數據量增大到一定程度時(shí)(100000 條數據左右),所消耗的時(shí)間基本上與數據量大小成正比,此外,數據傳輸速度受網(wǎng)絡(luò )因素以及設備讀寫(xiě)速度影響較大。

1.2.4 任務(wù)管理模塊

將命令文件解析后依次執行,如果命令執行成功,則將命令文件移到備份文件夾中;如果由于網(wǎng)絡(luò )原因造成命令執行失敗,則將該命令加入到任務(wù)隊列,待網(wǎng)絡(luò )恢復后執行該命令,命令所需數據暫存在本地數據庫中。

如以下JSON 命令所示,status 表示命令狀態(tài),即服務(wù)器端命令是否正常;order_type 表示命令類(lèi)型,比如獲取數據、修改參數等;details 中表示要進(jìn)行的詳細操作,其中的object 表示操作的對象;action 表示對該對象執行的操作,比如獲取某一類(lèi)型的數據、獲取日志文件、獲取設備狀態(tài)或者是修改請求上傳/下載時(shí)間間隔等程序參數,使得該中間件可配置性好。

基于NFC手機的RFID中間件設計

1.2.5 數據存儲模塊

中間件根據服務(wù)器端發(fā)送來(lái)的命令,將相關(guān)數據生成JSON 文件,發(fā)送到服務(wù)器端的同時(shí),將JSON格式的數據文件備份到本地存儲設備中,防止由于網(wǎng)絡(luò )問(wèn)題等原因造成的服務(wù)器端接收的數據不完整,只有服務(wù)器端收到完整數據,并且發(fā)送相關(guān)命令給中間件,中間件才能根據命令將相關(guān)數據文件刪除,以此節省移動(dòng)設備的存儲空間。

1.3 系統優(yōu)點(diǎn)

1)減輕服務(wù)器端負擔。

RFID原始數據經(jīng)由多個(gè)部署在移動(dòng)設備上的中間件進(jìn)行處理,將處理后的有效數據發(fā)送到服務(wù)器端,這樣既減少服務(wù)器端的壓力,又減少網(wǎng)絡(luò )傳輸量,提高了系統運行效率。

2)具有數據存儲及備份功能,獨立性強。

移動(dòng)設備的存儲性能越來(lái)越強,當網(wǎng)絡(luò )或者服務(wù)器端出現故障時(shí),可將RFID數據存儲在移動(dòng)設備中,有效避免數據丟失。 因此在斷網(wǎng)的情況下也可以正常工作,解決了以往RFID中間件技術(shù)對網(wǎng)絡(luò )的依賴(lài)。

3)操作靈活,部署簡(jiǎn)單。

NFC手機集讀卡器、中間件于一體,可以根據數據量的大小增減設備數量,也可根據卡片分布對中間件位置做出調整,方便部署,同時(shí)也解決了以往RFID系統中讀卡器與中間件之間信息安全及傳輸速率問(wèn)題。

4)系統可配置性高。

中間件與服務(wù)器端通過(guò)傳輸JSON命令來(lái)控制系統進(jìn)行相關(guān)操作或者更改系統參數,比如獲取指定數據、改變數據交互時(shí)間間隔等。 同時(shí),操作人員也可以通過(guò)系統界面對中間件參數進(jìn)行設置,解決了以往中間件自動(dòng)化低、可配置性差等缺點(diǎn)。

5)自動(dòng)報警機制。

系統定期對設備日志及狀態(tài)信息進(jìn)行自檢,若出現緊急狀況,比如設備電量不足、存儲空間過(guò)滿(mǎn)以及卡片信息被篡改等,可以及時(shí)地向指定的手機號碼發(fā)送預警信息,避免造成損失,彌補了以往中間件報警不及時(shí)的弊端。

2 系統實(shí)現及運行效果

系統采用 Java 語(yǔ)言基于 Eclipse 平臺編寫(xiě),數據庫為 SQLite 嵌入式數據庫,測試設備為魅族 MX3 智能手機,其 RAM 容量為 2 GB,CPU 頻率為 1638MHz,ROM 為 32 GB,測試用卡片遵循 ISO15693 標準,采用NFC模塊讀取卡片內容,部分運行界面如圖4 所示。

圖4 系統運行部分界面

圖4 系統運行部分界面

當程序運行時(shí),將手機連接電腦,在 Eclipse 中啟動(dòng) Dalvik 調試監控服務(wù)器 (Dalvik Debug MonitorService,DDMS),并通過(guò) DDMS 自帶的 Heap 來(lái)查看系統消耗內存,顯示該程序所占內存為 22.628 M,CPU 占用率為6%,由此可見(jiàn),該系統可在移動(dòng)設備有限的資源中完美運行。 并且經(jīng)測試,包含 1000 W條RFID數據的 SQLite 數據庫大小為188 M,從所占存儲空間來(lái)看,該RFID 中間件可部署于大部分主流移動(dòng)設備中,并且可有效處理并存儲更多的數據。

為了模擬處理大量RFID 數據下系統工作狀況,編寫(xiě)程序根據RFID數據規則自動(dòng)生成測試數據,不同數據量的系統性能測試結果如表3 所示。

表3 中間件部分性能測試

基于NFC手機的RFID中間件設計

表3 中T 表示將原始數據經(jīng)過(guò)清洗并且存入數據庫所需時(shí)間,R和P分別表示數據清洗的召回率和正確率,R=系統正確識別的重復記錄數/數據集中實(shí)際包含的重復記錄數,P=系統正確識別的重復記錄數/系統總共檢索到的重復記錄數,Size表示保存相應數據量數據庫的大小。

可以看出,系統能夠滿(mǎn)足基本的數據處理要求,但數據清洗的召回率、正確率及所耗時(shí)間還有待提高,分析其原因主要是滑動(dòng)窗口的大小以及排序關(guān)鍵字的選擇。 當窗口太小時(shí),容易漏配,即去除冗余效果不佳,導致召回率不理想;當窗口太大時(shí),會(huì )產(chǎn)生許多沒(méi)必要的比較,時(shí)間效果不理想。所以,采用自適應隨機窗口在二者間找到一個(gè)平衡點(diǎn)。 本系統選取的關(guān)鍵字是時(shí)間戳,而根據實(shí)際應用,新到達的RFID數據更能代表當前狀況,所以每次比較都保留最新時(shí)間戳數據,這樣,使得部分數據之間的時(shí)間閾值可能小于預設值,即有的數據被誤認為是重復數據,導致了準確率不是很理想。

3 結束語(yǔ)

本文提出了基于NFC手機的RFID中間件,由于NFC手機集讀卡器與中間件功能于一體,且有較好的存儲能力,即使在網(wǎng)絡(luò )出現故障時(shí)中間件仍然可以運行,同時(shí)也使得系統部署更為靈活;數據交互模塊采用Quartz框架與Socket編程相結合,自動(dòng)化程度高;通過(guò)JSON命令或者良好的界面對參數進(jìn)行設置,使得系統具有良好的可配置性;在系統發(fā)生異常時(shí)還可實(shí)時(shí)發(fā)出報警短信,以便及時(shí)處理;充分利用移動(dòng)互聯(lián)網(wǎng)的優(yōu)勢,將RFID 中間件與移動(dòng)平臺完美結合,解決了傳統中間件的諸多不便之處。



評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>