Возможные причины.1. Неисправность прибора.
Маловероятна, но исключать нельзя, так как все приборы несколько раз проверяются, кроме того обмен вначале выполняется, а железо в большинстве случаев либо работает либо не работает.
2. Неисправность исследуемого ЭБУ.
Если проверяете на одном ЭБУ, то также на мой взгляд следует учесть возможные глюки в самом ЭБУ.
[21:24:23:360] RD: BUS INIT:
[21:24:24:061] RD: .
[21:24:24:632] RD: .
[21:24:25:233] RD: .
[21:24:25:834] RD: ERROR
3. Глюк в окне OBD.
Маловероятный, так как обмен (чтение из MT и передача в виртуальный порт) всего 3 строчки в программе и напутать довольно сложно.
4. Глюк компонента виртуального порта.
Вполне возможно. Исходный код компонента не доступен, и возможно проанализировать нет.
5. Глюк ОС или наличие вирусов, сниферов и т.д.
Вполне возможно. На это натолкнула следующая инфа из лога:
ELM:27:27:655] RD: Очистить ELMстить ELM
В программе нет такой строки и она не может быть передана в лог.
Т.е. возможно происходит программный сбой и область памяти выделенная для данных прочитанных из ELM каким то образом накладывается на область памяти где находится заголовок кнопки “Очистить ELM”.
Так как вариантов много и найти истинную причину сложно, то прошу при возможности проверить работу на заведомо исправном ЭБУ, и ОС без всяких фич и вирусов.
В приложении софт для отладки в котором добавлено:
- obd.png (6,23 Кб) Просмотров: 2874
1. В логе отображается количество прочитанных байт от ELM (обычно не больше 30-40). Если будет значения > 100-200 то скорее всего явные сбои.
2. Флаг того что от ELM получен целостный пакет (1 – да, 0 – нет), т.е. что MT дождался целого ответа от ELM, а не передал его половину а потом еще половину.
3. Поле задания время опроса ELM (в мс). По умолчанию ELM опрашивается каждые 50 мс, возможно ОС не успевает производить столько опросов и это время необходимо увеличить.
4. Флажок разрешения / запрета ожидания целостного пакета. Ждать от ELM целого ответа совсем не обязательно (это просто удобно для лога) так как передача идет в асинхронном режиме, возможно из-за этого ожидания и появляются TimeOut expireded.