胡文藝 曾維周 闞璦珂
(成都理工大學 信息科學與技術學院,成都610059)
RFID讀卡系統(以下簡稱讀卡系統)在人員定位、搜救和管理等方面具有廣泛的應用。讀卡系統,是一種針對RFID射頻識別(radio frequency identification)的技術。RFID讀卡器(以下簡稱讀卡器)通過獲取主動式RFID卡發射的射頻信號,在不需要人工干預的情況下,通過讀卡器對攜帶RFID卡的人員進行信息采集,并把所采集的數據信息存儲到相應的數據庫表中,從而實現對人員的監測定位[1-3]。由于讀卡器的有效讀卡范圍在50m左右,為了提高人員定位精度,讀卡系統需要在監控區域內設置多臺讀卡器。如何有效地對多臺讀卡器進行管理,保證獲取每一臺讀卡器讀取的數據,是讀卡系統設計時需要考慮的問題。由于本文所設計的系統采用的讀卡器具有同時讀取范圍內所有卡的技術特點,不需要采用RFID卡防碰撞算法[4];因此,本文采用輪詢機制,通過設定固定時間間隔,分別讀取每一臺RFID讀卡器設備,實現對數據的完整獲取。
串口輪詢是以基站為終端分配指令的一種處理流程,這種分配可以是針對單個終端或是一組終端的[5]。為單個終端和一組終端連接分配指令,定義指令請求競爭機制,這種分配不是使用一個單獨的消息,而是上行鏈路映射消息中包含的一系列分配機制[6]。在使用多臺讀卡器設備時,采用輪詢技術確保每臺讀卡器和系統之間數據通信的完整性。如圖1所示,系統首先取得設備1的地址,發送命令包獲得數據后,取得設備2的地址發送命令;按照此順序對4臺讀卡器進行遞歸操作,每一個讀卡器傳輸數據提供固定的間隔時間,然后再讀取下一臺設備。

圖1 串口輪詢流程Fig.1 Serial polling process
在本系統中,共使用了4臺讀卡器。為了保證數據包在傳輸的過程中有充足的時間,經過實驗后得出每次輪詢時間間隔需要5s。讀卡器通過RS232串口與計算機進行通信,讀卡系統通過上行和下行命令獲取數據包中的命令來判斷該數據包的類型,并針對該類型數據包進行相應操作,表1為RFID讀卡器數據包定義。

表1 RFID讀卡器數據包定義Table 1 Definition of RFID reader packet
系統包括RFID卡配置模塊和RFID卡消息輪詢查看模塊兩部分,均采用C/S模式架構設計。兩部分模塊均對RFID卡數據進行處理,RFID配置模塊實現對RFID卡數據的修改功能,RFID卡消息輪詢查看模塊實現對RFID卡數據的讀取功能。通過3G網絡,兩模塊將數據記錄存入數據庫服務器中,用戶可以利用數據庫服務器中數據進一步系統開發,或者通過對兩模塊數據進行匹配,實時進行人員監控,如圖2所示。
RFID卡配置模塊,利用身份證讀卡器讀取身份證的ID號碼,再采用RFID配置器錄入RFID卡中,并將該RFID卡號與對應的身份證ID記錄寫入數據庫中。身份證錄入RFID卡功能的實現是基于身份證閱讀器設備SDK的二次開發,RFID配置器部分使用WINDOWS API,從底層讀取COM端口設備,并完成數據讀取和寫入功能。
RFID卡消息輪詢查看模塊,讀卡器所采集的數據通過iNET網絡數傳電臺傳到服務器;RFID卡消息輪詢查看模塊讀取和解譯傳回的數據,獲得各個讀卡器所讀取的RFID卡號,并將記錄保存至數據庫中。該功能模塊采用 WINDOWS API技術從底層讀取COM端口設備。由于iNET網絡數傳電臺基于黑盒原理設計工作模式,因此在讀取讀卡器數據時,直接使用COM口輪詢技術,建立設備查詢和設備數據獲取線程,設置定時器按固定時間間隔刷新讀卡器地址,保證軟件可以分別獲取不同讀卡器讀取的數據。
基于C/S模式的RFID、旅游人員監控系統需要將RFID卡配置記錄和RFID卡輪詢記錄存入數據庫。根據系統功能設計需要,數據庫邏輯結構包括RFID配置記錄數據庫表和RFID輪詢記錄數據庫表。RFID配置數據庫表(表2)主要包括記錄號、RFID卡配置記錄時身份證ID號及對應RFID卡號和記錄時間戳。RFID卡輪詢記錄數據庫表(表3)主要包括記錄號、讀卡器編號、RFID卡的編號和記錄時間戳。

圖2 基于C/S模式的RFID讀卡系統框架Fig.2 The framework of RFID reader system based on C/S mode

表2 RFID配置記錄數據庫表Table 2 Database table of RFID configurator record

表3 RFID輪詢記錄數據庫表Table 3 Database table of RFID polling record
系統以Visual Studio C++6.0為開發語言,使用OLDB方式提供 MS SQL Server 2005數據庫操作功能,采用WINDOWS API和CSerialPort類庫來實現通過COM端口與RFID讀卡器、RFID配置器和身份證閱讀器的通信。讀卡器和RFID卡配置器硬件設備廠家提供了串口通信數據協議,如表4、表5所示。通信過程上行和下行的數據包根據其命令,可以對數據執行相應的操作,并存入數據庫中。
RFID卡配置模塊業務流程包括2部分,完成身份證號碼讀取和配置RFID卡寫入身份證信息,并將對應記錄寫入數據庫中。這2部分業務過程使用了身份證閱讀器和RFID卡配置器2種不同的硬件設備,因此,獨立設計2個業務流程,確保軟件的低耦合性。設計界面如圖3所示。

