APP下载

基于轮询机制的RFID读卡系统的设计与实现

2012-08-01胡文艺曾维周阚瑷珂

关键词:读卡轮询读卡器

胡文艺 曾维周 阚瑷珂

(成都理工大学 信息科学与技术学院,成都610059)

RFID读卡系统(以下简称读卡系统)在人员定位、搜救和管理等方面具有广泛的应用。读卡系统,是一种针对RFID射频识别(radio frequency identification)的技术。RFID读卡器(以下简称读卡器)通过获取主动式RFID卡发射的射频信号,在不需要人工干预的情况下,通过读卡器对携带RFID卡的人员进行信息采集,并把所采集的数据信息存储到相应的数据库表中,从而实现对人员的监测定位[1-3]。由于读卡器的有效读卡范围在50m左右,为了提高人员定位精度,读卡系统需要在监控区域内设置多台读卡器。如何有效地对多台读卡器进行管理,保证获取每一台读卡器读取的数据,是读卡系统设计时需要考虑的问题。由于本文所设计的系统采用的读卡器具有同时读取范围内所有卡的技术特点,不需要采用RFID卡防碰撞算法[4];因此,本文采用轮询机制,通过设定固定时间间隔,分别读取每一台RFID读卡器设备,实现对数据的完整获取。

1 串口轮询技术

串口轮询是以基站为终端分配指令的一种处理流程,这种分配可以是针对单个终端或是一组终端的[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

2 系统设计

2.1 系统框架

系统包括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口轮询技术,建立设备查询和设备数据获取线程,设置定时器按固定时间间隔刷新读卡器地址,保证软件可以分别获取不同读卡器读取的数据。

2.2 数据库设计

基于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

3 系统实现

系统以Visual Studio C++6.0为开发语言,使用OLDB方式提供 MS SQL Server 2005数据库操作功能,采用WINDOWS API和CSerialPort类库来实现通过COM端口与RFID读卡器、RFID配置器和身份证阅读器的通信。读卡器和RFID卡配置器硬件设备厂家提供了串口通信数据协议,如表4、表5所示。通信过程上行和下行的数据包根据其命令,可以对数据执行相应的操作,并存入数据库中。

3.1 RFID卡配置

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卡中代码如下:

3.2 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读卡器取得的数据代码如下:

4 结论

基于轮询机制的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.

猜你喜欢

读卡轮询读卡器
煤矿井下车辆乘人防漏识别读卡基站设计
智能会议预约终端内置读卡器性能的改善*
与淘汰命运抗争 看懂笔记本的读卡器
基于等概率的ASON业务授权设计∗
基于EMV非接通信规范的非接触读卡器设计
为二维码识别的献礼之作——评测平治二维码门禁读卡器
依托站点状态的两级轮询控制系统时延特性分析
利用时间轮询方式操作DDR3实现多模式下数据重排
MATLAB实现组态王中TCP/IP读卡器监控方法
基于LINUX的PBOC3.0关键读卡技术的研究与应用