【问题标题】:serial protocol decode and CRC calulation formula串行协议解码和CRC计算公式
【发布时间】:2021-12-29 14:37:55
【问题描述】:

也许有人可以帮助猜测字节 9 CRC (f1, 83, 97) 在这里是如何计算的:

55 0с 00 ff 00 0a 01 05 f1 0a 82 01 80 09 0c
55 0c 00 03 05 81 01 05 83 01 82 01 64 e6 0c
55 0c 00 03 00 90 01 05 97 01 82 01 64 e6 0c
55 0c 00 03 01 90 01 05 96 01 82 01 64 e6 0c
55 0c 01 03 01 90 01 05 97 01 82 01 64 e6 0c
55 0c 01 04 01 90 01 05 90 01 82 01 64 e6 0c
55 0c 02 04 02 90 01 05 90 01 82 01 64 e6 0c
55 0c 00 01 00 81 01 05 84 01 82 01 64 e6 0c
55 0c 00 02 00 81 01 05 87 01 82 01 64 e6 0c
55 0c 00 03 00 81 01 05 86 01 82 01 64 e6 0c
55 0c 00 04 00 81 01 05 81 01 82 01 64 e6 0c
55 0c 00 05 00 81 01 05 80 01 82 01 64 e6 0c
55 0c 00 06 00 81 01 05 83 01 82 01 64 e6 0c

如果我发送到设备,每一行都会执行相同的命令,只需要了解此处的字节 9 是如何计算的。

【问题讨论】:

    标签: serial-port decode


    【解决方案1】:
    def get_chksum(packet):
        chksum = 0
        for i in packet:
            chksum ^= ord(i)
        return hex(chksum)
        
    print(get_chksum('\x00\xff\x00\x0a\x01\x05')) # 0xF1
    print(get_chksum('\x00\x03\x05\x81\x01\x05')) # 0x83
    print(get_chksum('\x00\x03\x00\x90\x01\x05')) # 0x97
    

    【讨论】:

    • 这不能回答问题。你如何证明只选择整行的 6 个字节是合理的?异或校验和不是 CRC。字节序列对于 CRC 很重要。 IE。改变字节顺序,CRC改变但XOR校验和不变。
    猜你喜欢
    • 1970-01-01
    • 2013-07-17
    • 2017-09-24
    • 2020-02-28
    • 1970-01-01
    • 2017-12-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多