Показать сообщение отдельно
Старый 01.12.2013, 19:06   #44
autowp
Пользователь
 
Аватар для autowp
 
Регистрация: 13.12.2012
Возраст: 40
Город: Москва
Регион: 77, 97, 99, 177
Машина: Peugeot 407 Coupe
Сообщений: 82
autowp is on a distinguished road
По умолчанию

Цитата:
Сообщение от Vic26 Посмотреть сообщение
Если ты решил изготавливать плату, то почему бы не повторить тот же самый Can-Hacker, только заменить в нем CAN-драйвер на нужный. Это будет более предсказуемый результат чем с переходником.
Мысль здравая, но я побаиваюсь большей сложности схемы: большее поле для ошибок.

Цитата:
Зря брат, верни на место, или ещё лучше через 100к. на +
Почему? Он же инверсный (low - проснись)
Вернуть на место (оставить в воздухе) мне не позволила программа - говорит, что это bad idea оставлять висящие input'ы


_________________________

Тем временем продолжил discovering RD4.
Решил, что надо начать с того, чтобы сделать мало-мальски удобный инструмент для анализа данных, а раз уж сам анализ для меня в новинку, то требуется какая-то микрозадача для решения.

Показалось, что не слишком сложным и одновременно ёмким будет эмуляция меню выбора CD-треков. Думаю, что не ошибся с выбором.

Для тех, кто не знаком с магнитолой: splash screen с линейным списком названий треков (cd-text), навигация вверх/вниз и, собственно всё.

Fast-forward: Java-приложение (во имя crossplatform), rxtx library, написание canhacker commands layer, поверх него canframe layer

Первым делом нужно было определить круг сообщений, отвечающих за это меню. Под это дело была сделана табличка с фильтром по id сообщений.
С её помощью не сложно было установить, что за это меню отвечают сообщения с arbitrationID = 0x125

7-и и 2-х байтовые фреймы, не сложный формат данных, show/hide и up/down заработали быстро.

И тут я вставил диск с CD-text'ом...
Оказалось, что по 0x125 идёт мультифрейм (ISO 15765-2).
Пришлось проложить ещё один layer CanMessage, собирающий мультифреймы в одно сообщение.

Названия треков в latin-1 (привет, кириллица). 20 байт на исполнителя и 20 на название трека и формат 0x125ых команд полностью собран.

Код:
125 6 01110000 TTTTTTTT AAAAAAAA 0SXEBBBB MMMMMMMM 00000000 [[JJJJJJJJ x20] [HHHHHHHH x20] x0-4]	
Показать меню списка треков. 
TTTTTTTT - количество треков, 
AAAAAAAA - offset экрана списка треков, 
S - флаг "покажи список треков"
E - флаг "список треков сдвинулся" на 1 позицию выше или ниже за пределы 4х видимых в данный момент. Направление сдвига определяется по BBBB
BBBB - offset выбранного трека внутри экрана списка треков
MMMMMMMM - дескриптор текстовых данных, идущих далее.
каждая пара бит соответствует наличию исполнителя и названия трека, идущих далее пакетами по 20 байт в соответствующем порядке.
Позиции соответствуют позициям на экране, кроме ситуации наличия флага E
[JJJJJJJJ x20] - 20 байт имени исполнителя
[HHHHHHHH x20] - 20 байт названия трека

125 1 00000000 Спрятать меню списка треков. (Нажатие на OK после выбора трека в LIST, нажатие на ESC, по таймаут)
Пруфпикча

(не знаю как лучше снять видео, в котором участвует яркий монитор. Но смею заверить, что слева - магнитола )


А также собран небольшой набор инструментов, потребность в которых возникла в процессе:
- canhacker commands monitor
- can frame filter & monitor
- can message filter & monitor


Вопросы:
1. Как принято определять, какие пакеты являются мультифреймовыми?
В данный момент я хардово вписал, что сообщения 0x125 - мультифрейм, но, наверное, есть правильный способ?
Было предположил, что вообще все сообщения ходят по ISO 15765-2, но, например, сообщение с VIN кодом противоречит этому.

2. Изучать формат сообщений было конечно интересно, но все-таки очень хотелось бы разыскать какой-нибудь reference manual, где бы они были хотя бы перечислены. Но гугл почему-то не помог мне в этом. Не подскажете?



Вот тут начал складировать инфу по CAN сообщениям
А вот тут сорцы java (не пинайте - первый java экспириенс)
autowp вне форума   Ответить с цитированием