基于电子标签的数据采集系统(下)

来源:物流 | 2006-08-10 10:46
正确地读出天线范围内所有正常标签的UID号(只要标签没有损坏,所有标签的UID号就能被正确地读出)。然后根据UID号逐一锁定电子标签,读标签内的EPC数据(读取错误往往发生在这个阶段),当没有读到数据或者读到数据没有通过有效性检验时,读写器将重新读取标签,这个过程重复十遍后若仍然不能正确读到数据,那我们就认为读写器无法读出数据(可能是标签损坏),放弃之。在数据有效性检验中我们通过检验数据的位数来判断读到的数据是否有效,以此避免不完整和错误的数据出现。

  数据协调:当多个读写器同时工作时,从一个读写器发出的信号可能与另一个覆盖范围重叠的读写器发出的信号相互干扰。遇到这种情况时可以采用一种叫做时分多址(TDMA)的机制来避免冲突,即读写器被规定在不同的时间段读取信息,而不是在同一时刻都试图读取信息,保证了不会互相干扰。但这意味着处于两个读写器重叠区域的任何一个RFID 标签都将被读取两次信息。解决这种情况产生的EPC数据冗余的方法有很多种,本系统采取的方法简述如下:

  首先,将数据库里面的数据根据EPC码排序;然后,再将同一EPC码的多条记录按时间先后排序;接着,对拥有同一EPC码的多条记录的读取时间进行比较,若前后两条记录的时间差值小于两毫秒,则剔除后面的一条记录;依次类推,清除所有冗余数据。

  ③数据缓冲和存储。现有的数据库不具备在一秒钟内处理超过几百条事务的能力,因此读到的EPC数据流必须缓冲存储到一个临时单元,到了一定数量或一定的时间后一次性的写入数据库。本系统采用了Java提供的容器类list来缓冲EPC码,当一次读取操作完成后把所有的EPC码一次性存到数据库中。Java与SQLserve连接是通过JDBC来完成的,通过JDBC可以方便的实现数据库的查询,存储等基本操作。

  4.3.3 关键技术

  ①Java语言调用动态连接库。德州仪器提供了操作读写器的动态链接库(由MFC编写,经过编译后的二进制接口函数),读写器控制软件通过“Java本地接口,JNI”来调用这些动态连接库。具体方法是,首先用Virtual C++ 6.0编写符合JNI标准的本地方法(Native method),然后在这些本地方法中调用读写器提供的动态链接库,即可实现各种功能。

  ②多线程。当读EPC码的时候,读写器在软件的控制下必须不停的检测天线范围内是否有标签,随时准备接收EPC数据流。但是,在读EPC码的同时,软件还必须过滤存储前面已经读到的EPC码,甚至有的时候根据某些应用程序还需要根据读到的EPC码实现一些操作,比如产品信息即时查询,信息实时写入,柜台结算等。为了防止读EPC操作独占CPU资源,需要给读写器分配一个单独的控制线程,本系统采用线程类ReadEpc来控制读写器读EPC码,这样,其他的工作单元同时也可以完成相应的任务。

  4 结束语

  通过本文所给的数据采集原型系统,我们可以理解利用射频技术采集电子标签数据的独特性和优越性,但是它仍然是不完整和不成熟的,有很多因素和方面没有考虑进去,比如数据加密,防电磁干扰等等,这都是以后研究工作中不可忽略的方向。此外,本系统只是一个演示系统,还不能用来解决实际问题,所以下一步的主要工作就是找一个具体领域,开发出一套完整的应用系统。

10秒快速发布需求

让物流专家来找您