基于嵌入式RFID中间件的标签数据处理

2010-07-16 11:18:00来源:微计算机信息 热度:

1 引言

射频识别(Radio Frequency Identification, RFID)中间件介于RFID阅读器和上层应用之间,用来屏蔽不同型号的阅读器和各种协议标准的标签,为上层应用软件提供统一接口。另外,还负责整合和过滤数据,产生报表,减少应用层软件的处理负担,使海量标签数据的传输和应用成为可能。目前,国内外的RFID中间件体积庞大,只适用于PC 机,不能移植到嵌入式阅读器中。本文提出一种可直接运行于各种嵌入式阅读器设备,基于EPCglobal ALE 标准的嵌入式 RFID中间件,并详细研究其中的标签数据处理流程。

2 软件体系结构

嵌入式 RFID 中间件体系结构如图1 所示。采用Linux 2.4.18 作为操作系统,操作系统自带有网络驱动和串口驱动。DSP 驱动是为本阅读器DSP模块开发的驱动模块,相当于一个连接到中间件服务器的阅读器。中间层是GoAhead Web服务器和嵌入式数据库SQLite,上层是阅读器管理,阅读器协议服务和ALE 服务模块。

GoAhead Web 服务器是一款面向嵌入式系统的Web服务器,作为中间件的数据转发和模块承载平台。阅读器与客户端之间,阅读器与阅读器之间的数据通信都是由GoAhead Web服务器完成。ALE服务模块,数据库管理模块,阅读器管理模块,阅读器协议服务模块等的开发也是建立在GoAhead 基础上。

数据库采用 SQLite 3.3.9。SQLite 是轻型,免费和开源的嵌入式数据库。提供绝大多数标准的SQL92语句,工作速度快,满足中间件数据处理的实时要求。在嵌人式系统中,数据库管理、执行、维护的简单化比企业数据库提供的复杂应用更重要。因此选用SQLite数据库在大小和功能方面是一个理想的折中。

DSP 解调出二进制EPC 数据,通过DSP驱动发送到接收模块。接收模块滤除重复EPC码,屏蔽阅读器数据格式差异,转换成统一数据格式后将数据送入到SQLite 中,作为数据库操作的数据源。每个ECSpec 对应创建一个线程。该线程根据ECSpec 结构体执行数据库操作,将查询结果封装成XML 数据报表通过数据消息通道发送给XML 报告线程。XML报告线程通过TCP 协议发送给客户端。数据流程图如图2 所示。下面以EPC 标签数据的流动方向进行详细分析。

图2 标签数据处理流程

3.1 EPC 标签数据格式

EPC(Electronic Product Code)是本世纪初由美国麻省理工学院(MIT)的AUTO-ID 中心提出的编码方式。EPC 数据标准1.3版本[5]中,EPC 由代表版本号的头部、过滤字段、制造商、物品种类以及物品序列号组成。是唯一存储在RFID 标签中的信息。AUTO-ID中心将全球接受的EAN/UCC 编码整合到新的EPC 中,共8 种格式:GID,SGTIN,SSCC,GLN,GRAI,GIAI,GDTI 和GSRN。后两种是数据标准1.4 版本新增加的。为了在应用软件中更好地表示EPC 码以及方便用户阅读和查询,AUTO-ID中心定义另一种表示方式:统一资源标识符(Uniform. Resource Identifier,URI)。嵌入式中间件中用到的URI格式如:urn:epc:pat:sgtin-96:0.*.*.*。“urn:epc:pat:”部分为URI命令格式的固定内容,“sgtin-96”即由EAN/UCC 编码转化而来的96 位二进制SGTIN 编码头部分,其后四部分为具体编码内容。

3.2 EPC 二进制数据转化成标准URI

在数据转化标准[6]中,EPC 有四种表示方式:二进制、URI、不带物品序列号的纯识别URI 和EAN/UCC编码。在中间件中需要将阅读器发送过来的二进制EPC 编码转换成标准URI 形式,才能方便数据库的分组过滤操作。方法是首先将EPC二进制数据转换成一个字符一位的‘0’和‘1’字符串。选出代表版本号的头部,根据头部查询EPC格式表找到这种类型标签的分段结构,然后依据该分段结构分别提取出各个部分。例如96位标签数据300833B2DDD9014935050007(十六进制数表示)转换成URI格式为urn:epc:pat:sgtin-96:0.0867360217.005.39544225799。

3.3 标签数据插入 SQLite 数据库

