Почему мой читатель Carloop OBDII сбрасывает байты
Недавно я купил считыватель Carloop OBDII и ECUsim и пытался использовать Carloop для чтения данных из ECUsim. Тем не менее, я столкнулся с проблемой, которую я не могу обойти. Мне трудно поверить, что это ошибка, учитывая, как легко было ее обнаружить, но это поведение кажется мне чрезвычайно странным. Я подключен к каждому устройству через последовательный порт USB, как показано ниже.
У меня есть Minicom, отображающий выходы ECUsim, одновременно разговаривая с устройством Carloop (электрон частиц), используя последовательный монитор Arduino в другом окне. Particle запускает модифицированную версию примера socketcan_serial, которая просто добавляет несколько "Serail.print" для целей отладки. Код по сути читает запросы с компьютера и использует объект Carloop для передачи этих запросов оборудованию Carloop. Единственный ключевой синтаксис, который ПК может использовать для связи с Частицей, это
t<id><len><data>\r Transmits a CAN message
<id> must be 3 character hex number
<len> must be a 1 character hex number
<data> must be the data byte values in hex
Example:
t1234aabbccdd\n transmits message 0x123 with data 0xaabbccdd
Ниже приведена последовательность снимков экрана, показывающая взаимодействие с системой (извините за большой размер).
Если вы знакомы с CAN, то я пытаюсь спросить модуль управления двигателем, какие PID он поддерживает (идентификатор ECU: 0x7E0, режим 1, PID 0x00). Это два байта данных, которые нужно отправить на идентификатор ECU, связанный с модулем управления двигателем. Тем не менее, ECUsim говорит, что он только услышал 1-байтовый запрос, 0x00. Это также происходит с другими идентификаторами ECU, когда байт режима равен 0x01. Обычно я могу подумать, что это своего рода стандарт CAN - режим 1 является режимом по умолчанию и может быть опущен - но если это так, то почему я до сих пор не получаю список поддерживаемых идентификаторов PID? Если кто-то имеет опыт работы с CAN/OBDII и знает, что здесь происходит, пожалуйста, дайте мне знать! Полные догадки также приветствуются.
РЕДАКТИРОВАТЬ: я был в состоянии подтвердить, что плата ECUsim работает, по крайней мере, в некоторой емкости, с помощью другого считывателя OBDII для извлечения оборотов и скорости данных из него.