【发布时间】:2020-08-04 08:24:49
【问题描述】:
我正在使用 Basecam Electronics 的 simpleBGC 云台控制器。控制器有一个用于通信的串行 API,需要计算发送到控制器的命令的 crc16 校验和(https://www.basecamelectronics.com/file/SimpleBGC_2_6_Serial_Protocol_Specification.pdf)(第 3 页)
我想向控制器发送复位命令,格式如下:
标头:{start char:'$',命令 id:'114',有效负载大小:'3',标头校验和:'117'}
Payload:{3,0,0}(3 个字节对应重置选项和重置时间)
crc16 校验和:? (使用多项式 0x8005 计算所有字节除了起始字符strong>)
我的命令的十六进制表示是:0x24720375030000,我需要找到 0x720375030000 的 crc16 校验和。我使用了不同的 crc 计算器,但控制器没有响应命令,我认为 crc 校验和不正确。 为了找到正确的 crc16 校验和,我发送了所有可能的 crc16 校验和组合,并发现控制器在校验和为“7b25”时做出响应。 所以十六进制的正确命令是:“24 720375030000 7b25”。 但是这个校验和 7b25 不对应多项式 0x8005。 如何找到正确的多项式或 crc16 计算函数?
【问题讨论】:
-
Basecam 电子串行 API 手册链接:basecamelectronics.com/serialapi