[an error occurred while processing this directive] [an error occurred while processing this directive]
Думать, если честно, лень, а подход попробую подсказать
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)
[an error occurred while processing this directive] [an error occurred while processing this directive]

Отправлено BLACKEAGLE 26 марта 2002 г. 00:29
В ответ на: Подсчет контрольной суммы отправлено Mixal 25 марта 2002 г. 23:17

Если Вы действительно можете формировать ЛЮБЫЕ входные посылки, сделайте так:

1. Начните со всех нулей, получите 16-й байт.

2. Добавляйте по единице КАЖДОГО разряда (1,2,4,8) в первом после команды байте, получите еще 4 значения 16-го байта.

3. Поставьте первый после команды байт в 0 и повторяйте п.2 с каждым следующим байтом, выясните вес вклада - зависим ли он от номера байта или только от битовой позиции.

4. Полезно получить также и значение 16-го байта при заведомо некорректных данных (т.е. что будет при 15-ти нулевых байтах)

Такой подход даст Вам механизм формирования веса, а инкрементный метод позволит перейти от частного к общему (выяснили весА - увеличивайте каждый байт на 1 и смотрите, как меняется 16-й байт). Скорее всего, применен один из тысяч "стандартных" способов продольно-поперечной коррекции одинарных и обнаружения двойных ошибок. Учитывайте также, что Ваши числа представлены не младшим/старшим полубайтами, как Вы решили, а байтами - 7 бит данных и один бит нечетности.

Составить ответ  |||  Конференция  |||  Архив

Ответы



Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru