Я использую контроллер подвеса simpleBG C от Basecam electronics. Контроллер имеет последовательный API для связи, который требует вычисления контрольной суммы crc16 для команд, отправленных контроллеру (https://www.basecamelectronics.com/file/SimpleBGC_2_6_Serial_Protocol_Specification.pdf) (стр.3)
Я хочу отправить команду сброса в контроллер, который имеет следующий формат:
Заголовок: {начальный символ: '$', идентификатор команды: '114', размер полезной нагрузки: '3', контрольная сумма заголовка: '117'}
Полезная нагрузка: {3,0,0} (3 байта, соответствующие параметрам сброса и времени сброса)
контрольная сумма crc16:? (с использованием полинома 0x8005, рассчитанного для всех байтов , кроме начального символа )
Шестнадцатеричное представление моей команды: 0x24720375030000, и мне нужно найти контрольную сумму crc16 для 0x720375030000. Я использовал разные калькуляторы cr c, но контроллер не отвечает на команду, и я предполагаю, что контрольная сумма cr c неверна. Чтобы найти правильную контрольную сумму crc16, я отправил все возможные комбинации контрольной суммы crc16 и обнаружил, что контроллер отвечает, когда контрольная сумма равна «7b25». поэтому правильная команда в шестнадцатеричном формате: «24 720375030000 7b25». Но эта контрольная сумма 7b25 не соответствует полиному 0x8005. Как я могу найти правильную функцию вычисления полинома или crc16?