Я уже знаю, как установить соединение Wi-Fi с адаптером OBD2, но я понятия не имею, как запросить информацию с него. Например, 010C — это команда для возврата оборотов двигателя в шестнадцатеричном формате, но как я могу отправить «010C» на адаптер OBD2? Я могу найти ответы и даже фреймворки OBD для таких языков, как Java и Python, но ничего для быстрого. Спасибо.
Swift, как отправить AT-команды на устройство OBD2?
Ответы (3)
Наша реализация Java требует преобразования строковых сообщений, таких как «010C» или «ATZ», в byte[] и последующей отправки этих байтов на адаптер OBD2. Я полагаю, вам придется сделать то же самое для быстрого.
Вот ресурс по работе с адаптерами OBD2, который может вам помочь: http://elmelectronics.com/DSheets/ELM327DS.pdf
Если вы уже установили связь сокета с WiFi-адаптером, то либо привяжите сокет к паре NSStream
и отправляйте/получайте данные, используя их, либо используйте CoreFoundation
API или низкоуровневый posix
API для отправки/получения данных.
Скорее всего, вам может понадобиться что-то более высокоуровневое. Я создал библиотеку OBD2 для iOS и macOS по адресу https://github.com/mickeyl/LTSupportAutomotive. Он написан на Objective-C, и для того, чтобы сделать его полезным для вас, потребуются соединительные заголовки Swift, но это может быть хорошим способом глубже погрузиться в тему.
Вам необходимо знать протокол OBD, такой как: ISO 9141-2
, KW-2000
, ISO 14230-4
, SAE J1850
и CAN ISO 15765-4
(11 бит или 29 бит).
Ознакомьтесь с этим справочником, чтобы получить дополнительную информацию.
Вы можете найти PID OBD2
здесь.