因为用户端的 filter 或group 命令是以URI 命令格式发送,查询结果也是以URI 格式返回,所以在二进制EPC 码到达数据库时,立即转化为URI格式存储到SQLite 中,方便查询操作。tableURI 就是用来保存URI 形式标签数据的信息表。tableURI 分成七个字段存贮URI标签数据:Header,Filter,Company,Class,Serial,ReaderID,Time。前五个字段都是EPC 码URI格式的组成部分,ReaderID 为阅读器ID 号,表明EPC 码来自哪个物理阅读器。Time 为DSP 上交标签数据的时间,是控制产生报表的边界条件。EPC数据转化成标准URI 后提取各个数据段,使用sqlite3_mprintf 函数将数据段的值添加到SQL 语句中,然后通过sqlite3__exec函数执行该SQL 语句把标签数据插入到数据库中。

3.4 过滤和分组标签数据

用户定义的 ECSpec 中包含一个或多个Report,每个Report 由一个或多个filterSpec 或[FS:Page]groupSpec组成,每个filterSpec 有一个或多个includePattern 和excludePattern 组成,每个groupSpec也包含一个或多个groupPattern 命令。这些过滤和分组命令可以方便用户选择出所需标签数据。因此,需要实现两种数据库操作:filter 和group。

3.4.1 过滤

filter 是根据所给规则对数据进行过滤筛选,找出符合过滤条件的标签数据。整个filter命令包含若干includePattern和若干excludePattern,结果集为包含于任何一个或多个includePattern 中但是不包含于任何一个excludePattern 中的EPC码。用集合形式表示为:

其中,R 为EPC 数据源集合,Ii 为EPC 集中符合第i 个includePattern 的数据集,Ei 为EPC集中的符合第i个excludePattern 的数据集。

过滤操作的 URI命令中可出现:确定数值/部分值[low-high]/所有值*,如:urn:epc:pat:sgtin-96:0.0867360217.[001-1000].*。查询时直接使用SELECT操作,对各个字段逐个判断格式类型生成SQL 语句,将各部分生成的SQL 语句汇总到一句中即可完成过滤操作。

3.4.2 分组

group 是根据用户所给规则对标签数据进行分组归类,不属于任何group 命令条件的EPC 码自动归为default group 组中。分组操作的URI命令可出现:确定数值/部分值[low-high]/所有值*/分组X(即按该字段分组,有不同的值就分组,相同值的EPC码分到同一组中)。如:urn:epc:pat:sgtin-96:0.0867360217.X.*。

当使用多个 groupPattern 命令时,为使EPC 码只被归为一个groupPattern 组中,要求URI 命令设置时,几个groupPattern不能有重叠区域。命令集:G = (Pat_1, Pat_2, ..., Pat_N)。Pat_i 和 Pat_j 为命令集G 中任意两个URI 命令。

Pat_i = urn:epc:pat:type_i:field_i_1.field_i_2.field_i_3...

Pat_j = urn:epc:pat:type_j:field_j_1.field_j_2.field_j_3...

Pat_i 和Pat_j 满足下面任一规则时两个URI 命令是无重叠区域的,允许使用。

(1) type_i 和type_j 为不同编码方式;

(2) type_i 和type_j 编码方式相同,但是字段field_i_1 和field_j_1 取值不冲突;

(3) type_i 和type_j 编码方式相同而且前面对应k-1 个字段都是固定值且相等,但是field_i_k 和field_j_k 取值不冲突;

对应字段 field_i_k 和field_j_k 满足下面任一规则时不冲突。

(1) field_i_k 和field_j_k 都为固定值且不相同;

(2) field_i_k 和field_j_k 一个是固定值,另一个是区间low-high,固定值不包含在区间中;

(3) field_i_k 和field_j_k 都是区间值而且没有重叠。

groupPattern 无重叠,即可进行分组操作。分组时URI 命令明确指出头部分,查询时直接使用_select操作。其他4个字段,因为格式可选(确定的数值/部分值[low-high]/所有值*/分组X),所以要对各个字段逐个判断其格式类型,对不同格式分别生成SQL语句,将各部分生成的SQL 语句汇总到一句中。例如分组命令urn:epc:pat:sgtin-96:0.X.*.[20000-90000],最终产生SQL操作语句为:

CREATE VIEW viewGroup AS _select* FROM tableURI WHERE Header=’sgtin-96’AND

Filter = 0 AND Serial BETWEEN 20000 AND 90000 GROUP BY Company。

3.5 提交数据报表

每个 EventCycle(中间件向客户端提供报表的时间间隔,客户端定义ECSpec 时设置)结束时根据Time字段,选取生成视图中当前EventCycle 的数据封装成XML 数据报表发送给客户端。相应操作语句为:

//time2 = 当前时间,time1 = time2 - EventCycle

[FS:Page] sql = sqlite3_mprintf(“_select* FROM viewGroup WHERE Time BETWEEN %d AND %d”,time1, time2);

3.6 删除过期数据

