Я не могу вывести алгоритм CRC16 из набора данных - PullRequest
0 голосов
/ 15 апреля 2020

В разделе 2.3 вычисления CRC16 этого:

https://www.mennegat.nl/media/shop_item/Mezzo_Doc_1.1.0.pdf

Он пытается объяснить, как вычислить контрольную сумму. У меня есть рабочий пример, который вычисляет

d37ccb00526000000014000000

В качестве контрольной суммы:

0825

Вся полезная нагрузка UDP-пакета составляет

02d37ccb00526000000014000000082503

Устройство отвечает как полностью приемлемый пакет. Я просто не могу разобраться со всеми примерами проверок cr c, чтобы найти 16-битное совпадение 0825.

Мы используем следующие 16-битные проверки cr c, о которых я не думаю, в результате они выдают 0825.

https://github.com/sigurn/crc16/blob/master/crc16.go#L26 -L48

Спасибо за вашу помощь!

1 Ответ

0 голосов
/ 16 апреля 2020

Похоже, что CR C сохраняется в формате с прямым порядком байтов. Используя в качестве основы ссылку на код с начальным значением CR C = 0, код генерирует CR C 0x2508, который сохраняется как 0x08 0x25.

Существует небольшая вероятность того, что Исходное значение может привести к CR C = 0x0825, но потребуется больше данных для примера.

...