Скорее всего, это основанный на символах XOR. Вы должны будете получить образцы из них, чтобы проверить, но большинство контрольных сумм, как правило, в конечном итоге на 0.
Таким образом, для XOR контрольной суммы, вы бы пакет:
Bob,001X
, где Х представляет собой контрольную сумму и , когда вы XOR все эти символы вместе, вы, скорее всего, получите 0.
Итак, чтобы обработать X, вы просто XOR все символы в «Bob, 001». Это в силу того факта, что N xor N всегда 0, для любого N.
Теперь может случиться, что X будет состоять из двух шестнадцатеричных символов, если вам разрешено иметь только буквенно-цифровые символы. Вот почему вам нужны образцы данных (так что мы можем это исправить) или надлежащую спецификацию (которую должен предоставить производитель устройства).
является Фактическое устройство, на которое вы имеете в виду? Возможно, в Интернете есть информация о том, как это сделать.
на основе обновления:
Это Hospitality PMS устройство Amadeus. Не все они говорят, что это должно выполняться по всем символам. исключая 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
Положение контрольной суммы может меняться и, на самом деле, это вычисление может меняться слишком хотя это гораздо менее вероятно. Я не думаю, что гораздо больше можно сделать без выборочных данных или дополнительной информации от поставщика. Беглый поиск в Интернете не выявил технических деталей.
Это устройство PMS Amadeus Hospitality. Не все они говорят, что это должно выполняться по всем символам. исключая STX и ETX. – GONeale
У меня есть функция, которую я написал, и она вычисляет -что-то, просто не уверен, что это правильный BCC прямо сейчас. Вернусь к вам, спасибо. – GONeale