Показать сообщение отдельно
Старый 28.09.2009, 23:58   #488
el66
Пользователь
 
Регистрация: 27.07.2009
Регион: 66, 96
Машина: 2005 Toyota Allion
Сообщений: 96
el66 is on a distinguished road
По умолчанию

Цитата:
Сообщение от MiD_E34 Посмотреть сообщение
2ell66: Буфферизируются ли как-нибудь поток данных при чтении? Покатался немного с адаптером - иногда такой впечатление, что не успевает все читать
С какой программой катался?
Попробую неможко пояснить по работе адаптера.
Адаптер представляет собой простой транслятор команд, поступающих с COM порта в данные для К-линии. Команда СОМ порта -это строка ASCII символов, заканчивающаяся символом (CR).
Обработка строки в адаптере начинается после приема (CR). Под буфер строки выделено 25 байт. Программа адаптера преобразует принятую ASCII строку в последовательность HEX байтов, дополняет ее 4 служебными байтами и передает сформированный запрос в нужном формате и с необходимыми таймингами в К-линию и ожидает ответа.
Через некоторое время, ECU передает в К-линию ответ в виде HEX последовательности, длина которой определяется значением первого байта. Последовательность складывается в буфер (величина буфера 14 байт), и после приема последнего байта HEX последовательности, производится преобразование HEX->ASCII, формируется строка, добавляется (CR) и стартует передача ответа в COM.
В том случае, если управляющая программа PC, не дождаясь ответа, попытается послать новую команду, то буфер приема будет испорчен, ECU не поймет, о чем его спросили и, соответственно, не ответит.
Кроме того, необходимо учитывать, что протокол тойоты (как, впрочем, и другие протоколы) требует определенных значений как межбайтных пауз во фрейме, так и выдержки времени после окончания передачи ответа ECU и началом нового запроса. Поэтому, при увеличении количества одновременного вывода нескольких параметров, обновление каждого параметра будет замедляться.
Еще можно предположить, что управляющая программа посылает запросы с MODE, несуществующих для даноого ECU. Если в течение 0,2сек ECU не отвечает на запрос, адаптер передает в COM порт сообщение "NO DATA".
Например, типовое время ответа ECU на запрос составляет 30мс, в случае несуществующего MODE время до следующего запроса будет увеличено до 0,2с, поэтому это явление можно принять за подтормаживание.
el66 вне форума   Ответить с цитированием