Я пытаюсь написать код для связи со старым устройством через последовательный порт, который использует протокол Siemens 3964r. Это включает в себя контрольную сумму, или, точнее, BCC (символ проверки блока) в конце передачи. Один символ после ETX. Документы определяют BCC следующим образом:
Благодаря протоколу передачи 3964R безопасность данных повышается за счет отправки дополнительного блока.
контрольный символ (BCC = контрольный символ блока).
Символом проверки блока является четная продольная четность (логическая операция EXOR для всех данных
байт) отправленного или полученного блока. Его вычисление начинается с первого байта пользовательских данных (первый
байт кадра) после установления соединения и заканчивается после символа DLE ETX
при прекращении соединения.
Вот некоторые примеры данных в шестнадцатеричном формате.
53 54 41 54 55 53 10 03 07
07 - это BCC в этом.
4d 45 41 53 4d 50 54 45 53 54 41 4e 41 50 52 47 30 30 30 55 78 30 31 31 2e 30 30 5a 30 31 31 31 30 10 03 61
61 - это BCC в этом.
В целом я знаю, как выполнять операции XOR, но я не смог выяснить какую-либо комбинацию вещей, которая дает мне надлежащий BCC. Я думаю, что я неправильно понимаю определение.
Мой предпочтительный язык для этого - javascript, так как он предназначен для электронного приложения node.js. Я могу прочитать буфер и получить шестнадцатеричные значения. И я могу построить сообщения propoer обратно. Но это не будет работать правильно, пока я не смогу включить правильный BCC. Так что просто ищу кого-то умнее меня, который точно знает, как создать действительный BCC.
спасибо!