Перейти к содержанию
Old Phone Forum
  • Вход

    Вы сейчас не залогинены на форуме.

    Для возможности комментариев, загрузки файлов, подписок на ответы - вам надо войти.

CRC - прога для вычисления контрольной суммы


Рекомендуемые сообщения

уважаемые господа программисты..если кого-то из вас не затруднит ,напишите пожалуйста прогу для вычисления контрольной суммы в строчке из кода прошивки гуми (чтобы я, допустим, мог вставить строчку в поле, а прога бы считала мне контрольную сумму)..очень нужно..очень надоело уже считать вручную...а вот алгоритм вычисления это контрольной суммы:

 

Например, вот строчка:

S31500020120 6C0160C2042F86F22F8601034CF2A920 CD

..где CD - это та самая контрольная сумма.....

Для начала запустите программу Калькулятор, которая есть в любой версии Windows, в расширенном режиме, чтобы удобно было переключаться из десятичной системы в шестнадцатеричную и вооружитесь обычным текстовым редактором, подойдет к примеру встроенный в FAR редактор. Затем действуйте следующим образом: сложите в шестнадцатеричной системе поля адреса, данных и после этого прибавьте к этому значению шестнадцатеричную длину этих полей в байтах - 15. Вот пример подсчета контрольной суммы для приведенной выше строчки:

 

 

15+00+02+01+20

 

+

 

6C+01+60+C2+04+2F+86+F2+2F+86+01+03+4C+F2+A9+20

 

=

 

632 в шестнадцатеричной системе

 

 

Теперь о том, что нужно делать с полученным результатом. Если посмотреть на поле контрольной суммы, то можно увидеть, что под нее отведен один байт, а значение одного байта не может превышать 255, или FF в шестнадцатеричной системе. Так вот, чтобы просчитать значение контрольной суммы для нашей строки, следует в шестнадцатеричной системе отнять полученное нами значение при сложении от FF. Но если перевести 632 в десятичную систему, то получится число 1586, разумеется при вычитании у нас выйдет отрицательное значение, а это недопустимо. Поэтому в этом случае следует отбросить одну цифру слева, чтобы получилось значение меньше FF - 255 в десятичной системе. Отбросили - получилось число 32. Значит теперь в шестнадцатеричной системе производим вычитание: FF - 32 = CD. Вот CD и будет искомой контрольной суммой для нашей строки.

Сами видите, что геммороя много...а когда этого надо сделать много, то хоть вешайся вообще...заранее спасибо!!!

Ссылка на комментарий
Поделиться на другие сайты

Просил - получай :);):?

 

Я тут посидел минут 15 и вот что получилось:

 

Как я понял, то из строки: S31500020120 6C0160C2042F86F22F8601034CF2A920 CD, тебе надо проверить: 1500020120 6C0160C2042F86F22F8601034CF2A920 только естественно без пробела.

Значит:

1) в программе вводишь то что тебе надо только в шестнадцатеричном виде без всяких там S и тому подобного - будет ошибка.

2) следи чтобы количество символов строки было четным - будет ошибка.

И вообще если что-то будет считать не так - пиши. И выложи свои рассчеты хотя бы штук 5.

CRC.rar

Ссылка на комментарий
Поделиться на другие сайты

Xpasha,

спасибо огромнейшее!!!!...благодарен по гроб жизни..хорошо, что есть ещё такие отзывчивые люди...!!!

..прога работает на ура..считает всё и вся...и главное - правильно!!!..ещё раз спасибо!!..а какие расчёты нужны?

Ссылка на комментарий
Поделиться на другие сайты

  • 7 лет спустя...

Просил - получай :):):)

 

Я тут посидел минут 15 и вот что получилось:

 

Как я понял, то из строки: S31500020120 6C0160C2042F86F22F8601034CF2A920 CD, тебе надо проверить: 1500020120 6C0160C2042F86F22F8601034CF2A920 только естественно без пробела.

Значит:

1) в программе вводишь то что тебе надо только в шестнадцатеричном виде без всяких там S и тому подобного - будет ошибка.

2) следи чтобы количество символов строки было четным - будет ошибка.

И вообще если что-то будет считать не так - пиши. И выложи свои рассчеты хотя бы штук 5.

Что то не скачивается прога для CRC

Ссылка на комментарий
Поделиться на другие сайты

Зачем она вам вдруг понадобилась, интересно...

Я начинающий ну пытаюсь на AVR.

Этот калькулятор мне нужен для 1-wire на DS18B20.

Вот я узнал с помощью программы owdemo Скачанной отсюда http://arvresearch.nm.ru/owdrv/download.dhtml

серийный номер 0x 000005D97080 ,ID у DS18B20 равен 0x28

Теперь мне необходимо узнать CRC это надо для обмена с DS18B20

Спасибо.

 

Вот по этой ссылке http://chipmk.ru/index.php?option=com_cont...5&Itemid=29

написано- Match Rom Command, 0x55 -------- отправляет ПК;

ROM Family Code, 0x28 ------------- отправляет ПК;

ROM Code, 0x000001272056 ------ отправляет ПК;

ROM CRC, 0x27 ----------------------- отправляет ПК;

 

Вот с числом 0x000001272056, CRC не получается 0x27

а вот с числом 0x562027010000 всё получается.

 

значит должно быть так ROM Code, 0x562027010000 ------ отправляет ПК;

Подскажите кто знает.Спасибо.

Изменено пользователем serj32
Ссылка на комментарий
Поделиться на другие сайты

  • 3 года спустя...

Судя по логам - файл в 2007г был утрачен, а его автор с 2008г не приходил…

 

Проще заново написать. Зачем вообще сейчас это надо?

Нужен какой-то патч на C3322i, C3322, C3592, B5722, S5610, E1080, E1081, и прочие Swift/Infineon ? Обращайтесь в ЛС или E.F2065@gmail.com

Ссылка на комментарий
Поделиться на другие сайты

Каких данных? S-строк?

Так это давно стандартизированный формат Motorola S-Records. Вон например в Hex Workshop можно бинарник экспортировать в S37-файл и это будет именно такой же формат как и был в прошивках Agere…

Нужен какой-то патч на C3322i, C3322, C3592, B5722, S5610, E1080, E1081, и прочие Swift/Infineon ? Обращайтесь в ЛС или E.F2065@gmail.com

Ссылка на комментарий
Поделиться на другие сайты

Объем файла до 3мб. И там нужно всю контрольную сумму пересчитывать. Ввести хекс строку и чтоб он пересчитал. Если есть готовая программа с исходники на с++ был бы очень рад.

Ссылка на комментарий
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйте новый аккаунт в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти


×
×
  • Создать...