为了使中间件能长期稳定工作,必须定期删除过期数据。过期数据包括多次插入数据库的重复URI 以及过滤和分组产生的临时视图。对重复产生的URI标签数据,只保留最新记录。标签数据表table URI总记录条数大于某个值时调用数据备份程序,将表中的数据存贮到另一个目录下,供用户进一步处理。EventCycle 结束时删除相应视图。

4 结束语

经编译运行测试,该系统体积非常小,除去 SQLite动态库不足1MB。兼容不同类型阅读器,稳定可靠,标签数据处理速度高。客户端使用过滤和分组命令能非常方便地订阅所需数据。SQLite凭借轻型,易于移植,免费开源的优点,除了可以作为RFID 中间件的数据库,还可广泛用于其它嵌入式领域,比如嵌入式家庭网关,POS终端、智能手机和远程监控系统等。

ALE 协议服务模块是过滤和统计数据的基层部件与高层应用程序之间的接口。ALE 协议服务模块采用EPCglobal ALE 标准,为高层软件提供了通用接口。

3 标签数据处理流程

SQLite 的应用开发是在GoAhead 基础上对数据进行接收、过滤和分组处理。客户端将用户填写的XML 表单通过HTTP 协议发送到GoAhead服务器端。GoAhead 进程中的主线程接收XML文件,将文件内容通过命令消息通道传给ALE子进程。ALE子进程通过ezXML模块把XML文件解析出来,提取出数据存入ECSpec 结构体中。

责任编辑:DVBCN编辑部

为您推荐

中间件——数字电视软件平台 (上)

在我国,内数字电视(DTV)的发展正处于起步阶段,数字卫星电视广播已采用DVB-S;数字有线电视广播已采用DVB-C标准(行业标准);数字地面电视广播标准尚在制定中,目前已有一些科研单位提出的五套备选的传输方案。由于今年数字有线电视网络试验播出扩大到20个省的84个城市,数字有线电视将在国内率先投入商业营运。数字高清晰度电视(HDTV)是电视的一场革命。其收视质量大幅度提高,大屏幕画面细腻逼真,并配以环绕声,已接近目前视听娱乐业中顶级质量的电影。凡是观看过数字HDTV演示的人们都会深信,HDTV是每一个家庭在数字信息时代应该拥有的“家庭影院”。DTV的三大优越性1.增加节目频道,减少传输成本。

中间件——数字电视软件平台 (中)

关键词:中间件数字电视交互式机顶盒基于中间件定义的三代机顶盒DTV系统的成功运营离不开机顶盒。机顶盒中需要集成CA和中间件。不仅CA和中间件厂家要对相关的软件收取费用,而且机顶盒的使用也要收取一定的费用。在整个系统运营中,机顶盒的费用是最高的。根据机顶盒的软件及硬件配置,可以将机顶盒划分为三代(种):第一代机顶盒:配置电子节目指南(EPG),实现简单的应用,无中间件,有或无CA系统,一般无回传信道。所有应用程序都是基于嵌入式实时操作系统而编制的。第二代机顶盒:配置电子节目指南(EPG),可实现交互式应用,有中间件和CA系统,有或无回传信道。应用程序都是基于中间件而编制的。第三代机顶盒:配置电子

中间件——数字电视软件平台 (下)

关键词:中间件数字电视交互式机顶盒中间件系统产品简介媒体烽火台系统为了抢占DTV核心技术的制高点,英凯软件系统有限公司和上海高清通力合作,开发了具有中国自主知识产权的DTV中间件——媒体烽火台(MediaBeaconTower)。中间件技术是DTV交互应用的核心部分。媒体烽火台接收端中间件系统是层次化的,采用模块化结构,包括一个Java虚拟机和一个网络浏览器,在未来交互应用中能够支持Java编程和上网。该系统符合中国DTV和DVB-MHP标准,支持国际标准DSMCC数据下载协议。媒体烽火台系统是一个独立的综合平台,集多媒体、数码家庭娱乐和电子商务于一体,它独立于硬件平台,可移植、可升级、可扩展

数字电视中间件技术发展浅析

数字电视中间件是指位于数字电视机顶盒内部实时操作系统与应用程序之间的软件部分,它以应用程序接口API的形式存在,整个API集合被存储在机顶盒的闪存FLASH中。针对机顶盒的应用程序基于API进行开发,能够支持丰富的应用。采用中间件系统,可以跨越技术、标准等复杂的内容,用简单的方法定制具有自己特色的应用软件,从而在提高开发效率、减少开发成本的同时能够跟上技术的发展,将应用的开发变得更加简捷,使产品的开放性和可移植性更强。虽然中间件对机顶盒硬件资源的要求较高,但在开发大量应用时成本大大下降。1数字电视的中间件技术中间件技术是一个纯软件系统技术,它也是一个比较笼统的概念。一般地说,它是建立在数字电视