0

我试图找到如何从 hdlc 框架计算校验和。我尝试使用示例:7E A0 0A 00 02 00 23 21 93 [18 71] - 校验和 7E 我尝试了这个计算器:https ://www.scadacore.com/tools/programming-calculators/online-checksum-calculator/

我把这部分框架放在那里:A0 0A 00 02 00 23 21 93 但结果不匹配......

我需要你的建议,伙计们...

4

2 回答 2

1

不打书,我记得 7E 不是校验和,只是标签 - hdlc 消息中的第一个字节。你有完整的信息可以分享吗?

于 2019-11-10T07:36:25.403 回答
0

在python上实现:计算crc后,先写高位,然后写低位,例如

crc= "3a3b" crc_used in packet=3b3a

你可以试试这个:

import crcmod   #pip3 install crcmod
import sys
def calculate_crc(packet):
    packet=''.join(packet.split(' '))
    crc16 = crcmod.mkCrcFun(0x11021, rev=True, initCrc=0x0000, xorOut=0xFFFF)
    fcs=str(hex(crc16(bytes.fromhex(packet))))
    crc_f=str(fcs[4:6])+str(fcs[2:4])
    if len(crc_f)<4:
        diff=4-len(crc_f)
        crc_f= "0"*diff + crc_f
    return str(crc_f).upper()
print(calculate_crc("A0 0A 00 02 00 23 21 93"))

output: 1871    
于 2022-02-21T11:54:34.613 回答