vesago 0 23 ноября, 2018 Опубликовано 23 ноября, 2018 · Жалоба Разбираюсь с блоком управления масажной ванны. Уперся в расчет контрольной суммы. Явно XOR или суммирование. Но пока не получяется понять. Может кто наведет на решение? 02 получается начало пакета. 03 - окончание. После него идет контрольная сумма. В самом протоколе как я понял данные ASCII передаются. Вот сэмплы: 02 6c 31 30 30 30 30 03 39 45 ( ASII l100009E) 02 6c 31 31 30 30 30 03 39 44 ( ASII l110009D) 02 6c 31 32 30 30 30 03 39 43 ( ASII l120009C) Еще 02 62 42 30 30 31 31 30 38 03 32 44 (ASII .bB001108.2D) 02 62 43 30 30 31 34 30 38 03 32 39 (ASII .bC001408.29) 02 77 35 03 34 46 02 62 35 03 36 34 Еще. Тут к контрольной сумм 55 добавилось. 02 6c 35 30 30 30 30 30 31 32 41 30 30 03 36 36 55 02 6c 35 03 35 41 02 6c 35 30 30 30 30 30 31 32 41 30 30 03 36 36 55 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
andrew_su 1 24 ноября, 2018 Опубликовано 24 ноября, 2018 · Жалоба На сайте https://crccalc.com удобно проверять последовательности на предмет использования распространенных алгоритмов вычисления контрольных сумм. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
esaulenka 5 30 ноября, 2018 Опубликовано 30 ноября, 2018 · Жалоба On 11/23/2018 at 10:56 AM, vesago said: Разбираюсь с блоком управления масажной ванны. Уперся в расчет контрольной суммы. Явно XOR или суммирование. Но пока не получяется понять. Да, очевидно, что это сумма. Хорошо видно при сравнении разницы (арифметической) между двумя похожими пакетами. Следите за руками: Пакет: 02 6c 31 30 30 30 30 03 39 45 Команда: l1 Параметры: 0x00 0x00 Контрольная сумма: 0x9E Считаем: ( 0x02 + 0x6c + 0x31 + 0x30 + 0x30 + 0x30 + 0x30 + 0x03 (весь пакет без контрольной суммы) + 0x9E (контролька) ) % 256 == 0 Что такое 0x55 в конце, не знаю. Это точно не подтверждение от второго блока (линия-то одно- или двупроводная?) ? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
vesago 0 30 ноября, 2018 Опубликовано 30 ноября, 2018 · Жалоба Да Вы гений!! Спасибо! Не допетрил я сам. Вижу, что меняется линейно, а подобрать не могу. Хотя ранее имел дело с подобным алгоритмом. Получается так: 02 77 35 03 34 46 (контролька 4F) ((0xFF - ((((((0x02 + 0x77)&0xFF) + 0x35)&0xFF) + 0x03)&0xFF)) + 1) = 0x4F Проверил на ряде пакетов - сходится. Еще раз - большое спасибо! 55 - точно наверное на линии плавают уровни. Я сначала смотрел салеалоджиком прямо на входе микросхемы драйвера 485 интерфейса. Почему-то в пассивном состоянии там около 0. Перед передачей пакета уровень подымается до 5в, передается пакет на 19200, потом снова около 0. Не знаю для чего так сделали. Возможно из-за этого кое-где 55 принимает преобраз юсб-485. Ванну смастерили итальянцы. Люди своеобразного мышления :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться