Еще один ELM327 адаптер в
коллекцию. Меня он заинтересовал крайне противоречивыми отзывами при использовании моего SZ Viewer. Некоторые радовались и говорили, что это хороший адаптер. У других были странные проблемы.
И вот этот адаптер у меня:

С виду обычный адаптер, у меня
есть в похожем корпусе. Тоже с индикаторами и кнопкой. Но на этом фирменное название: NEXPEAK NX101.

На первый взгляд это обычный китайский ELM327 v1.5, что само по себе неплохо.
Если проверять на моем Suzuki Jimny, то все хорошо. Работает, достаточно стабильно, подключается ко всем модулям. Но у меня они только по K-Line отвечают.
А вот если проверить на машине с CAN-шиной, то все гораздо хуже. К модулям, работающими по CAN-шине, моя программа через этот адаптер подключается, но данные принять не может - выдается ошибка ответа.
Проблема оказалась в работе CAN Flow Control - это управление потоком нескольких CAN-сообщений, представляющих один целостный ответ. Об этом я уже рассказывал как раз
на примере одной заложенной ошибки ELM327.
Что же в данном случае?
Опять тот же пример с запросом VIN стандартным OBD2 запросом 0902 (к сузуки не имеет отношения, но хорошо показывает проблему).
Если делать с настройками по умолчанию (т.е. в CAN Flow Control Mode 0), то все работает:

Но если, как я уже показывал, использовать CAN Flow Control Mode 1, то приходит только первое сообщение ответа:

Просмотр данных показывает, что в NX101 ошибочная реализация команды ATFCSD (установка сообщения для Flow Control). Она работает, влияет на запросы, но выставляет не то сообщение. Например, ATFCSD300000 выставляет не 30 00 00 00 00 00 00 00 как можно было ожидать, а 00 00 00 80 00 00 00 00.
Естественно, выставленное NX101 сообщение не является корректным, поэтому модуль управления так и не отправляет остаток сообщений.
Отсюда следует вывод: адаптер NEXPEAK NX101 почти нормальный v1.5 китайский адаптер, но с ошибкой в реализации ATFCSD.
Для текущей реализации SZ Viewer это означает, что работать с CAN-модулями автомобилей через этот адаптер невозможно. С K-Line модулями работа возможна без проблем.
К покупке этот адаптер не рекомендую.
Теперь вопрос концептуальный. Стоит ли поддерживать такие заведомо неисправные (с ошибками) адаптеры в SZ Viewer?
В принципе, я вижу два варианта, которые это позволят для этого адаптера.
1. Просто использовать CAN Flow Control Mode 0. Это работает (проверил), пусть и немного нестабильно в некоторых ситуациях (вызывает перезапросы)
Но из-за достаточно ограниченной реализации ELM327 возможно подключение через CAN только к модулям управления двигателем и AT/CVT. К остальным модулям через этот режим по CAN-шине подключиться невозможно.
2. Использовать все же CAN Flow Control Mode 1, но сделать специальную обработку именно этой ошибки NX101. По факту там перепутан порядок битов, экспериментальным образом подобрал, что для установки сообщения 30 00 00 00 00 00 00 00 надо вызывать команду ATFCSD00000006.
Это позволяет подключаться ко всем модулям по CAN-шине, но это именно самый настоящий "костыль" сугубо для данного адаптера.
Пока я еще не решил. Возможно, что более правильно подводить пользователей к использованию нормальных адаптеров, а не поддерживать продажи такого почти нормального, но все же неполноценного хлама.
p.s. А еще оцените на данном примере с какими изощренно-кривыми адаптерами приходится иметь дело. А потом злобные юзеры ругаются: "SZ Viewer глючит! А другие программы работают! Дизлайк-отписка".