我有一个数字时钟系统,其中主时钟传输数据包,从时钟接收数据包并解码以在其上显示。在数据结构中,第一个字节是常量 0x7e,第二个字节是小时,第三个字节是分钟,第四个字节是秒,第五个字节始终是 0x00。我不知道最后两个字节。我希望这些字节代表 CRC(我不确定)并且不知道它是如何计算的。通讯方式为串行射频信号。这里还有一些正在传输的数据包。
我尝试使用 Arduino 和 XBee 发射器传输具有相同值的相同结构,然后从时钟响应并工作正常。如果我更改这 7 个字节中的任何值,从时钟不会响应。
0x7e 0x00 0x00 0x00 0x00 0x0c 0x0a
0x7e 0x00 0x00 0x01 0x00 0x0d 0x9a
0x7e 0x00 0x00 0x02 0x00 0x0d 0x6a
0x7e 0x00 0x00 0x03 0x00 0x0c 0xfa
0x7e 0x00 0x00 0x04 0x00 0x0e 0xca
0x7e 0x00 0x00 0x05 0x00 0x0f 0x5a
0x7e 0x00 0x00 0x06 0x00 0x0f 0xaa
0x7e 0x00 0x00 0x07 0x00 0x0e 0x3a
0x7e 0x00 0x00 0x08 0x00 0x0b 0xca
0x7e 0x00 0x00 0x09 0x00 0x0a 0x5a
0x7e 0x00 0x00 0x10 0x00 0x01 0xca
0x7e 0x00 0x00 0x11 0x00 0x00 0x5a
0x7e 0x00 0x00 0x12 0x00 0x00 0xaa
0x7e 0x00 0x00 0x13 0x00 0x01 0x3a
我使用在线 CRC 计算器来查找最后两个字节的值,但对我来说没有任何作用。
这是标准的 16 位 CRC:
width=16 poly=0x8005 init=0xffff refin=true refout=true xorout=0x0000 check=0x4b37 residue=0x0000 name="CRC-16/MODBUS"
在 CRC 计算中包含初始
0x7e
时。