射频识别(radio frequency identification, rfid)中间件是在物理rfid阅读器和上层应用软件之间的一层软件,rfid中间件屏蔽了各种不同的阅读器传输标准,使上层应用软件得到统一、不变的数据和控制接口;另外,它还能对原始数据进行整合和过滤,产生用户定制的数据报表。在大规模应用rfid技术时,将产生海量数据,应用rfid中间件将使数据处理和传输变得相对简单。中间件的承上启下作用使rfid系统设计更为灵活,维护更为简单,不论是后端应用程序的变化,还是前端阅读器变化,都不会影响另外一端,省去维护多对多连接的复杂性问题。
rfid中间件是rfid技术应用领域和应用规模发展的产物,当今市场上已有一些产品,如:sun、microsoft和bea的rfid中间件产品,然而,这些产品大都是运行在pc机或服务器端,由于网络带宽有限,海量的数据要通过网络传输,大量无效的数据都要集中在服务器端,服务器必须对海量的数据进行筛选、过滤并按照确定的业务规则使数据转化成用户需要的、有意义的数据,这种复杂的处理必会增加服务器的压力,影响系统的性能。在发生网络故障时,也容易造成数据的丢失等。
随着技术的进步,移动设备(如pda等)的内存存储能力、cpu的处理能力不断增强,这也使得设计一种面向移动设备的rfid中间件成为可能。针对这种技术发展趋势,本文提出了一种面向移动设备的可灵活部署的rfid中间件seamobilemiddleware(smm)。smm能有效利用移动设备的内存、cpu等空闲资源,在数据发往服务器之前做一系列的预处理,优化原始数据,降低网络和服务器压力,并在网络故障时自动存储数据,保证数据的一致性。
1 rfid中间件smm系统架构
系统架构对系统整体性能有很大影响,针对移动设备特点,给出了一种面向移动设备的可灵活配置rfid中间件smm系统架构,如图1所示。
smm的系统整体架构包括三大模块,其中:最下层为device模块,负责把物理的真实设备抽象为系统的device对象;中间层为task manager模块,是smm的核心模块,负责处理用户和上层应用系统的一切命令,把标准的xml命令转化系统的task对象并执行,以用来控制device对象;最上层是用户接口(user interface,ui)模块,是基于标准的java swing开发的图形界面,使用户可以在本地方便地控制device对象。同时,smm也提供标准web service接口,方便其他远程系统控制和管理移动设备。
通过为移动设备提供本地ui和远程管理接口,smm可以使用户自定义流程,通过过滤和筛选将原始标签数据转化成用户想要的有意义数据。task manger提供的基于xml的标准接口也为smm提供了很好的扩展性和兼容性。
1.1 device模块
由于目前的tag、reader等种类繁多,标准各不相同,rfid中间件的核心功能一个就是屏蔽阅读器传输标准的差异,为上层提供统一的接口。smm通过抽象,把不同种类rfid阅读器、pda等移动设备作为不同类型device对象进行处理,并为每种device配置rule、dispatcher和driver三种属性。不同tag发出的原始数据通过driver适配变为统一的数据格式,通过rule将统一的数据格式转化成上层系统需要的数据,然后通过dispatcher把数据发送到所需的上层应用程序中。
1)driver:考虑到实际应用中的tag、reader的多样性,driver对不同类型reader数据进行适配处理,对数据进行统一和格式化。smm架构中内置了缺省的driver,负责处理当前大部分流行的reader.同时,针对特殊需求,用户可以开发特定driver完成特殊reader及tag的数据标准化。
2)rule:rule可以自定义特定业务逻辑和数据过滤规则,从而把数据转化成上层应用程序需要的有意义的数据。
比如:通过rule配置提取同一个厂商生产的tag的数据。
3)dispatcher:dispatcher定义数据分发路径,为数据提供路由功能。可以自定义dispatcher,从而把数据发送到用户需要的上层应用程序中。另外,系统提供了离线dispatcher,用于设备离线时的数据处理。当设备处于离线状态时,系统会把数据保存在嵌入式移动数据库“olite”上,当系统连线时,离线dispatcher自动将保存在“olite”数据库的历史事件发送到上层应用程序中,从而实现数据自动同步。
基于抽象思想,device模块把各种不同rfid阅读器等抽象成不同对象。通过配置rule、dispatcher和drive属性等管理真实设备,将来源不同的tag数据格式化为统一标准的数据,并按用户定义的规则过滤数据,转发到对应的上层系统中。
1.2 task manager模块
rfid中间件的另一核心功能是对外提供标准接口,便于上层应用程序调用和二次开发[10].smm中task manager模块通过管理所有命令和任务执行提供标准输入输出。
task manager模块具有如下功能:1)接受各种xml命令,解析xml命令找到对应的任务对象并执行后把结果封装成标准的xml返回给调用者;2)提供高效的任务队列来处理各种各样的xml命令;3)提供动态的日志队列使用户能够实时监控设备的相关信息。
基于task manager模块,smm提供图形界面和web service两种类型的请求来控制和管理移动设备,以使用户获取所需的数据。如果是smm内部请求,则提供标准的java api;如果是外部请求,则提供基于xml的标准web接口。图3给出了task manager的实现流程。在模块中,上层应用程序通过http协议把标准xml命令发送到smm,smm通过内嵌的轻型http server jetty处理各种http请求。jetty接受到标准的xml请求后,把各种xml命令给task manager模块,task manager解析xml格式的命令后,通过java反射得到对应的task对象。如果task对象是同步的,则调用task执行方法,返回相应结果并转化成标准xml给jetty服务器;如果task对象是异步的,则放到任务队列里面去,返回为空。
任务队列通过线程按照先进先出的方法来执行任务。为展示task执行过程,本文给出设备启动过程展现上层应用程序控制设备的过程。
上层应用通过http(post)方法把标准的xml命令发送到jetty服务器上,格式如下:
task manager根据“action”的内容,通过java提供的反射机制得到相应任务start device task实例,并把相应的设备名称作为参数交给start device task实例。由于start device task是异步的,所以start device task会放到任务队列中执行并且返回空。当任务队列执行到start device task任务时,task manager日志队列会实时写日志改变dev21和dev22的状态,并返回到smm的ui。
2018年功率晶体管销售额再创新高 增长14%
iPhone 12出现绿屏怎么办?
特斯拉国产Model Y正式公布售价
东芝、西数达成和解,归回东芝闪存芯片业务出售自由权
iOS10.3这功能很少人知道,会用的都是大神!
面向移动设备的可配置RFID中间件如何实现
iPhone8、三星s8售价太疯狂,诺基亚8你还好吗?
机械快门秒杀索尼专业微单 佳能EOS R5掀起提速革命!
LED大灯测试:新款途观L的大灯调校得比老款更好
联想K12 Pro通过FCC认证:4GB+128GB组合
蓝牙技术联盟与DiiA协手合作,加速推进物联网商业照明
农业案例┃凯米斯与浙大强强联合,助力循环水养殖业绿色发展
全球移动商已承诺采用和实施《GSMA物联网安全指南》
基于LabVIEW开发平台实现读写器自动化测试软件的设计
占领垂直场景:国产AI大模型的下半场赛事
机械液压千斤顶原理图
Chrome浏览器将为默认网址添加https前缀
鲜花冷链供应方面怎样使用物联网技术
高通与京东方拟合作开发集成高通3D Sonic指纹传感器的创新显示产品
基于S1C33L11芯片的嵌入式USB双向通信系统设计