1 、串口通讯参数

波特率:9600(bit/s)
数据位:8位
奇偶校验:无
停止位:1
数据流控:无

2、基本帧格式说明

下标 字段 长度(byte) 说明
00 帧头 2 固定 0xAA 0x55
02 数据长度 N 除去帧头和CRC字段的长度
03 命令 1 功能的命令码CMD
04 目标ID 1 接收端的ID,网关ID为0x15
05 源ID 1 发送端ID,该类型从机的ID
06 从机类型 1 设备类型,面板01,继电器02
07 数据区 data 有效数据
CRC 2 CRC16校验码,异或码0x1021
  1. //函数返回:CRC计算值,无符号整数
  2. //参数poly:异或码取0x1021
  3. //参数data:要计算的数据缓冲区
  4. //参数start:数据缓冲区开始位置
  5. //参数length:要计算的数据个数
  6. unsigned short crc16(unsigned char *data, int start, int length, unsigned short poly)
  7. {
  8. unsigned short crc = 0; // crc 默认取0
  9. while (length-- > 0) // 循环length次
  10. {
  11. unsigned char bt = data[start++]; // 当前字节存于bt
  12. for (int i = 0; i < 8; i++) // 每个字节循环移位8次
  13. {
  14. unsigned char b1 = ((crc & 0x8000) != 0); // 求crc最高第16位是0还是1,结果存b1
  15. unsigned char b2 = ((bt & 0x80) != 0); // 求bt最高第8位是0还是1,结果存b2
  16. if (b1 != b2) // b1 和 b2 相等
  17. crc = (unsigned short)((crc << 1) ^ poly); // crc左移一们之后再和poly异或,结果存crc
  18. else // b1 和 b2 不相等
  19. crc = crc << 1; // crc 左移一位
  20. bt = bt << 1; // bt 左移一位
  21. }
  22. }
  23. return crc;
  24. }

3、具体命令说明

3.1 按键动作返回

CMD:0X13
方向:面板—>网关主机

下标 字段 长度(byte) 说明
00 帧头 2 固定 0xAA 0x55
02 数据长度 N 除去帧头和CRC字段的长度
03 命令 0x13 功能的命令码CMD
04 目标ID 1 接收端的ID,网关ID为0x15
05 源ID 1 发送端ID,该类型从机的ID
06 从机类型 1 设备类型,面板01,继电器02
07 数据区 data 有效数据
CRC 2 CRC16校验码,异或码0x1021

有效数据data

下标 字段 长度(byte) 说明
07 按键号 1 1,2,3,4,5,6
08 事件类型 1 0x21—-短按弹起,上次状态1
0x22—-短按弹起,上次状态2
0x32—-长按按下
0x41—-长按弹起

指令示例参考
面板ID=02,按键号01,网关ID=0X15
AA 55 07 13 15 02 01 01 01 21 02 41 ——- 短按弹起,上次状态1
AA 55 07 13 15 02 01 01 01 22 61 71 ——- 短按弹起,上次状态2
AA 55 07 13 15 02 01 01 01 32 50 63 ——-长按按下
AA 55 07 13 15 02 01 01 01 41 A4 2D ——-长按弹起

3.2 更新面板背光

CMD:0X09
方向:网关主机—>面板
背光输出有2种,分为白灯和黄灯
备注:当APP更新继电器,调光回路时,主机要主动更新按键背光量示。

下标 字段 长度(byte) 说明
00 帧头 2 固定 0xAA 0x55
02 数据长度 N 除去帧头和CRC字段的长度
03 命令 0x09 功能的命令码CMD
04 目标ID 1 接收端的ID,网关ID为0x15
05 源ID 1 发送端ID,该类型从机的ID
06 从机类型 1 设备类型,面板01,继电器02
07 数据区 data 有效数据
CRC 2 CRC16校验码,异或码0x1021

有效数据data

下标 字段 长度(byte) 说明
07 按键数 1 要更改的按键总数
08 按键号 1 1,2,3,4
09 背光显示 1 1黄,2白,其它值无效
0A 按键号 1 1,2,3,4
0B 背光显示 1 1黄,2白,其它值无效
。。。

应用示例参考
网关ID=0X15,面板ID=0X02

1号键黄灯
AA 55 07 09 02 15 01 01 01 01 1E 10

1号键白灯
AA 55 07 09 02 15 01 01 01 02 7D 20

1234号键黄
AA 55 0D 09 02 15 01 04 01 01 02 01 03 01 04 01 0B EA

1234号键白
AA 55 0D 09 02 15 01 04 01 02 02 02 03 02 04 02 68 B5

3.3 主机主动调整按键状态

CMD:0X12
方向:网关主机—>面板
state=02
state=01
备注:当APP更新继电器,调光回路时,主机要主动更新按键状态。以确定按键下次的动作。

下标 字段 长度(byte) 说明
00 帧头 2 固定 0xAA 0x55
02 数据长度 N 除去帧头和CRC字段的长度
03 命令 0x12 功能的命令码CMD
04 目标ID 1 接收端的ID,网关ID为0x15
05 源ID 1 发送端ID,该类型从机的ID
06 从机类型 1 设备类型,面板01,继电器02
07 数据区 data 有效数据
CRC 2 CRC16校验码,异或码0x1021

有效数据data

下标 字段 长度(byte) 说明
07 按键数 1 要更改的按键总数
08 按键号 1 1,2,3,4
09 按键状态 1 1,2,其它值无效
0A 按键号 1 1,2,3,4
0B 按键状态 1 1,2,其它值无效
。。。

应用示例参考
网关ID=0X15,面板ID=0X02

1号键状态1
AA 55 07 12 02 15 01 01 01 01 4A 6C

1号键状态2
AA 55 07 12 02 15 01 01 01 02 29 5C

1234号键状态1
AA 55 0D 12 02 15 01 04 01 01 02 01 03 01 04 01 40 38

1234号键状态2
AA 55 0D 12 02 15 01 04 01 02 02 02 03 02 04 02 23 67

4 按键标号

1 3 5
2 4 6

image.png