Автор |
Сообщение |
|
Дата: 24 Июн 2019 13:26:31 · Поправил: tulalex (24 Июн 2019 19:28:22)
#
Доброго дня, все светлые головы !
Читая здешние форумы ощутил себя каким то неандертальцем... но, переборов в себе его, сформулирую проблему.
В руки попал модуль жк дисплея - самодостаточное и очень информативное !!!( за что и пристал к нему) устройство общающееся с головой по RS485 по UART.
Из перехваченного пакета самодиагностики устройства нарезал посылки, которые модуль понимает.
9696 2182 D4 41 4B 41 48 03 81 EE - сброс контроллеров ЖК
9696 2181 D830 30 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 03 05 9C - 16 пустых знакомест
9696 2181 D830 30 53 4E 4E 4E 4E CA 4E 4E 4E 4E 4E 4E 41 4E 41 41 03 05 F6 - цифра 9
9696 2181 D830 30 53 4E 4E 4E 4E C9 4E 4E 4E 4E 4E 4E 41 4E 41 41 03 05 F5 - цифра 8
9696 2181 D830 30 53 4E 4E 4E 4E 48 4E 4E 4E 4E 4E 4E 41 4E 41 41 03 05 74 - цифра 7
9696 2181 D830 30 53 4E 4E 4E 4E 47 4E 4E 4E 4E 4E 4E 41 4E 41 41 03 05 F3 - цифра 6
9696 2181 D830 30 53 4E 4E 4E 4E C6 4E 4E 4E 4E 4E 4E 41 4E 41 41 03 05 72 - цифра 5
9696 2181 D830 30 53 4E 4E 4E 4E C5 4E 4E 4E 4E 4E 4E 41 4E 41 41 03 05 71 - цифра 4
9696 2181 D830 30 53 4E 4E 4E 4E 44 4E 4E 4E 4E 4E 4E 41 4E 41 41 03 05 F0 - цифра 3
9696 2181 D830 30 53 4E 4E 4E 4E C3 4E 4E 4E 4E 4E 4E 41 4E 41 41 03 05 6F - цифра 2
9696 2181 D830 30 53 4E 4E 4E 4E 42 4E 4E 4E 4E 4E 4E 41 4E 41 41 03 05 EE - цифра 1
Так тоже принимает:
96 2181 D830 30 53 4E 4E 4E 4E 42 4E 4E 4E 4E 4E 4E 41 4E 41 41 03 05 EE - цифра 1
Перемена мест байт внутри выделенного поля (это порядок символов на ЖК) контрольную сумму не меняют.
Посылки ниже сформировал сам методом сложения(вычитания) . Разница в один бит посылки меняет КС на 01h либо 81h.
9696 2181 D830 30 4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E 50 0305 1E
9696 2181 D830 30 4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E 53 0305 21
9696 2181 D830 30 4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E 56 0305 24
9696 2181 D830 30 4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E 59 0305 27
9696 2181 D830 30 4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E 5A 0305 28
9696 2181 D830 30 4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E 5C 0305 AA
9696 2181 D830 30 4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E 5F 0305 2D
9696 2181 D830 30 4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E 60 0305 2E
9696 2181 D830 30 4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E 63 0305 B1
9696 2181 D830 30 4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E 65 0305 33
9696 2181 D830 30 4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E 66 0305 B4
9696 2181 D830 30 4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E 69 0305 B7
9696 2181 D830 30 4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E 6A 0305 B8
9696 2181 D830 30 4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E 6C 0305 3A
9696 2181 D830 30 4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E 6F 0305 BD
9696 2181 D830 30 4E4E4E4E4E4E4E4E4E4E4E4E4241564E 0305 8B
9696 2181 D830 30 4E4E4E4E4E4E4E4E4E4E4E4E4242564E 0305 0C
9696 2181 D830 30 4E4E4E4E4E4E4E4E44424E564E4E4E4E 0305 8E
9696 2181 D830 30 4E4E4E4E4E4E4E4E4442504E4E4E4E4E 0305 88
9696 2181 D830 30 4E4E424241564E4E4E4E4E4E4E4E4E4E 0305 FF
9696 2181 D830 30 4E4E4E4141414E4E4E414141C544C6C3 0305 28
9696 2181 D830 30 4E4E4E4E414141414141414141414141 0305 00
меньше этой КС высчитывать не получается.
Пробовал банально складывать, ксорить ... генератор CRC - 2 недели впустую.
Помогите понять по какому принципу формируется контрольный байт.
Заранее благодарен.
|
|
Дата: 24 Июн 2019 14:11:26
#
Здравствуйте.
Вообще было принято тупо складывать байты, но при этом, при переполнении ( возникшем переносе из старшего разряда ) его игнорировать (обнулять )при следующем сложении.
|
Реклама Google
|
|
|
Дата: 24 Июн 2019 14:22:43 · Поправил: tulalex (24 Июн 2019 17:31:59)
#
RX3DJY
Я тупо пробовал... не получается
|
|
Дата: 24 Июн 2019 15:29:19 · Поправил: tulalex (24 Июн 2019 19:28:44)
#
80h то не хватает, то лишняя
|
|
Дата: 24 Июн 2019 19:19:51
#
Предположу что ещё туда пихается количество байт, ну или четное или не четное количество... больше мыслей нет.
|
|
Дата: 24 Июн 2019 19:25:06
#
Я тоже туплю с калькулятором...
|
|
Дата: 24 Июн 2019 21:20:34 · Поправил: killer258 (24 Июн 2019 21:58:56)
#
иногда бывает, что алгоритм вычисления суммы строки задан таблично. Например, все её байты (или даже отдельные биты) складываются, но разные слагаемые имеют разный "вес" в этой сумме, заданный таблично, с которым они ксорятся, а потом всё это складывается). И ещё имеется какое-то начальное значение для всей этой суммы, с которым всё это суммируется. Переполнение и перенос обычно игнорируются.
(например, так вычислялся байт контрольной суммы в восьмибайтном пакете эфирного протокола радиотелефона Senao SN-258)
Чтобы выяснить этот вес для каждого из байтов строки , надо кучу опытов провести, меняя всего один бит там, сям. По очереди. И смотреть, как меняется результат.
Для выяснения начального значения надо послать "все нули" и посмотреть, какая будет контр. сумма.
Вообще способов много. И это если не рассматривать вариант, что это CRC. Но у вас похоже, не СRC.
Я не знаю вашей ситуации, но если кс состоит из одного байта ,я бы попробовал для выяснения принципа ее формирования посылать разные пакеты и менять кс до совпадения с истинной, это естественно, надо делать не вручную, а автоматизировать, написав программу, которая перебирает, посылает, и анализирует реакцию системы
|
|
Дата: 25 Июн 2019 00:39:24
#
Что за дисплей? Попробую написать программку и погрызу расчет кс. Может описание протокола ищется в сети? Похоже там XOR, может не всей посылки, а только переменной её части.
|
|
Дата: 25 Июн 2019 07:09:27 · Поправил: killer258 (25 Июн 2019 09:47:24)
#
иногда я встречал случаи, когда контрольной суммой была охвачена не вся посылка, а только её наиболее критичная часть. Например, в посылке упомянутого выше радиотелефона первые 4 не были охвачены кс, а остальные 3 байта были охвачены, и последний, восьмой байт , был контрольной суммой. Так что да, и такое возможно
Предполагаю, что 9696 2181 , а возможно, и ещё плюс байт-другой- это адрес данного модуля, на который он откликается. Тогда он с большой вероятностью не охватывается контрольной суммой.
Ваш модуль только цифры и пробелы отображает или ASCII буквенные символы тоже?
Я тут подумал, раз перемена мест в указанном вами поле не меняет контрольную сумму, значит, предположение о наличии весовых множителей в ней отпадает.
Я бы наверное, попробовал ещё один эксперимент.
передать все пробелы, потом передать вначале один символ, далее пробелы, потом два одинаковых символа, остальные пробелы, потом три одинаковых символа, далее пробелы. Посмотреть, на одинаковое ли значение меняется контрольная сумма при этом. Может, что-то прояснится при этом
|
|
Дата: 25 Июн 2019 10:09:31 · Поправил: tulalex (25 Июн 2019 14:45:55)
#
Microtech
При некорректном обращении к устройству оно отвечает посылкой:
96962195
это я про возможность пингование некой программой-щелкунчиком (жаль я не программист...) а это ответ "непонимать"
|
|
Дата: 25 Июн 2019 11:01:29 · Поправил: killer258 (25 Июн 2019 11:14:33)
#
А что за микросхемы там в этом модуле применены?
можно сюда фото платы или хотя бы маркировку на микросхемах? Может, удастся разыскать в интернете даташит на контроллер этого модуля, а там будет и описание команд управления
|
|
Дата: 25 Июн 2019 11:13:33
#
Atmega88 (прошитая злым гением), а за ней цепочка из четырёх контроллеров ЖК V6108 (зовут их так)
|
|
Дата: 25 Июн 2019 11:16:39
#
кастомный значит, модуль. Да, тогда там в протоколе управления может быть всё что угодно, в пределах фантазии этого злого гения :-)
|
|
Дата: 25 Июн 2019 11:19:16 · Поправил: tulalex (25 Июн 2019 18:13:09)
#
В чём и интрига :-\
|
|
Дата: 25 Июн 2019 11:25:08 · Поправил: tulalex (25 Июн 2019 18:15:14)
#
Потихоньку выковыривается вшитая библиотека символов методом перебора. Интуитивно вычисляю КС от исходной +-
битовая разница нового старого байта (символа) - колхоз, конечно...
|
|
Дата: 25 Июн 2019 11:36:41 · Поправил: tulalex (25 Июн 2019 12:25:10)
#
Три вот таких вкусняжки с подсветкой
|
|
Дата: 01 Июл 2019 11:06:23
#
Похоже, у каждого передаваемого байта старший бит - контрольный, а не значащий. Выставляется таким образом, чтобы общее количество "включенных" битов в байте было четным. Поэтому, например, 41h (01000001) при передаче остается в неизменном виде, а 43h (01000011) передается, как C3h (11000011). Ну а контрольная сумма расчитывается до установки контрольных битов. Если в приведенных примерах все старшие биты обнулить, то все сходится.
Например, вместо 9696 2182 D4 41 4B 41 48 03 81 EE будет 1616 2102 54 41 4B 41 48 03 01 6E.
Первые три байта в вычислении контрольной суммы не участвуют. Остальные байты суммируются и полученная контрольная сумма (два байта) помещается в конец:
16 16 21 02 54 41 4B 41 48 03 01 6E
02+54+41+4B+41+48+03 = 016E
16 16 21 01 58 30 30 53 4E 4E 4E 4E 4A 4E 4E 4E 4E 4E 4E 41 4E 41 41 03 05 76
01+58+30+30+53+4E+4E+4E+4E+4A+4E+4E+4E+4E+4E+4E+41+4E+41+41+03 = 0576
|
|
Дата: 01 Июл 2019 17:06:03 · Поправил: tulalex (01 Июл 2019 17:06:59)
#
НА ПРАКТИКЕ:
969621 81D830304E4E4E4E4E4E4E4E4E4E4E4E4E4E4E5503 05 A3
81+D8+30+30+4E+4E+4E+4E+4E+4E+4E+4E+4E+4E+4E+4E+4E+4E+4E+55 +03 = 6A3 нечет
969621 81D830304E4E4E4E4E4E4E4E4E4E4E4E4E4E4E5603 05 24
81+D8+30+30+4E+4E+4E+4E+4E+4E+4E+4E+4E+4E+4E+4E+4E+4E+4E+55 +03 = 6A4 чет +80 = 724
|
|
Дата: 01 Июл 2019 19:52:35
#
tulalex
81+D8 не сбросили старший бит.
Всё сходится.
|
|
Дата: 01 Июл 2019 20:11:36
#
Первые три байта в вычислении контрольной суммы не участвуют
как я и предполагал.
|
|
Дата: 12 Июл 2019 21:49:53
#
Похоже на дисплей от бензоколонки.
Оно?
|
|
Дата: 13 Июл 2019 00:56:28
#
Только газовой.
|
|
Дата: 13 Июл 2019 13:18:40
#
Похоже на дисплей от бензоколонки
Я тоже подумал о таком происхождении.
Теперь пойдут недоливы.
|
|
Дата: 13 Июл 2019 13:23:41
#
Никакой связи... это как телецентр и твой телевизор
|
Реклама Google |
|