Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 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 Вопрос закрыт (ответы не принимаются, мини-форум закрыт)

Вопрос задал: AlexMPEI (статус: 1-ый класс)
Вопрос отправлен: 17 сентября 2012, 16:29
Состояние вопроса: закрыт, ответов: 0.


Мини-форум вопроса

Всего сообщений: 5; последнее сообщение — 17 сентября 2012, 17:02; участников в обсуждении: 2.
min@y™

min@y™ (статус: Доктор наук), 17 сентября 2012, 16:36 [#1]:

00000000R - это чо ваще?
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
min@y™

min@y™ (статус: Доктор наук), 17 сентября 2012, 16:39 [#2]:

У нас (не знаю, как у других) контрольный байт считается вот так: 0x100 - (младший байт суммы всех остальных байтов информации). Вот и всё. Проверяй, вдруг подойдёт.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
AlexMPEI

AlexMPEI (статус: 1-ый класс), 17 сентября 2012, 16:51 [#3]:

"00000000R - это чо ваще?"
это общий запрос: адрес 000, пароль 00000, команда R. первая # как я понял тоже учитывается в КС.

не подходит: сумма всех байтов '#01200000D' через XOR по моему расчету 0х64. 0x100 - 0x04 = FC. У меня же должно получиться ЕА.
min@y™

min@y™ (статус: Доктор наук), 17 сентября 2012, 16:54 [#4]:

Цитата (AlexMPEI):

через XOR

А просто просуммировать?
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
AlexMPEI

AlexMPEI (статус: 1-ый класс), 17 сентября 2012, 17:02 [#5]:

голова!
вот спасибо - вот это я протупил :)

17 сентября 2012, 17:03: Вопрос закрыт (решение принял автор вопроса — AlexMPEI): проблема решена

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 22 февраля 2025, 11:45
Выполнено за 0.03 сек.