该协议内容遵循modbus-rtu协议,如有不足,还请各路大神指正。
1、设备链接服务器或与服务器心跳
设备主机上电:设备主机自动向服务器发送 “00” 指令,请求注册或设备与服务器通讯心跳(每10秒)。
设备编号(15字节) |
头标识符 |
数据起始符 |
命令字 |
数据长度 高位字节 |
数据长度 低位字节 |
端口数据长度(字节) |
端口编号 |
端口状态 |
端口编号 |
端口状态 |
crc16校验 高位字节 |
crc16校验 低位字节 |
结束符 |
|
383630303539303530393532303633 |
FA |
F5 |
96 |
00 |
04 |
01 |
00 |
02 |
01 |
69 |
说明:端口数据长度包括端口编号和端口状态,如有12个端口,则数据长度是24字节
端口状态:00空闲, 01可用, 02关闭, 03充电中。
设备主机:未收到“01”指令,说明服务器未连接成功,设备每隔3秒向服务器发送1次“00” 指令,直至收到服务器回复“01”指令,说明注册成功。
此处如果分不清注册连接和心跳,可分为两个协议来使用,需确认。
2、设备链接服务器后,服务器回复连接成功并发送校时时间
服务器:收到“00”指令后注册,回复“01”指令,说明注册成功并要求同步网络时间。
头标识符 |
数据起始符 |
命令字 |
数据长度高位字节 |
数据长度低位字节 |
年 |
月 |
日 |
时 |
分 |
秒 |
crc16校验高位字节 |
crc16校验低位字节 |
结束符 |
|
FA |
F5 |
96 |
01 |
22 |
08 |
01 |
18 |
06 |
23 |
69 |
说明:协议中时间年月日时分秒都是十进制下的值
3、卡信息查询
设备主机上报:用户刷卡,查询人员信息,发送“02”指令,请求查询。
设备编号(15字节) |
头标识符 |
数据起始符 |
命令字 |
数据长度 高位字节 |
数据长度 低位字节 |
芯片号1 |
芯片号2 |
芯片号3 |
芯片号4 |
crc16校验 高位字节 |
crc16校验 低位字节 |
结束符 |
|
383630303539303530393532303633 |
FA |
F5 |
96 |
02 |
01 |
0E |
FA |
36 |
69 |
说明:芯片号码由“芯片号码1”“芯片号码2”“芯片号码3”“芯片号码4”组成,即示例中芯片号为:“010EFA36”。
4、人脸信息查询
设备主机上报:用户刷脸,查询人员信息,发送“03”指令,请求查询。
设备编号(15字节) |
头标识符 |
数据起始符 |
命令字 |
数据长度 高位字节 |
数据长度 低位字节 |
人脸数据 字节长度 |
人脸信息01 |
人脸信息02 |
人脸信息03 |
人脸信息04 |
crc16校验 高位字节 |
crc16校验 低位字节 |
结束符 |
|
383630303539303530393532303633 |
FA |
F5 |
96 |
03 |
04 |
01 |
0E |
FA |
36 |
69 |
说明:人脸信息字节长度是指后面“人脸信息01”,“人脸信息02”,“人脸信息03”,.....等数据组合的字节长度。
5、设备刷卡和人脸识别后,服务器返回人员信息
服务器:收到刷卡“02”或人脸识别“03”查询人员信息后,回复“04”指令,并返回人员信息。
头标识符 |
数据起始符 |
命令字 |
数据长度高位字节 |