最近在做一个项目,设备发送的串口指令如下:
7E C1 02 03 55 C0 01 04 C3 01 09 A8 30 7E
7E C1 02 03 56 C0 01 04 C3 01 09 C6 98 7E
7E C1 02 03 57 C0 01 04 C3 01 09 13 07 7E
7E C1 02 03 58 C0 01 04 C3 01 09 E7 1E 7E
7E C1 02 03 59 C0 01 04 C3 01 09 32 81 7E
7E C1 02 03 5A C0 01 04 C3 01 09 5C 29 7E
7E C1 02 03 5B C0 01 04 C3 01 09 89 B6 7E
7E C1 02 03 5C C0 01 04 C3 01 09 91 71 7E
7E C1 02 03 5D C0 01 04 C3 01 09 44 EE 7E
当前可推断后两个位为校验位(即红色字体)。现在想知道该数据是如何校验的。试过了crc的所有校验方式都得不到校验位的数据。恳请哪位大牛帮忙解决下,我已经整了将近一个周了,实在没有办法了。。。求帮助,求解答。。在线等。。解决后马上给分。
------解决方案--------------------
“7E C1 02 03 55 C0 01 04 C3 01 09 A8 30 7E”
典型的HDLC曼彻斯特编码格式。7E是帧头帧尾和无数据时发送的中间符,后两个校验位(红色字体)是CCITT CRC校验。不要把7E计算在内。参照CRC-16-CCITT 多项式: 0x1021 即:X^12 + X^5 + 1
------解决方案--------------------
http://www.lammertbies.nl/comm/info/crc-calculation.html
在这个网站测试了一下 貌似也不是呢