表4 RFID卡閱讀器讀取緩沖區數據協議Table 4 RFID card reader reads data protocol of buffer

表5 RFID卡配置器設置存儲數據信息數據協議Table 5 RFID card configurator sets data protocol of stored data information

圖3 RFID卡配置模塊界面Fig.3 Module interface of RFID card configurator
3.1.1 身份證號碼讀取
身份證號碼讀取是通過COM端口讀取身份證讀卡器設備的數據,取得身份證號碼并保存,用于配置RFID卡數據操作。身份證號碼讀取工作流程(圖4)首先需初始化身份證閱讀器設備,再通過COM端口用SDK開發包提供的連接函數連接身份證閱讀器設備;連接完成之后調用SDK開發包的讀取數據函數,將身份證的ID卡號數據讀出并傳回。

圖4 身份證號碼讀取工作流程Fig.4 The workflow of reading ID number
在開發過程中采用全局變量m_strIDNum保存數據庫并寫入RFID卡中,身份證閱讀器對身份證號碼的讀取代碼如下:


3.1.2 配置RFID卡數據
利用RFID配置器,將身份證號碼寫入RFID卡中。該功能同時將身份證的ID號碼和RFID卡的編號信息存入數據庫,實現該模塊與RFID卡消息輪詢查看模塊的數據交換。
如圖5所示,該功能使用CSerialPort類庫提供的COM端口通信函數尋找RFID配置器,完成之后啟動數據接收線程,獲取從RFID配置器取得的數據。根據廠家提供的數據包命令協議,將身份證閱讀器獲得的身份證號碼載入數據包中寫入RFID卡,并將匹配的數據記錄存入數據庫服務器中。身份證號碼寫入RFID卡中代碼如下:

RFID卡消息輪詢查看是利用RFID卡主動射頻信號,由RFID讀卡器進行讀取,并將數據顯示并保存至數據庫服務器中。本系統一共使用了4臺RFID讀卡器,采用輪詢機制對4臺設備分別進行遞歸訪問,獲得不同RFID讀卡器的數據,將讀獲的RFID卡編號顯示并存入數據庫中,界面如圖6所示。

圖5 RFID卡配置器工作流程Fig.5 The workflow of RFID card configurator

圖6 RFID卡消息輪詢查看模塊界面Fig.6 Module interface of RFID card message polling view
由于數據傳輸延時,必須確定有效的時間間隔,以保證每臺設備的數據都能夠完整獲得。通過實驗驗證,在本系統中設定定時器時間間隔為5s,可以達到設計目的。
本系統使用CSerialPort類庫提供的COM端口通信函數尋找iNET數傳電臺端口,成功后啟動數據接收線程,模塊每隔5s修改發送命令的硬件地址,通過iNET數傳電臺分別按相同的時間間隔讀取4臺讀卡器中的數據。通過4臺讀卡器發送讀取RFID卡的命令,獲取下行數據包后,模塊將數據包中的數據存入隊列變量中,通過讀卡器硬件廠家提供的協議,獲取每一個RFID卡的編號并和讀取數據的讀卡器編號一起記錄顯示并存入數據庫中。具體流程如圖7所示。

圖7 RFID卡消息輪詢查看工作流程Fig.7 The workflow of RFID card message polling view
實現獲取RFID讀卡器取得的數據代碼如下:

基于輪詢機制的RFID讀卡系統,通過設定固定的時間間隔作為輪詢機制基礎,遞歸讀取各臺RFID讀卡器數據。與采用防碰撞算法的輪詢機制相比,本方法由于在具體的項目實施中讀卡器的分布距離較遠,不存在讀卡器沖突;RFID卡可以同時讀取,不需要考慮RFID卡編號沖突,可以完整地獲取RFID卡數據,并通過對程序內存的有效管理,保證了系統在遞歸讀取數據時的穩定性,也避免了出現內存溢出導致系統崩潰。本系統通過RFID讀卡器數據記錄與RFID卡配置模塊的數據記錄進行匹配,可以實時獲取人員所在位置,實現人員的定位和管理。
[1]孫歆鈺.基于RFID技術的人員定位系統研究設計[J].制造業自動化,2011,33(5):31-33.
[2]葉晨成,校景中,肖麗.基于RFID的井下人員定位系統[J].武漢理工大學學報,2010,32(15):146-149.
[3]柯建華,魏學業.基于RFID與CAN的煤礦井下人員定位系統研究[J].煤炭工程,2006(11):104-106
[4]余發山,劉艷昌.井下RFID定位系統的讀寫器防碰撞技術研究[J].煤礦機械,2007,28(1):32-35.
[5]Ivor D'Souza,Wei Ma,Cindy Notobartolo.Real-time location systems for hospital emergency response[J].IEEE Computer Society Press,2011,13(2):37-43.
[6]趙東風,鄭蘇民.計算機通信網絡中輪詢傳輸方式的報文延時性能分析[J].云南大學學報,1993,5(5):78-86.