一、通信基础
串口通信模式:波特率9600,1位起始位,8位数据位,无校验位,1位停止位
锁控板所有的设置参数都有断电记忆功能参数修改后断电再次上电无需再次修改
需要本协议上位机的联系博主:https://shop332483551.taobao.com/
二、基础通信协议框架
标准完整帧结构8字节
帧头 2字节 | 板地址 | 命令 | 数据 n字节 | 校验 | 帧尾 1字节 |
0x4b 0x4b | 0x01 | xx | xx | xx | 0x0d |
帧头:2字节固定为0x4b 0x4b
板地址:锁控板地址编号0~99
命令:此帧数据的功能
数据:不同的命令传不同的数据
校验:采用BCC异或校验,从帧头到校验之前的数据进行异或校验
帧尾1字节,固件为0x0d
多字节数据传输时,低字节在前,高字节在后即先发低字节。
三、通信数据定义
3.1开锁指令0x01
帧头 2字节 | 板地址 | 命令 | 数据 1字节 | 校验 | 帧尾 1字节 |
0x4b4b | 0x01 | 0x01 | Data1 | 0x0d |
Data1:锁地址 1~32
例打开1号柜2号锁发送:4B 4B 01 01 02 02 0D
锁控板返回
帧头 2字节 | 板地址 | 命令 | 数据 2字节 | 校验 | 帧尾 1字节 |
0x4b4b | 01 | 0x81 | Data1~data2 | 0x0d |
Data1:锁地址1~32
Data2:锁状态:0打开成功,1打开失败,2锁线圈短路故障
3.2打开全部锁0x02
帧头 2字节 | 板地址 | 命令 | 数据 1字节 | 校验 | 帧尾 1字节 |
0x4b4b | 0x01 | 0x02 | Data1 | 0x0d |
Data1:固定为0xff
例: 4B 4B 01 02 FF FC 0D
控板返回
帧头 2字节 | 板地址 | 命令 | 数据 2字节 | 校验 | 帧尾 1字节 |
0x4b4b | 01 | 0x82 | Data1~data4 | 0x0d |
Data1:1~8通道是否开锁,0开锁成功,1开锁失败
Data1:9~16通道是否开锁,0开锁成功,1开锁失败
Data1:17~24通道是否开锁,0开锁成功,1开锁失败
Data1:25~32通道是否开锁,0开锁成功,1开锁失败,不足32个通道补0
例如第1和第16路打开失败:4B 4B 01 82 01 80 00 00 02 0D
3.2调光指令0x03
帧头 2字节 | 板地址 | 命令 | 数据 1字节 | 校验 | 帧尾 1字节 |
0x4b4b | 0x01 | 0x03 | Data1 | 0x0d |
Data1: 0~100调光,0关灯, 例4B 4B 01 03 01 03 0D:
锁控板返回
帧头 2字节 | 板地址 | 命令 | 数据 1字节 | 校验 | 帧尾 1字节 |
0x4b4b | 01 | 0x83 | Data1 | 0x0d |
Data1:0x0调光灯成功,1调光失败,2灯板短路
例:4B 4B 01 83 00 82 0D
3.4读锁状态0x04
帧头 2字节 | 板地址 | 命令 | 数据 1字节 | 校验 | 帧尾 1字节 |
0x4b4b | 0x01 | 0x04 | Data1 | 0x0d |
Data1:200读取全部锁状态,1~32读取单个通道锁状态,为1读取第一通道
例:4B 4B 01 04 C8 CD 0D
读取全部锁状态时回复
帧头 2字节 | 板地址 | 命令 | 数据 2字节 | 校验 | 帧尾 1字节 |
0x4b4b | 01 | 0x84 | Data1~data4 | 0x0d |
Data1:1~8通道是否打开,0锁打开,1开锁关闭
Data1:9~16通道是否打开,0锁打开,1开锁关闭
Data1:17~24通道是否打开,0锁打开,1开锁关闭
Data1:25~32通道是否打开,0锁打开,1开锁关闭,不足32个通道补0
例如第1和第16路打开失败:4B 4B 01 84 01 80 00 00 04 0D
读取单个通道锁状态时返回
帧头 2字节 | 板地址 | 命令 | 数据 2字节 | 校验 | 帧尾 1字节 |
0x4b4b | 01 | 0x93 | Data1~data2 | 0x0d |
Data1:读取的通道号
Data2:0锁打开,1开锁关闭
例:4B 4B 01 93 01 00 93 0D
3.5设置是否主动反馈0x05
帧头 2字节 | 板地址 | 命令 | 数据 1字节 | 校验 | 帧尾 1字节 |
0x4b4b | 0x01 | 0x05 | Data1 | 0x0d |
Data1:0不主动反馈,1主动反馈,2查询是否主动反馈 例:4B 4B 01 05 00 04 0D
例4B 4B 01 05 01 05 0D
锁控板返回
帧头 2字节 | 板地址 | 命令 | 数据 1字节 | 校验 | 帧尾 1字节 |
0x4b4b | 01 | 0x85 | Data1 | 0x0d |
Data1:0不主动反馈,1主动反馈
例4B 4B 01 85 01 85 0D
3.6设置锁状态是否取反0x06
帧头 2字节 | 板地址 | 命令 | 数据 1字节 | 校验 | 帧尾 1字节 |
0x4b4b | 0x01 | 0x06 | Data1 | 0x0d |
Data1:0不取反关门通,1取反开门通 ,2查询锁状态是否取反
例:4B 4B 01 06 00 07 0D
锁控板返回
帧头 2字节 | 板地址 | 命令 | 数据 1字节 | 校验 | 帧尾 1字节 |
0x4b4b | 01 | 0x86 | Data1 | 0x0d |
Data1:0不取反,1锁取反
例:4B 4B 01 86 00 87 0D
3.7设置开锁导通时间0x07
帧头 2字节 | 板地址 | 命令 | 数据 1字节 | 校验 | 帧尾 1字节 |
0x4b4b | 0x01 | 0x07 | Data1 | 0x0d |
Data1:开锁导通时间单位100ms范围1~255也就是100ms~25500ms
例4B 4B 01 07 02 04 0D
锁控板返回
帧头 2字节 | 板地址 | 命令 | 数据 1字节 | 校验 | 帧尾 1字节 |
0x4b4b | 01 | 0x87 | Data1 | 0x0d |
Data1:开锁导通时间单位100ms范围1~255也就是100ms~25500ms
例:4B 4B 01 87 02 84 0D
3.8主动反馈锁状态0x8f
锁控板返回
帧头 2字节 | 板地址 | 命令 | 数据 2字节 | 校验 | 帧尾 1字节 |
0x4b4b | 01 | 0x8f | Data1~data2 | 0x0d |
Data1:锁地址1~32
Data2:锁状态:0锁打开,1关闭
例:4B 4B 01 8F 01 01 8E 0D