*Casper*,
доброго времени суток!
по ошибкам мониторинга высокой шины - могу сказать, что для успешного монитора необходимо согласовать скорости потока данных от машины к адаптеру и от адаптера к компьютеру. раз мы слушаем шину с пропускной способностью 500 kbps, значит и com-порт должен работать минимум с этой скоростью. по совместительству, это является максимальной скоростью, поддерживаемой чипом ELM327. изначально от ELM327 не требуется ничего особо быстрого (чтение PIDов можно делать практически на любой скорости, буфер в 256 байт это позволяет), но как только мы начинаем требовать от него чего-то более серьезного, буфер тут же переполняется. чтобы исключить ошибки, надо настроить адаптер на скорость 500kbps вместо родных 38,4, а также открывать порт на компьютере с этой же скоростью. настройки скорости порта ELM выполняется с помощью программируемого параметра 0С. в качестве аргумента используется частное от деления числа 4000 на требуемую скорость в kbps, т.е., чтобы использовать скорость 500000bps, надо использовать команду ATPP0CSV08 и после перезагрузки ELM327 будет использовать новую скорость. тут надо быть осторожным - далеко не все мосты com-usb мосты поддерживают такую высокую скорость, bluetooth вообще не работает выше 38400 bps. соответственно, если не глядя выставить высокую скорость, то, возможно, после перезагрузки уже будет невозможно вообще связаться с адаптером (я свой bluetooth адаптер, не зная, уже как-то убил таким образом

), аппаратный сброс программируемых параметров, описанный в даташите на стр.55, судя по всему, не работает с китайскими адаптерами, по крайней мере, мне свой оживить таким образом не удалось, и я слышал еще о подобных случаях. поэтому, прежде чем менять скорость адаптера, надо простестировать возможность соединения на этой скорости. Процесс подробно описан в даташите на стр. 59, используется команда AT BRD, которая выставляет требуемую скорость и дальше ждет ответа по описанному протоколу, а в случае ошибки возвращает скорость на место. пример такого теста можно посмотреть в моей программе ELMConfig для Ford Focus 2 (последнюю версию 0.1.2.1b можно скачать
здесь).
также немаловажную роль играют собственные задержки USB. естественно, чтобы принимать поток с максимальной скорость, надо эти задержки минимизировать. если адаптер сделан на основе com-usb моста FTDI, то все хорошо, эта задержка под названием Latency Timer легко меняется в свойствах виртуального com-порта. к сожалению, никакие другие производители интерфейсов не позволяют этого делать. возможно, для мониторинга это и не принципиально (пока здесь еще не экспериментировал), а вот время прошивки модуля можно снизить в 2-2,5 раза, изменив значение задержки с 16 до 1 мс.
Был бы Вам крайне признателен, если бы Вы рассказали, как у Вас организован сам процесс мониторинга шины. Вы пробовали мониторить какой-нибудь диагностический сеанс (например, того же IDS)? я пробовал снять лог перепрошивки PCM и у меня возникает затыка. я поступаю следующим образом - включаю заголовки, длинные сообщения, отключаю can-форматирование (чтобы получить строки вида 7xx xx xx xx xx xx xx xx xx), запускаю монитор и в бесконечном цикле анализирую входной поток с помощью регулярного выражения [^ ][^ ][^ ]( [^ ])+ CR, в случае обнаружения строка идет на анализ и в лог и по новой. все идет хорошо на протяжении какого-то времени (может, десяток-два фреймов), а потом просто останавливается и я не знаю, почему. точнее, почему - понятно, вхождения строки, удовлетворяющей маске, перестают находится, но вот почему это происходит - непонятно..
