无线射频识别中间件技术

分享到:

 

中间件API接口MiddlewareAPI:

publicinterfaceMiddlewareAPI{
void define(String specName, ECSpec spec);
void undefine(String specName);
void subscribe(String specName, String uri);
void unsubscribe(String specName, String uri);
EPCReports poll(String specName);
EPCReports immediate(ECSpec spec);
}

工厂类APIFactory:

publicclassAPIFactory{
publicstaticMiddlewareAPIgetAPIInstance(){
}
}

API的实现类A:

publicclassClient{
publicstaticvoidmain(String[] args) {
MiddlewareAPI api = APIFactory.getAPIInstance();
api.define(a new spec, new EPCSpec());
}
}

3.3 状态模式模拟规则的状态机

规则在其生命周期中拥有不同的状态,在每个状态对一系列操作都有着不同的表现,于是可以利用状态模式(state)来模拟规则的状态机,将不同状态的不同表现作为可变化因素封装起来,参见代码示例。

规则状态接口ECState:

publicinterfaceECState{
voidsubscribe(StringspecName,String uri);
voidunsubscribe(StringspecName,String uri);
EPCReportspoll(StringspecName);
}

未被请求状态类ECStateUnrequested:

publicclassECStateUnrequestedimplements ECState {
}

已被请求状态类ECStateRequested:

publicclassECStateRrequestedimplements ECState {
}

激活状态类ECStateActive:

publicclassECStateActiveimplements ECState {
}

规则类ECSpec:

publicclassECSpec{
privateECStatestate;
publicECStategetState(){
return state;
}
publicvoidsetState(ECStatestate) {
this.state = state;
}
}

这样,在针对规则实施相应操作的时候,就可以直接把相应操作委派给其状态属性(ECState)去做即可。比如,ECSpec的subscribe操作,只需一行代码“state.suscribe(specName, uri);”即可。其中,specName、uri为临时变量,具体取值在方法调用之前确定。

由面向对象的多态性特征,根据state字段目前所指向的对象来动态确定由ECState接口的哪一个具体的实现类的代码来完成工作。ECState接口的实现类根据实际情况确定是否需要在处理过程中修改ECSpec对象的状态属性(state),此处在应用状态模式时,需要设计多个定时器类来辅助状态机的跳转。

3.4 策略模式切换多种报告上传、命令下发方式

事件周期结束之后,中间件需要组装报告上传给规则的预订者,即应用系统。上传的方式有多种,如HTTP、Socket、JMS等等。中间件的核心逻辑处理模块不应该关心具体的上传技术,相应工作应交给报告上传模块来做,核心逻辑处理模块只须完成自己的工作,然后把一定格式的数据通过报告上传模块发送,参见代码示例。

报告发送接口ReportSender:

publicinterfaceReportSender{
voidsendReport(ECReportsreports);
}

通过Http方式发送报告的ReportSender接口实现类ReportSenderByHttp:

publicclassReportSenderByHttpimplements ReportSender {
public void sendReport(ECReports reports) {
}
}

通过Socket方式发送报告的ReportSender接口实现类ReportSenderBySocket:

publicclassReportSenderBySocketimplements ReportSender {
publicvoidsendReport(ECReportsreports) {
}
}

通过JMS方式发送报告的ReportSender接口实现类ReportSenderByJms:

publicclassReportSenderByJmsimplements ReportSender {
publicvoidsendReport(ECReportsreports) {
}
}

报告发送示例客户端类

SendReportWorker:

publicclassSendReportWorker{
privateReportSendersender;
privateECReportsreports;
publicvoidsetReports(ECReportsreports) {
this.reports = reports;
}
publicstaticvoidmain(String[] args) {
SendReportWorker worker = new
SendReportWorker();
worker.sender.sendReport(reports);
}
publicvoidsetSender(ReportSendersender) {
this.sender = sender;
}
}

这样,发送消息的工人类可通过设置ReportSender的实例来灵活设置其发送方式。

同样,中间件的清点命令下发,即中间件与阅读器之间的接口,也存在多种方式,如Socket、SOAP等,也可采用类似的设计。

3.5 观察者模式处理上报消息

阅读器的消息上报转换为消息对象,对消息对象的接收、分发可采用经典的观察者模式实现。

继续阅读
说说你不知道的矢量信号与射频信号区别

其实说到矢量信号与射频信号源,各位工程师很清楚这些信号是发生测试过程出现的。

基于微波光子技术的构架和路线探讨

随着信息技术的发展,未来战争将呈现出大纵深和立体化作战空间,其作战行动将是陆海空天一体化,并将具备超远程、全天时、全天候、快速、灵活和精确的特点,高度发达的信息获取、控制和使用技术将成为未来战争中的必备。在这一过程中,信号的宽带接收与处理、信息的泛在感知与接入成为电子信息装备研究有待解决的关键问题。

分析JMX的RFID中间件设计

根据现有RFID设备存在的问题,以及RFID上层应用的多样性和数据的海量性,提出基于JMX的分布式RFID中间件架构。该中间件架构主要由硬件管理模块、事件数据处理模块、应用服务模块和管理控制模块四部分组成。具体介绍各功能模块的软件设计和实现。结论:该分布式中间件实现了数据采集和应用的分离,拥有高度的伸缩性,能方便系统的集成和扩充。

物联网中的中间件是什么?

互联网的大规模普及,拉近了人与人之间的交流,而不同国家人与人之间的交往也变得密切起来。由于彼此使用的语言不通,为了能够互相交流,我们需要将不同种的交流语言转换成对方可识别的信息,这就是翻译存在的理由了。同样随着物联网技术在生活和行业中的大规模应用 ,物与物之间的相互通讯与协同工作也变得密切起来。也需要这样的一个翻译,消除千千万万不能互通的产品之间的沟通障碍,跨系统的交流。这个翻译,我们叫它中间件。

射频信号时间频率稳定性的相位噪声和抖动

相位噪声是指系统(如各种射频器件)在各种噪声的作用下引起的系统输出信号相位的随机变化。由相噪结果计算得来的抖动(均方根值)数值单位是s,对应相应相噪分析的频段(频偏),多个频段的抖动数值可以通过均方根值合成一个数值,对应整个频段的抖动值。