|
Вопрос # 6 265/ вопрос закрыт / |
|
Доброго времени суток, уважаемые эксперты!
не могу разобраться как считается контрольная сумма. Вот что написано в даташите:
"Контрольная сумма подсчитывается как двоичная сумма всех байт команды от 1
до контрольной суммы без учета переполнения. Байт контрольной суммы представляет-
ся как ASCII символы шестнадцатиричного представления контрольной суммы.
Например: при двоичной сумме всех байт команды равной 10110101 (2ичный) ее шест-
надцатеричное представление будет равно В5 (16ичный) и код СС в контрольной сумме будет ра-
вен 42 (16ичный); 35 (16ичный)."
Есть пример программы, который считает такие цифры:
'#00000000R' - 'F5'
'#01200000D' - 'EA'
'~012D1155132170912' - 'EB'
Вот как она это делает??? Я как не крутил строки, не смог получить такой контрольной суммы! Вообще использую функцию:
function XorString(const S: string): string;
var
Index: Integer;
tmp: Byte;
begin
Result:= '';
tmp := 0;
for Index:= 1 to Length(S) do
tmp:= tmp xor Byte(S[Index]);
Result := IntToHex(tmp,2);
end;
но эта функция выдает совершенно не похожий результат :)
 |
Вопрос задал: AlexMPEI (статус: 1-ый класс)
Вопрос отправлен: 17 сентября 2012, 16:29
Состояние вопроса: закрыт, ответов: 0.
|
Мини-форум вопроса
Всего сообщений: 5; последнее сообщение — 17 сентября 2012, 17:02; участников в обсуждении: 2.
|
min@y™ (статус: Доктор наук), 17 сентября 2012, 16:36 [#1]:
00000000R - это чо ваще?
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
min@y™ (статус: Доктор наук), 17 сентября 2012, 16:39 [#2]:
У нас (не знаю, как у других) контрольный байт считается вот так: 0x100 - (младший байт суммы всех остальных байтов информации). Вот и всё. Проверяй, вдруг подойдёт.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
AlexMPEI (статус: 1-ый класс), 17 сентября 2012, 16:51 [#3]:
"00000000R - это чо ваще?"
это общий запрос: адрес 000, пароль 00000, команда R. первая # как я понял тоже учитывается в КС.
не подходит: сумма всех байтов '#01200000D' через XOR по моему расчету 0х64. 0x100 - 0x04 = FC. У меня же должно получиться ЕА.
|
|
min@y™ (статус: Доктор наук), 17 сентября 2012, 16:54 [#4]:
Цитата (AlexMPEI):
через XOR
А просто просуммировать?
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
AlexMPEI (статус: 1-ый класс), 17 сентября 2012, 17:02 [#5]:
голова!
вот спасибо - вот это я протупил
|
17 сентября 2012, 17:03: Вопрос закрыт (решение принял автор вопроса — AlexMPEI): проблема решена
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|