黎志庭,龍田養,徐慶華,劉創新,吳振彪,沈德才
(1.廣東省東莞市大嶺山森林公園,東莞 523100;2.廣東省東莞市林業科學研究所,東莞 523106)
基于RFID的植物識別研究與實現
黎志庭1,龍田養2,徐慶華1,劉創新2,吳振彪1,沈德才2
(1.廣東省東莞市大嶺山森林公園,東莞 523100;2.廣東省東莞市林業科學研究所,東莞 523106)
基于RFID的植物識別能夠有效提高植物管理的工作效率。介紹一種基于Java平臺,使用JNA調用本地驅動程序的RFID開發方法,使用工廠方法模式解決讀卡器類型多樣化的問題,并對防碰撞和循環讀取中數據傳輸問題進行解決。該方法在鄉土植物管理系統中應用效果較好。
無線射頻識別;JNA;植物識別
無線射頻識別(Radio Frequency Identification,RFID)是一種非接觸式的自動識別技術,它利用無線射頻方式進行非接觸式雙向通信,能夠進行目標識別并交換數據[1]。隨著RFID技術的不斷發展,其應用領域涉及零售業、服務業、制造業、物流業、信息產業、醫療和國防等[2-4]。在植物識別領域,RFID技術在名樹古木和苗木花卉栽培管理有較好的應用[5-6]。本文主要解決在鄉土植物保護管理系統中應用RFID技術對植物個體進行識別的問題。
1.1 鄉土植物保護管理系統簡介
鄉土植物管理系統的主要目標是首先對鄉土植物的個體詳細數據進行采集,建立植物檔案數據庫;在進行現場巡檢和養護工作時,攜帶便攜式設備如平板電腦等進行相關工作數據的采集并與云服務器進行數據同步,其工作原理如圖1所示。RFID主要用于植物個體的識別,并與系統其他功能模塊進行數據通信,以實現對植物數據的管理。
1.2 RFID設備
鄉土植物管理系統需要通過USB接口或者藍牙接口連接讀卡器硬件,識別RFID標簽并實現植物數據的讀取和寫入。選取的硬件設備包括采用有線方式連接的USB讀卡器(MR915讀卡器)和無線試連接的藍牙讀卡器(UHF高頻讀卡器),如圖2和圖3所示。

圖1 鄉土植物管理系統工作原理

圖2 有線讀卡器實物圖

圖3 無線讀卡器實物圖
1.3 需要解決的關鍵問題
為了提高系統的可移植性,使其可以應用于不同類型的平板電腦,系統使用Java平臺開發,開發過程需要解決的關鍵問題包括:
(1)設備驅動的調用
系統使用Java平臺進行開發,而兩種讀卡器的底層驅動程序均是動態鏈接庫形式的DLL函數庫,因此需要決Java與底層驅動之間的調用問題。
(2)設備的可擴展性
目前系統選用兩種不同型號的讀卡器,并且根據需求,未來還會其它型號的讀卡器。因此,需要解決更換不同類型讀卡器時的問題,提高系統的可擴展性和可維護性。
(3)提高讀卡操作的抗干擾性
系統主要應用于野外環境的植物管理,在使用時會有很多外來干擾,系統應用時會出現同一個區域內會有較多標簽或者有多個用戶在附近使用讀卡器。因此需要考慮系統數據傳輸過程的抗干擾性和可靠性問題。
2.1 植物標簽的數據結構
系統的整體設計方案中,RFID標簽中需要存儲的數據包括兩項:標簽的唯一識別標志和植物個體的唯一識別標志。在數據的讀取和寫入操作中,數據是以二進制數據流的形式進行數據傳輸,因此數據結構中設計了數據長度。具體見表1。
根據EPC(電子產品代碼)標準協議,邏輯上RFID卡包括四個存儲體:保留內存、EPC存儲器、TID存儲器和用戶存儲器。系統分別使用標簽中的TID存儲區和用戶存儲器存儲上述數據。

表1 植物標簽數據結構
2.2 設備驅動調用的實現
系統解決連接問題使用Java訪問本地代碼的JNA(Java Native Access)框架,它提供一組Java工具類在運行期動態訪問系統本地庫(如Windows的DLL)而不需要編寫任何Native/JNI代碼[7]。開發時需要在一個Java接口中描述目標系統本地庫的函數與結構[8]。表2列出了部分調用讀卡器驅動的函數映射。

圖4 讀卡器應用的類結構圖

