Swift, как отправить AT-команды на устройство OBD2?

Я уже знаю, как установить соединение Wi-Fi с адаптером OBD2, но я понятия не имею, как запросить информацию с него. Например, 010C — это команда для возврата оборотов двигателя в шестнадцатеричном формате, но как я могу отправить «010C» на адаптер OBD2? Я могу найти ответы и даже фреймворки OBD для таких языков, как Java и Python, но ничего для быстрого. Спасибо.


person modernwar24    schedule 01.07.2016    source источник


Ответы (3)


Наша реализация Java требует преобразования строковых сообщений, таких как «010C» или «ATZ», в byte[] и последующей отправки этих байтов на адаптер OBD2. Я полагаю, вам придется сделать то же самое для быстрого.

Вот ресурс по работе с адаптерами OBD2, который может вам помочь: http://elmelectronics.com/DSheets/ELM327DS.pdf

person Nicholas Ackerman    schedule 03.07.2016

Если вы уже установили связь сокета с WiFi-адаптером, то либо привяжите сокет к паре NSStream и отправляйте/получайте данные, используя их, либо используйте CoreFoundation API или низкоуровневый posix API для отправки/получения данных.

Скорее всего, вам может понадобиться что-то более высокоуровневое. Я создал библиотеку OBD2 для iOS и macOS по адресу https://github.com/mickeyl/LTSupportAutomotive. Он написан на Objective-C, и для того, чтобы сделать его полезным для вас, потребуются соединительные заголовки Swift, но это может быть хорошим способом глубже погрузиться в тему.

person DrMickeyLauer    schedule 25.10.2016

Вам необходимо знать протокол OBD, такой как: ISO 9141-2, KW-2000, ISO 14230-4, SAE J1850 и CAN ISO 15765-4 (11 бит или 29 бит).

Ознакомьтесь с этим справочником, чтобы получить дополнительную информацию.

Вы можете найти PID OBD2 здесь.

person HiKi    schedule 26.07.2021