读写器管理软件主要由六个控制命令组成,其具体实现以下的一些功能:
①打开串口。读写器和计算机通信是通过串行口实现的,前面已经提及。此命令就是打开计算机某一个串行口,然后通知读写器,实现计算机和读写器的连接。
②读写器设置。在读取产品EPC码之前必须设置读写器,读写器需要设置的参数本系统主要考虑了三个(见图5右边按钮及下拉框):由于本控制软件适用于多个生产商的多个型号的读写器,读写器ID就是这些读写器的唯一标识号,用来区分各读写器;仓库名用来标识读写器所在的仓库;读写器有多种用途,在本系统中主要考虑出库、入库、防伪、手持盘点、柜台结算,读写器用途设置就是从其中选择一个作为当前实际用途。保存按钮是将当前设置保存起来,恢复按钮是恢复前一次的读写器设置。
③读产品EPC码。前面两个步骤完成后,直接选择这个命令执行,读写器就会自动的读取在读写器天线磁场范围内的电子标签。本系统所采用的读写器可以同时读取天线磁场内的多个标签,而且读取速度很快,达到每秒50个左右,同时此读写器支持多种型号的电子标签。标签的读取情况见图5显示框。
④写产品EPC码。将要写入标签的EPC码填入图5右下角的文本框内,执行命令后就可以将此EPC码写入读写器天线内的电子标签中。
⑤重新启动读写器。当读写器出现异常时,执行此命令,读写器CPU将关闭后重新启动。
⑥关闭串口。将计算机串口关闭,回收资源。
3.2.2数据显示和存储
在任何一个命令执行完毕后,显示框都会给出执行成功或失败的提示,当读EPC码命令执行后,读到的EPC会被显示出来,具体见图5。读到的EPC码可以以多种形式在数据库内存储,例如可以根据读入时间排序,也可以根据EPC码的值来排序。图5右下角按钮可实现显示、删除数据库中数据的功能。
3.2.3其他功能
除了以上所述,这个软件还可以设置读写器的硬件特性,比如输入输出模式,波特率,读写延迟时间,天线属性(单个天线工作或多个天线工作)等等;通过读写器类型选择菜单项可以使这个软件兼容多种型号的读写器。
3.3 采集EPC数据流程及关键技术
3.3.1采集EPC数据流程图。
本文上面已经提及此原型系统可以实现多种功能和操作,其中最复杂的功能就是实现从电子标签中采集EPC数据,图6就给出了采集EPC数据的流程图。
3.3.2关键步骤
①采集非EPC信息。当一次读EPC事件发生后,系统可以采集到各种类型的信息,上面已经提到系统可以采集到读写器的ID号,读写器所在的仓库,读写器的用途,读取发生时间以及电子标签中的EPC码,除此之外,通过与温度、湿度传感器合作,此系统亦可以采集读取EPC时刻的温度和湿度等相关信息。
②数据过滤。过滤处理EPC数据本系统考虑了如下两个方面:
数据平滑:有时候由于读写器异常或者标签之间的相互干扰采集到EPC数据可能是不完整的、错误的甚至出现漏读的情况。所以,对读取到的EPC数据流进行平滑处理是很有必要的,平滑处理可以清除不完整和错误的数据,将漏读的可能性降至最低。
读写器读电子标签中EPC码的操作流程见图7。读写器可以以很高的精度读取UID号,经过测试可以认为读写器能够完全地、正确地读出天线范围内所有正常标签的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 结束语
通过本文所给的数据采集原型系统,我们可以理解利用射频技术采集电子标签数据的独特性和优越性,但是它仍然是不完整和不成熟的,有很多因素和方面没有考虑进去,比如数据加密,防电磁干扰等等,这都是以后研究工作中不可忽略的方向。此外,本系统只是一个演示系统,还不能用来解决实际问题,所以下一步的主要工作就是找一个具体领域,开发出一套完整的应用系统。
新时代鞋服物流与供应链面临的变革和挑战03月07日 20:38
点赞:这个双11,物流大佬一起做了这件事11月22日 21:43
物流管理机构及政策分布概览12月04日 14:10
盘点:2017中国零售业十大事件12月12日 13:57
2017年中国零售电商十大热点事件点评12月28日 09:58