Обновить
8K+
3

Пользователь

15,1
Рейтинг
2
Подписчики
Отправить сообщение

Да, и я на этом ровно и попался: решил, что ELM327 — это спецификация. А это марка, которую переписали кто во что горазд, и совместимость проверяется только опытом.

Отсюда практический вывод, до которого я дошёл поздно: сравнивать адаптеры надо не по надписи, а по поведению. Программа теперь перебирает три способа дочитать длинный ответ и пишет в журнал, какой сработал. Если такие строчки собирать от разных людей, сложится таблица «плата — прошивка — что умеет». Пока в ней одна строка, и та отрицательная.

Про «всё своё» согласен целиком. SLCAN-адаптер, у которого логики транспортного уровня нет вообще, снял вопрос за вечер и стоит столько же.

Спорить не буду: для регулярной работы нормальный сканер быстрее и удобнее.

Задача была другая. При плавающем контакте сканер отвечает на вопрос «есть ли ошибка», а мне нужно было «в какой момент она появляется, когда я шевелю вот этот кусок жгута». Для такого нужен самописец: сидит в цикле, пищит на изменение счётчика, пишет CSV с метками времени. Второй мотив менее уважительный — было интересно, сколько можно выжать из железки за шестьсот рублей. Оказалось, меньше, чем хотелось, и статья в основном про то, где именно упираешься.

VAG-KKL — это K-line, на Polo Sedan с CAN он бы не помог. VCDS хорош, но у меня его нет, а покупать ради одного перебитого провода не хотелось.

В точку, и возразить нечем. Проверял я на одном клоне — том, что представляется как v1.5. Написал «обойти нельзя», а честно было бы «на этом обойти не вышло».

Полез смотреть Pyren после вашего комментария и наткнулся на неприятную для себя вещь. В версии для компьютера у меня с самого начала была лестница из трёх способов заставить адаптер дочитать длинный ответ: ATCRA и адаптер справляется сам; ATCRA плюс вручную заданный кадр разрешения; сырые кадры, где разрешение шлёт сама программа. А в Android-порт я эту лестницу просто не перенёс — приложение получало первый кадр и сдавалось. Заметить было нечем: заглушка в обоих случаях отдавала только первый кадр, разницы не видно. Нашлось только сверкой кода с кодом, и повод посмотреть дал ваш комментарий.

Теперь лестница есть в обеих версиях, и в журнал пишется, какой способ сработал, вроде «0x70A: длинный ответ дочитан — адаптер справился сам (ATCRA)». Мой клон по-прежнему не умеет, доходит до третьей ступени и там встаёт.

Если тот адаптер, которым Pyren читает Рено, у вас под рукой — скажите, что на плате написано и что он отвечает на ATI. Хочу собрать список «какой адаптер что умеет»: такого списка нигде нет, а вопрос «какой ELM327 брать» задают постоянно. Пока в списке одна строка, и та отрицательная.

Уже не планируется — уже лежит. Kotlin и Compose, не обёртка над питоновской версией, протокол переписан.

Исходники: https://github.com/gdm0991/vagdiag/tree/main/android-app

Готовый APK: https://github.com/gdm0991/vagdiag/releases

Ради чего вообще стоило делать: Bluetooth-адаптеры. Из браузера к ним не подобраться, из Termux тоже, а в бардачке у большинства лежит именно такой. Wi-Fi и USB через OTG тоже есть, но USB живьём проверить не смог — кабеля у меня нет.

Чтобы не было завышенных ожиданий: полный цикл приложение прошло пока через программную заглушку адаптера, на двух телефонах — Redmi Note 13 (Android 15) и Mi 11 Lite (Android 13). На живой машине компьютерная версия обкатана куда лучше. Поставите и что-то отвалится — заводите issue, мне это сейчас полезнее всего.

Спасибо за разбор. Открыть гит и сверить с текстом — это больше, чем я мог рассчитывать, и по делу почти всё.

Про нейросеть отвечу сразу, иначе остальное будет выглядеть отпиской. Да, текст я писал с языковой моделью. И расхождения, которые вы нашли, вылезли ровно там, где я диктовал по памяти вместо того, чтобы открыть файл. Это не оправдание, это причина: сверялся бы с кодом — девять команд не превратились бы в четыре.

Команды инициализации. Ваша правда. pdc_core.py, строки 229–238: ATZ, дальше ATE0, ATL0, ATS0, ATH1, ATSP6, ATCAF1, ATAT0, ATST32. В _recover сверху ещё ATCF000 и ATCM000. Хуже, чем просто неточность: три из них прямо про тему статьи. Без ATH1 не видно, с какого адреса пришёл ответ, и весь разговор про смещение теряет смысл. ATAT0 стоит вместо ATAR намеренно — в статье про это есть, а в списке команд нет. Кто повторил бы за мной, получил бы другое поведение адаптера и не понял почему.

PAD. Тоже ваша. Рабочий путь — pdc_core.py, строка 512, добивка нулями. 0xAA живёт в pdc_diag.py, строка 1224, в третьем способе с сырыми кадрами: я там проверял, отличает ли блок мою добивку от заводской — VAG добивает AA. Не отличает, длина берётся из первого байта. В статью значение уехало из эксперимента и было выдано за рабочее.

Восемь датчиков против четырёх. Тут противоречия нет, но виноват всё равно я — не объяснил. Датчиков восемь: четыре в переднем бампере, четыре в заднем. Отключаешь по одному бамперу за раз, поэтому в подсказке четыре. Формулировку в menu.py уже поправил, в статью допишу.

На любом автомобиле с 2001 года — ошибка, и ваш Patrol ровно тот случай. Правильно: в США OBD-II обязателен с 1996, в Европе EOBD для бензиновых с 2001 и для дизелей с 2004, а у машин с других рынков разъём на месте, а режимов нет. В README и в pdc_obd.py уже исправлено, в Android-версии тоже.

Выбросы — выхлопные. OBD-II затевался как экологическое требование, и обязательные режимы покрывают то, что влияет на состав выхлопа. Написал так, что вышла загадка.

Руки — поймали. Со сканером руки заняты сканером, с регистратором — жгутом, и это не «свободные руки». Имел в виду, что не надо одновременно смотреть в экран и щупать проводку.

Боковой режим и увидел электрически — крыть нечем, я это сам сочинил, и никому оно не помогло. Первое означало, что ELM327 сделан прежде всего как интерфейс к блоку двигателя, а сырые кадры отдаёт постольку-поскольку. Второе — что байт типа отказа описывает электрику цепи: обрыв, замыкание, а не логическую ошибку. Так и напишу.

Ещё одно, чего вы не писали, но что всплыло из комментария 200sx_Pilot: «обойти невозможно» сказано слишком широко. Проверял-то я на одном клоне.

Правки внесу сегодня отдельным разделом с датой, чтобы ваш комментарий не повис в воздухе. Вечера мне это стоило, но сэкономит больше.

Информация

В рейтинге
561-й
Зарегистрирован
Активность