RFID中间件:设备管理模块、数据处理模块

时间:2015-05-13

1.2 系统设计重点

1.2.1 设备管理模块

该模块主要为对硬件设备的管理与监控,集成NFC以及外接读卡器驱动,并且能够对系统工作日志以及手机状态进行查询。

系统主要采用 NFC模块对RFID 卡片进行读写,集成多种NFC标准,可自动判别卡片类型,相关代码如下所示:

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()}};

为了使系统有良好的可扩展性,中间件兼容多种读卡器驱动,通过蓝牙、WiFi、3G 网络等与外接读卡器进行数据传输。

此外,提供良好的接口,可对中间件工作日志以及手机电量、信号强度、剩余存储空间等信息进行实时查询与管理。

1.2.2 数据处理模块

1)数据缓存、校验及冗余数据处理。

系统采用BlockingQueue 队列作为缓存来存储短时间内接收的大量数据。 将接收的卡片数据进行初步校验,去除残缺或者非本系统数据。

表1 为标签数据格式,其中UID 为每个标签标识,校验数据中前7 位是用于生成校验码的原始数据,第8 位为本系统标签标识,且对每个标签的前7位校验数据采用 CRC16 算法生成校验码,与标签UID 一起由服务器通过JSON 文件写入到手机端数据库中。 当读取到标签数据后,中间件首先根据校验源数据中第8 位标识符来判断该卡片是否为本系统所属,然后采用相同的 CRC16 算法对前7 位校验数据生成校验码,并根据标签 UID 与数据库中的校验码相比较,以此来判断标签数据是否被改写。 8 位校验源数据在校验完成后需去掉,只将有用数据存储。

表1 RFID 标签数据格式

表1 RFID 标签数据格式

数据冗余是RFID 系统不可避免的问题,如果数据不清洗,大量有用、无用的数据会占用网络带宽,增加系统处理负担;如果将接收的数据逐一与数据库中的数据进行比对,虽然准确率高,但是面对大量的RFID数据时会降低系统效率,因此,针对移动端有限的资源以及对数据处理效率的综合考虑,本系统采用SNM 算法来处理冗余数据。

数据清洗流程如图2 所示。

图2 数据清洗流程图
图2 数据清洗流程图

2)数据分类。

将通过清洗的数据根据事先约定好的数据规则进行分类,比如事先规定卡片中第 Ni ~Nj 位为数据标识位,则将数据存储到 SQLite 数据库相应表格中。


上一篇:基于NFC手机的RFID中间件设计
下一篇:Atmel SMART SAM4C32智能电网解决方案

免责声明: 凡注明来源本网的所有作品,均为本网合法拥有版权或有权使用的作品,欢迎转载,注明出处。非本网作品均来自互联网,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。

相关技术资料