Вычислить символ проверки блока (BCC) для последовательной связи - PullRequest
4 голосов
/ 21 мая 2009

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

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

1 Ответ

3 голосов
/ 21 мая 2009

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

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

Bob,001X

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

Итак, чтобы выработать X, вы просто XOR для всех символов в "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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...