UHF电子标签读写器UHFREADER18 用户手册v2.0
一、通讯接口规格
读写器通过RS232或者RS485接口与上位机串行通讯,按上位机的命令要求完成相应操作。串行通讯接口的数据帧为一个起始位,8个数据位,一个停止位,无奇偶校验位,缺省波特率57600。在串行通讯过程中,每个字节的最低有效位最先传输。
二、协议描述
通讯过程由上位机发送命令及参数给读写器,然后读写器将命令执行结果状态和数据返回给上位机。读写器接收一条命令执行一条命令,只有在读写器执行完一条命令后,才能接收下一条命令。在读写器执行命令期间,如果向读写器发送命令,命令将丢失。
上位机发送过程如下:
上位机 |
数据传递方向 |
读写器 |
命令数据块 |
→ |
|
说明:上位机发送的数据流中,每两个相邻字节之间的发送时间间隔必须小于15ms。在上位机的命令数据流发送过程中,如果相邻字符间隔大于15ms,则之前接收到的数据均被当作无效数据丢弃,然后从下一个字节开始,重新接收。
读写器接收到正确命令后,在不超过询查时间的范围内 (不包括数据发送过程,仅仅是读写器执行命令的时间),会返回给读写器一个响应。
读写器发送过程如下:
读写器 |
数据传递方向 |
上位机 |
响应数据块 |
→ |
|
说明:读写器发送响应数据期间,相邻字节之间的发送时间间隔小于15ms
完整的一次通讯过程是:上位机发送命令给读写器,并等待读写器返回响应;读写器接收命令后,开始执行命令,然后返回响应;之后上位机接收读写器的响应。一次通讯结束。
三、数据的格式
1. 上位机命令数据块
Len |
Adr |
Cmd |
Data[] |
LSB-CRC16 |
MSB-CRC16 |
数据各部分说明如下:
|
长度(字节) |
说明 |
Len |
1 |
命令数据块的长度,但不包括Len本身。即数据块的长度等于4加Data[]的长度。Len允许的最大值为96,最小值为4。 |
Adr |
1 |
读写器地址。地址范围:0x00~0xFE,0xFF为广播地址,读写器只响应和自身地址相同及地址为0xFF的命令。读写器出厂时地址为0x00。 |
Cmd |
1 |
命令代码。 |
Data[] |
不定 |
参数域。在实际命令中,可以不存在。 |
LSB-CRC16 |
1 |
CRC16低字节。CRC16是从Len到Data[]的CRC16值 |
MSB-CRC16 |
1 |
CRC16高字节。 |
2. 读写器响应数据块
Len |
Adr |
reCmd |
Status |
Data[] |
LSB-CRC16 |
MSB-CRC16 |
数据各部分说明如下:
|
长度(字节) |
说明 |
Len |
1 |
响应数据块的长度,但不包括Len本身。即数据块的长度等于5加Data[]的长度。 |
Adr |
1 |
读写器地址。 |
reCmd |
1 |
指示该响应数据块是哪个命令的应答。如果是对不可识别的命令的应答,则reCmd为0x00。 |
Status |
1 |
命令执行结果状态值。 |
Data[] |
不定 |
数据域,可以不存在。 |
LSB-CRC16 |
1 |
CRC16低字节。CRC16是从Len到Data[]的CRC16值。 |
MSB-CRC16 |
1 |
CRC16高字节。 |
CRC16的C语言算法:
#define PRESET_VALUE 0xFFFF
#define POLYNOMIAL 0x8408
unsigned int uiCrc16Cal(unsigned char const * pucY, unsigned char ucX)
{
unsigned char ucI,ucJ;
unsigned short int uiCrcValue = PRESET_VALUE;
for(ucI = 0; ucI < ucX; ucI++)
{
uiCrcValue = uiCrcValue ^ *(pucY + ucI);
for(ucJ = 0; ucJ < 8; ucJ++)
{
if(uiCrcValue & 0x0001)
本文来源于 广州网源电子设备有限公司 http://www.WYRFID.COM 主营:门禁 梯控 一卡通 RFID读卡器 远距离读卡器
- 上一篇:======关于开具增值税专用发票的说明====== 2018/3/10
- 下一篇:【视频】M29D如何发卡删除卡及恢愎 2017/4/25