我试图找到如何从 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 但结果不匹配......
我需要你的建议,伙计们...
我试图找到如何从 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 但结果不匹配......
我需要你的建议,伙计们...
不打书,我记得 7E 不是校验和,只是标签 - hdlc 消息中的第一个字节。你有完整的信息可以分享吗?
在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