表2 JNA函數映射
2.3 讀卡器擴展性實現
系統需求中提出需要解決兩種類型讀卡器應用并考慮擴展其他類型讀卡器。為解決該問題,采用工廠方法設計模式,將不同的讀卡器的共同特征進行抽取,實現統一接口Reader代表抽象讀卡器,每種讀卡器的具體操作由實現了該接口的子類完成,圖4為類的結構關系。這樣在更換讀卡器設備時可以降低代碼修改成本。
2.4 標簽識別的實現
(1)防碰撞
系統運行過程中可能存在多個讀卡器或多個標簽同時工作,這些讀卡器和標簽之間可能會互相造成干擾,這就造成了碰撞。
本文采用的防碰撞處理策略是設置一個Q參數,其取值為0至15之間的整數。當讀寫器要對標簽進行讀寫操作時,讀寫器首先向所有的標簽發送查詢指令,指令中包含一個參數Q,處于讀寫器射頻場中的標簽收到此命令后便會產生0~21Q之間的隨機數作為其應答時隙,并將此隨機數載入時隙計數器中。只有時隙計數器中的時隙為0的標簽才會向讀寫器發送16位的隨機數作為應答信息。
(2)標簽識別
標簽識別分為單步識別和循環識別兩種方式。循環識別是RFID在需要多次識別時使用的功能,需要解決以下幾個問題:
①采用線程機制循環讀取數據
通過繼承Thread類實現一個線程類,其中定義一個圖4中Reader接口類型的變量reader,根據工廠方法實例化該變量。線程的循環運行通過一個狀態標志變量readFlag控制,當該變量為true時,通過reader讀取并發送數據。識別結束后,設置readFlag變量為false。
②識別過程中的防碰撞
在循環識別的處理過程中,通過參數控制是否啟用2.4.1中說明的防碰撞的功能。
③讀取數據的處理
在循環識別標簽過程中會不斷有數據讀出,為保證數據的完整性和一致性。系統讀取數據的傳輸使用消息隊列來實現。消息隊列是作為一個緩沖數據區的工具類出現,其中定義了存儲數據的線性表和入隊及出隊函數,通過范型定義允許系統各類數據對象在隊列中存取。
解決了以上幾個問題,在具體調用的時候只需要新建一個循環讀的線程,并且調用循環讀的方法傳遞相應的參數。同時在前臺線程中定時檢索消息隊列并對消息隊列中的數據進行處理。
單步識別每次只進行一次讀操作,其實現相對簡單。
2.5 數據讀取的實現
讀取功能是對標簽卡數據進行讀取,主要解決指定標簽、不同存儲區的讀取、循環讀和十進制讀出等問題。
①存儲區的指定
RFID標簽卡的存儲區邏輯上可以區分為四部分,系統實現時參數bank的取值確定讀取的存儲區位置,具體設置是:0表示保留區,1表表示CPC,2表示TID以及3表示USER。
②數據讀取
數據讀取也分為單步讀取和循環讀取,其實現方式與標簽識別的類似。主要區別是在讀取數據之前需要進行存儲區選擇的參數設置。在指定了標簽、存儲區、是否十進制讀取等參數后,循環讀取也需要進行新建線程進行讀取和需要使用消息隊列作為數據緩沖等。
2.6 數據寫入和擦除的實現
系統設計為只能對USER區的數據進行寫操作。數據寫入的主要步驟包括:指定要寫入的標簽;將待寫入數據轉換為16進制;通過接口Reader和工廠實例化讀卡器對象reader;調用reader對象的寫入函數將數據寫入標簽卡。
數據擦除功能與寫入功能實現基本一致,寫入的為空白數據。
進行測試前需要將RFID讀卡器連接到平板電腦。無線讀卡器通過藍牙與電腦連接,在開啟讀卡器和電腦藍牙后進行配對,配對成功后連接完成。有線讀卡器連接的操作的過程比較簡單,只需將讀卡器通過USB線連接電腦即可。
圖5是對標簽識別功能測試的結果,從圖中可以看出標簽的單步識別和循環識別均能正常工作。

圖5 標簽識別測試結果圖
圖6是對標簽各存儲區數據進行讀取的測試結果,從圖中可以看出,對各存儲區數據進行的單步讀取和循環讀取均能正常工作。

圖6 讀取數據測試結果圖
以上列出為主要功能的測試。全部模塊經過測試驗證,功能實現均與預期一致,能夠滿足鄉土植物管理系統的需要。
本文在Java平臺上使用JNA、線程、隊列等技術開發的RFID植物識別模塊,目前已經應用在東莞林科所的鄉土植物管理系統開發中,與系統的其他功能模塊,如數據采集、數據同步等協同工作正常。系統目前已經在實際工作環境運行了一年多時間,在現場工作中,基于RFID的植物識別極大地提高了工作效率,達到了預期的效果。
基于RFID的植物識別成功應用的經驗將來可推廣到珍稀植物、古樹名木保護等系統的開發工作中。
[1]陳新河.無線射頻識別(RFID)技術發展綜述[J].信息技術與標準化,2005(7):20-24.
[2]吳歡歡,周建平,許燕等.RFID發展及其應用綜述[J].計算機應用與軟件,2013,30(12):203-206.
[3]肖瀟雨.RFID技術在供應鏈管理中的應用研究述評[J].物流工程與管理,2015,37(12):48-50.
[4]潘媛媛.物聯網技術在醫療護理系統中的應用[J].實用醫院臨床雜志,2011(2):196-198.
[5]周朝,龐雄斌,萬勇.基于RFID的苗木識別管理系統的應用[J].農業網絡信息,2013(12):33-42.
[6]陸研,張紹文.基于RFID技術的名木古樹管理系統初探[J],2008(2):91-93.
[7]劉魁元,余凱鑫.基于JNA框架實現Java與讀寫器通信的研究[J].電子世界,2012(1):42-45.
[8]沈東良.使用JNA快速調用原生函數[J].程序員.2009(3):93-97.
Abstract:RFID based plant identification can effectively improve the efficiency of plant management.Introduces a development method for RFID,which uses JNA to call the local driver on Java platform,uses the factory method pattern to solve the problem of various types of card read?er,and the anti-collision and read data transmission problems were solved.The method is applied well in native plant management system.
Keywords:RFID;JNA;Plant Identification
Research and Implementation of Plant Identification Based on RFID
LI Zhi-ting1,LONG Tian-yang2,XU Qin-hua1,LIU Chuang-xin2,WU Zhen-biao1,SHEN DE-cai2
(1.Guangdong province Dongguan City Dalingshan Forest Park,Dongguan 523100;2.Dongguan Forestry Science Research Institute of Guangdong Province,Dongguan 523106)
1007-1423(2017)25-0077-05
10.3969/j.issn.1007-1423.2017.25.019
黎志庭(1981-),男,本科,助理工程師,從事領域為林業信息方面的研究
2017-06-27
2017-08-30