Вычислить символ проверки блока (BCC) для последовательной связи

StackOverflow https://stackoverflow.com/questions/891664

Вопрос

Я общаюсь с устройством по последовательному каналу через класс SerialPort .NET и на основе требований спецификации стороннего устройства мне нужно вычислить "символ проверки блока".Единственная информация, которую мне сообщают, заключается в том, что это эксклюзив ИЛИ операция (XOR) и это должно быть выполнено для всех символов.

Итак, если у меня есть строка "Bob, 001", как можно вычислить BCC?

Это было полезно?

Решение

Скорее всего, это XOR, основанный на символах.Вам нужно будет получить их образцы для проверки, но большинство контрольных сумм обычно заканчиваются на 0.

Итак, для контрольной суммы XOR у вас будет пакет:

Bob,001X

где X - контрольная сумма, и, когда вы объединяете все эти символы вместе, вы, скорее всего, получите 0.

Итак, чтобы вычислить X, вы просто выделяете все символы в "Bob,001".Это в силу того факта, что N xor N всегда равно 0, для любого N.

Теперь может случиться так, что X будет состоять из двух шестнадцатеричных символов, если все, что вам разрешено иметь, - это буквенно-цифровые символы.Вот почему вам нужны либо образцы данных (чтобы мы могли их обработать), либо надлежащая спецификация (которая должна быть предоставлена производителем устройства).

Что является о каком самом устройстве вы говорите?Возможно, в Интернете есть информация, которая показывает, как это сделать.

На основе обновления:

Это устройство Amadeus Hospitality PMS.Нет, все, что они говорят, это то, что это должно выполняться для всех символов.исключая STX и ETX.

Вам нужно будет получить некоторые образцы данных для подтверждения, но, скорее всего, это будет поток данных, что-то вроде:

        Running
Data     ChkSum
======  =======
STX 02
B   42     42
o   6f     2d
b   62     4f
,   2c     63
0   30     53
0   30     63
1   31     52
4   52     00
ETX 03

Позиция контрольной суммы может меняться, и, действительно, ее вычисление тоже может отличаться, хотя это гораздо менее вероятно.Я не думаю, что многое другое можно сделать без выборочных данных или дополнительной информации от поставщика.Беглый поиск в Интернете не выявил никаких технических подробностей.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top