信息化 频道

生产线嵌入式RFID终端读写器设计

    针对通信帧的特点设计的Linux 平台驱动软件由以下几个主要的子函数组成:

    1、 unsigned short CalculateBlockCRC16(int len, unsigned char *pBuf);进行CRC计算和验证 

    2、 int AppendCRC(void *pBuf, unsigned short CRC);将算出的CRC 值添加到请求包指定位置 

    3、 int UartSend(void *pBuf,int uart_num);将算出的CRC 及命令字发送到指定串口 

    4、 int UartRead(unsigned char *pBuf, int uart_num);从指定的串口读入返回的数据包 

    5、 int CRCcheck(unsigned char *pBuf, unsigned short CRC);比对得到的CRC与数据包是否正确 

    6、 int ProcessTag(unsigned char *pBuf, unsigned char Tags[ ]);

    处理得到的返回桢,分离出读取到的条码 编号,并存入数组进行暂存,为下一步数据库存取做好准备除以上子函数外,还有其它相应的函数来进行剔除干扰数据包,处理异常等工作,经本模块处理后,已经可以确保可以过滤绝大多部分的干扰信息了,这样处理完的数据就可以直接进行数据库记录和通过网络传输给后台数据库了。

    ③ 嵌入式数据库操作模块

    嵌入式数据库是整个系统的重要组成部分,在本系统中采用了开源的小型嵌入式数据库SQLite,支持SQL 92 标准数据库操作语句和事务,其工作流程如下:当读取到条码时,本模块将条码号、读取时间、条码内容、采集点编号,操作状态等信息写入本地数据库,从而实现采集数据的本地初步存储,数据库在此列举几个主要的子函数如下:

    1、int Query_Init(string *p_command, struct *p_DB_Status, int type);选择基本的SQL 操作符符号和初始值设置,为执行数据库操作做好准备。 

    2、int Query_Exec(int db,string *p_command,void (* p_fuction) (*str),(void *)&res);选择数据库,根据SQL 操作符进行数据库操作,并将返回数据通过p_function 函数处理。 

    3、int Query_CallBack(void *p_data, int num, char **value, char **column);将数据库操作返回的数据列表暂存到数组中,以待下一步处理。

    除以上函数外,还预留了相应的接口用来完成前端数据库和后台数据库的同步,经测试,平均插入一条数据的时间<=0.01 秒,满足了系统的即时性上的需求。

    ④ 网络通信模块

    本系统的特色就是通过嵌入式Linux 操作系统的网络底层支持,以多种网络传输途径,将数据和后台数据服务器进行数据传输。在本系统的网络部分设计中,在局域网内利用Linux系统的提供的TCP/IP 协议支持,在编程中采用了动态与服务器建立连接的方法,在读取到RFID 芯片并解码出有效信息的时候,向服务器相应端口发送相应的Socket 请求信息,服务器端接受到请求后建立连接并新建Socket 端口来和终端进行通信;只有在读取数据的时候数据库和终端间才产生数据传输和占用服务器端资源,从而降低了网络占有率和服务器端的负荷,通信部分终端客户端部分的主要子函数如下:

    1、int Net_Init(struct *p_net_Status,int type);初始化通信,根据选择通信的类型建立和服务器端的网络连接,取得服务器基本信息,并建立Socket 连接。 

    2、int Net_Send(string *p_data, int len, struct sockaddr *p_addr);发送指定大小字符串到连结的服务器端口。

    3、int Net_Receive(string *p_buffer, int len, struct sockaddr *p_addr);从服务器接受数据(主要是接受指令)到指定缓冲区内。

    由于Linux 底层提供了TCP 支持,可以保证通信的可靠性,大大降低了编程复杂度,所以只要经过简单的对Socket 函数进行了封装来实现数据网络传输,配合服务器端程序即可将标签信息保存到后台的主数据库中,并由后台服务器根据通信内容进行数据保存,发送控制命令等操作。

    四、结论

    本文中描述的嵌入式RFID 终端读取器,在冰箱生产线中进行了实用,基本满足了生产线RFID 系统对前端RFID 标签数据采集、处理、通信方面的要求,在功能上和稳定性方面已经能够替代现有的工业PC,因为采用了免费的开源Linux 操作系统和开源数据库Sqlite,大大降低了总体成本,对在生产线上进行RFID 读写终端的大量部署非常有利。

    本文作者创新点:通过设计使用功能强大的RFID 嵌入式读写终端,将抗干扰、信息提取、日志保存等功能在终端进行本地处理,从而大大降低了网络通讯负担和后台服务器占用,满足了生产线上的工作环境和需求。

0
相关文章