Вверх ↑
Этот топик читают: Гость
Ответов: 17
Рейтинг: 0
#16: 2020-04-12 22:34:52 ЛС | профиль | цитата
Tad писал(а):
Откуда-то ты их взял? Не с потолка и не методом тыка.



1)отправляем команду 2181, предварительно обвесив ее “02” спереди и “1” сзади

2) получаем первый фрейм ответа “1015618131313131” Здесь по порядку “1”-означает,
что ответ будет состоять из нескольких фреймов, следующие 12 бит “015” — это дина ожидаемого ответа
0х015 = 21 байт (2 байта позитивного ответа + 17 байт VIN кода + 2 байта CRC).
В первом фрейме мы получили только 6 полезных байт “618131313131”
(как проверить что это начало позитивного ответа мы уже знаем). Осталось получить (21-6)/7 = 3 фрейма.

3) чтобы продолжить получение ответа мы должны отправить фрейм FlowControl “300300”.
Напомню, первый байт “30” — собственно означает, что это FC, второй байт “03” — мы говорим посылающей стороне,
что готовы принять три оставшихся фрейма, третий байт “00” — означает, что мы готовы принимать оставшиеся фреймы с максимальной скоростью.
Последняя “3” как и раньше, предназначена для ELM и сообщает ему, что он должен вернуть нам ответ, как только получит три фрейма.

4) получаем оставшиеся фреймы. Они все начинаются с “2” и вторым символом у нас просто счетчик,
который бежит по кругу от 0 до F. Далее в каждом фрейме (кроме последнего) по 7 байт данных.
В последнем только один байт данных и 6 байт паддинга до 8 байт.

Таким образом мы получили ответ “618131313131” + “31313131313131” + “3131313131319F” + “B5”.
Как видим, VIN код у нас состоял из 17 единиц в ASCII коде и CRC = “9FB5”.

Теперь сформируем и отправим команду на запись нового VIN состоящего из 17 двоек.
Команда записи VIN в моей приборной панели “3B81”. За ней должно быть 17 байт в ASCII и 2 байта нового CRC.
Итого, нам нужно послать команду “3B8132323232323232323232323232323232327E70”. Сначала поделим ее на фреймы.
В первый влезет 6 байт, во второй и третий по 7, а на последний останется 1 байт.

#[17:04:29.256]KeepAlive
>[17:04:29.257]0210C01
<[0.029]0210C01
0250C08484848484

>

Пока мы раскладывали команду на фреймы, прошло более 5 секунд и пришлось снова открывать сессию.
Теперь посылаем первый фрейм (что означает 1015 в начале, мы уже знаем)

>[17:04:29.286]10153B8132323232
<[0.111]10153B8132323232
3001148484848484

>

В ответ получаем от приборной панели фрейм FC, который говорит нам, что следом можно послать только один фрейм и не ранее чем через 0х14 мс.
“8484848484” — как всегда паддинг.

>[17:04:29.397]2132323232323232
<[0.111]2132323232323232
3001148484848484

>

Отправили второй фрейм

>[17:04:29.509]223232323232327E
<[0.112]223232323232327E
3001148484848484

>

Отправили третий фрейм

>[17:04:29.621]23701
<[0.016]23701
037F3B2384848484
карма: 0

0
Ответов: 16884
Рейтинг: 1239
#17: 2020-04-12 23:16:38 ЛС | профиль | цитата
benea333 писал(а):
отправляем команду 2181
benea333 писал(а):
мы должны отправить фрейм FlowControl “300300”
benea333 писал(а):
Команда записи VIN в моей приборной панели “3B81”

Т.е. 1008, 2181, 300300, 3B81 это команды.
Ну и где список всех команд?
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Ответов: 16884
Рейтинг: 1239
#18: 2020-04-13 10:37:02 ЛС | профиль | цитата
Moжет быть так.
Занести команды с готовыми кодами в StringTable и выбирать из неё?
Свой компонент Com-порт подключи.
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
файлы: 1connect.rar [2.5KB] [338]
18
Сообщение
...
Прикрепленные файлы
(файлы не залиты)