Как вычислить контрольную сумму в кадре HDLC

Я пытаюсь найти, как вычислить контрольную сумму из кадра 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, но результат не совпал...

Мне нужен ваш совет, ребята...

2 ответа

Не вдаваясь в подробности, напомню, что 7E - это не контрольная сумма, а только тег - первый байт в сообщении hdlc. У вас есть полное сообщение, которым вы можете поделиться?

Реализовать на python: после вычисления crc сначала напишите старший бит, а затем младшие биты, например

crc= "3a3b" crc_used в пакете=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    
Другие вопросы по тегам