(一)协议概述
读卡器负责接收附近定位电子标签的消息,并及时上报给电脑客户端(客户自己的平台软件)。客户端接收到各读卡器上报的标签信息,根据电子标签距各天线的距离,计算出标签的实际位置。
客户端在网络读卡器设备上进行登记后,读卡器会主动向客户端上报接收到的标签信息,期间客户端需要定时向读卡器发心跳指令,以保持登记有效。具体操作为,客户端需要先发送登记请求(CMD_LOGIN_REQ)给读卡器,读卡器回登记应答(CMD_LOGIN_ACK)进行确认。登记完成后,客户端需要定时(建议10秒)向读卡器发心跳指令,读卡器回心跳确认,读卡器超过1分钟收不到心跳消息,则认为登记失效。登记有效期间,读卡器读到的任何标签信息都会即时上报给相关客户端。
(二)协议描述
1、网络协议
采用TCP/IP协议簇中的UDP协议作为提供服务的基础协议。
UDP协议服务器端口号暂定为4099。
2、网络传输顺序
双字节、四字节或多字节内容,则先发送高字节后发送低字节。
发送一个字节内容时,先发送高位比特,后发送低位比特。
3、消息格式
信息单元 | 长度(字节) | 备注 |
协议鉴别语 | 4 | 0x44535246(ASCII “DSRF”) |
协议版本号 | 1 | BIT7-3:主版本号 BIT2-0:子版本号 (当前版本“0.2” 0x02) |
消息ID | 1 | |
CRC16位校验 | 2 | 16位CRC校验码(包括内容长度) |
消息内容长度 | 2 | |
消息内容 |
4、消息ID定义
消息名称 | 方向 | 值 |
登录请求 | 应用软件->读卡器 | 1 |
登录确认 | 读卡器->应用软件 | 2 |
发送电子标签信息 | 读卡器->应用软件 | 3 |
发送心跳请求 | 应用软件->读卡器 | 4 |
心跳请求确认 | 读卡器->应用软件 | 5 |
呼叫标签请求 | 应用软件->读卡器 | 6 |
呼叫标签确认 | 读卡器->应用软件 | 7 |
呼叫标签拒绝 | 读卡器->应用软件 | 8 |
发送短信请求 | 应用软件->读卡器 | 9 |
发送短信确认 | 读卡器->应用软件 | 10 |
发送短信拒绝 | 读卡器->应用软件 | 11 |
批量呼叫标签请求 | 应用软件->读卡器 | 12 |
批量呼叫标签确认 | 读卡器->应用软件 | 13 |
批量呼叫标签拒绝 | 读卡器->应用软件 | 14 |
(三)消息交互流程
(四)消息内容描述
1、登录请求(0x01)
说明:
用户应用软件发送登录请求给读卡器
消息内容:
长度(字节) | 内容 |
16 | 用户名(字符串) |
16 | 密码(字符串) |
注1:
读卡器的缺省用户名为”admin”、缺省密码为“888888”。
注2:
字符串为以字符‘\0’(0x00)作为截止符的一串字符。
消息示例:
44 53 52 46 02 01 82 b6 00 20 61 64 6d 69 6e 00 00 00 00 00 00 00 00 00 00 00 38 38 38 38 38 38 00 00 00 00 00 00 00 00 00 00
2、登录确认(0x02)
说明:
读卡器确认应用软件的登录请求
消息内容:
长度(字节) | 内容 |
2 | 登录结果(0成功其他值失败) |
消息示例:
44 53 52 46 02 02E4 A1 00 02 00 00
3、电子标签数据(0x03)
说明:
读卡器发送读取的电子标签数据给应用软件
消息内容:
长度(字节) | 内容 |
1 | 分站地址码 |
4 | 电子标签卡号 |
1 | 电子标签属性 |
0~7 | 扩展数据字节 |
1 | 无线信号场强(dBm) |
分站地址码:1字节,网络读卡器自己和接入的无线读卡器的编码。如果是网络读卡器本身读到的标签,则分站号为0。如果是扩展的无线读卡器读到的标签,则分站号为无线读卡器的地址码+1(1~16)。
电子标签卡号:4字节,读到的电子标签的ID码。
位0 欠压标志。1:欠压 0:正常
位1-3 标签类型。0:普通标签 1:声光标签 6:标签模块
位4 保留。
位5-7 扩展数据长度。必要时,标签可以上传一些扩展数据(如湿度、湿度等数据),扩展数据区紧跟属性字节,长度可以为0—7个字节。
扩展数据字节: 0—7个字节,扩展数据的长度在属性字节中说明,可以携带一些标签特有的数据,如温度、温度等数据。最多可以有7个字节,也可以没有。
无线信号场强:1字节,读到电子标签信号时测量到的无线场强,根据场强值可以计算得到标签的距离。范围(-128dBm~0dBm)
该字节值越大,实际的无线信号强度越大,则该标签离读卡器越近。
消息示例:
消息示例: 44 53 52 46 02 03 8E 77 00 07 01 00 1B 81 7A 00 AB
4、握手请求(0x04)
说明:
应用软件为保持登录状态,周期性的向读卡器发送握手请求消息。
消息内容: 无
消息示例:
44 53 52 46 02 04 b0 01 00 00
5、握手确认(0x05)
说明:
读卡器确认应用软件的握手请求消息
消息体中包含网络读卡器自身连接的定位天线(0号分站)的设备状态,和通过无线扩展的最多16个无线读卡器(1~16号分站)的设备状态,方便应用软件对设备进行管理。
消息内容:
长度(字节) | 内容 |
1 | 分站数量(固定值:17 [0x11]) |
1 | 0号分站状态(设备本身) |
16 | 1-16号分站状态(扩展的最多16个无线读卡器) |
状态定义:
0:正常
1:定位天线故障
2:读卡器故障
3:读卡器拥塞(标签太多,无法及时发出导致数据丢失)
消息示例:
44 53 52 46 02 05 1E 2A 00 12 11 01 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02
6、呼叫标签请求(0x06)
说明:
当应用软件需要指定的标签发光发声光时,需发送声光提醒请求消息。
消息内容:
长度(字节) | 内容 |
1 | 分站地址码 |
4 | 电子标签卡号 |
1 | 提醒有效时长(秒) |
1 | 提醒模式 |
提醒有效时长:
发送提醒指令后,在多长的时间内,提醒操作一直保持有效。(提醒操作失效后,标签仍会自主提醒10秒,直至超时。)
提醒模式:
呼叫模式 | 说明 |
0 | 仅绿灯闪烁 |
1 | 绿灯闪烁+蜂鸣器响 |
2 | 仅红灯闪烁 |
3 | 红灯闪烁+蜂鸣器响 |
4 | 仅红绿交替闪烁 |
5 | 红绿交替闪烁+蜂鸣器响 |
255 | 停止提醒 |
消息示例:44 53 52 46 02 06 2C F5 00 07 00 00 1D 0E 54 3C 00
7、呼叫标签确认(0x07)
说明:
读卡器确认应用软件的声光提醒请求消息。应用软件如果发送了“声光提醒请求”消息,但没有收到“声光提醒确认”,需要重新发送请求消息。
消息内容:
长度(字节) | 内容 |
1 | 分站地址码 |
4 | 电子标签卡号 |
消息示例:44 53 52 46 02 07 CC 8E 00 05 00 00 1D 0E 54
8、呼叫标签拒绝(0x08)
说明:
读卡器无法响应应用软件的呼叫标签请求消息,比如分站不在线。
消息内容:
长度(字节) | 内容 |
1 | 分站地址码 |
4 | 电子标签卡号 |
1 | 失败原因值 |
9、发送短信请求(0x09)
说明:
应用软件给指定的标签发送短信(仅短信标签有效)。
消息内容:
长度(字节) | 内容 |
1 | 分站地址码 |
4 | 标签ID |
2 | 短信编号(0~29999) |
1 | 年(实际年份-2020) |
1 | 月 |
1 | 日 |
1 | 时 |
1 | 分 |
1 | 秒 |
1 | 短信内容长度(0~110) |
110 | 短信内容 |
10、发送短信确认(0x0A)
说明:
读卡器确认收到了应用软件的短信消息。
消息内容:
长度(字节) | 内容 |
1 | 分站地址码 |
4 | 标签ID |
11、发送短信拒绝(0x0B)
说明:
读卡器接收到应用软件的短信消息,但无法发送,比如分站不在线。
消息内容:
长度(字节) | 内容 |
1 | 分站地址码 |
4 | 标签ID |
1 | 失败原因值 |
12、批量呼叫标签请求(0x0C)
说明:
当应用软件需要同时呼叫一批标签时,需发送批量呼叫标签请求消息。一条消息支持最多呼叫80个标签。
消息内容:
长度(字节) | 内容 |
1 | 分站地址码 |
1 | 提醒有效时长(秒) |
1 | 标签数量(1~80) |
4 | 标签1卡号 |
1 | 标签1提醒模式 |
4 | 标签2卡号 |
1 | 标签2提醒模式 |
。。。。。。 | |
4 | 标签N卡号 |
1 | 标签N提醒模式 |
提醒有效时长:
发送提醒指令后,在多长的时间内,提醒操作一直保持有效。(提醒操作失效后,标签仍会自主提醒10秒,直至超时。)
呼叫模式:
一般定义如下(各声光标签定义可能略有不同)
呼叫模式 | 说明 |
0 | 仅绿灯闪烁 |
1 | 绿灯闪烁+蜂鸣器响 |
2 | 仅红灯闪烁 |
3 | 红灯闪烁+蜂鸣器响 |
4 | 仅红绿交替闪烁 |
5 | 红绿交替闪烁+蜂鸣器响 |
255 | 停止提醒 |
消息示例:44 53 52 46 02 0C 2B2A 00 12 01 3C 03 00 1D 0E 54 00 00 1D 0E 55 00 00 1D 0E 56 00
13、批量呼叫标签确认(0x0D)
说明:
读卡器确认应用软件的批量呼叫标签请求消息。应用软件如果发送了“批量呼叫标签请求”消息,但没有收到“批量呼叫标签确认”,需要重新发送请求消息。
消息内容:消息内容:
长度(字节) | 内容 |
1 | 分站地址码 |
消息示例:44 53 52 46 02 0D90B1 00 01 01
14、批量呼叫标签拒绝(0x0E)
说明:
读卡器无法响应应用软件的批量呼叫标签请求消息,比如分站不在线。
消息内容:
长度(字节) | 内容 |
1 | 分站地址码 |
1 | 失败原因值 |