Мне удалось успешно напрямую подключиться к адаптеру Bluetooth ELM327 OBD2 с помощью экрана. Я выполняю следующие команды и получаю:
atz
atl1
ath1
atsp0 <-- use protocol auto, available protocols: 1, 2, 3, 4, 5, 6, 7, 8, 9, A
0100 <-- mode 01, pid 00, supported pids
Response: 48 6B 11 41 00 BE 3F B8 10 CA
Теперь я не имею ни малейшего понятия, что означает вышеприведенное 48 6B 11 41 00 BE 3F B8 10 CA, но я думаю, что это означает, что протокол неверен? Я сделал вывод, что, когда я пытаюсь запустить свой скрипт OBD на Python, я получаю успешное соединение с БД, но не с автомобилем. Если я не укажу протокол и скажу Нет, я не получу соединение с OBD. Он говорит, что порт не существует. Вот мой код:
# OBD setup
obd.logger.setLevel(obd.logging.DEBUG)
# Connect to OBDII adapter
ports = obd.scan_serial()
print("Ports: ")
print(ports)
connection = obd.OBD(ports[0],None,4,False,30,True)
print("Connection status: ")
print(connection.status())
# Print supported commands
commands = connection.supported_commands
print("Supported commands: ")
for command in commands:
print(command.name)
# Send a command
while True:
command = input("Enter command (type 'quit' to exit): ")
if (command == "quit"):
break
try:
res = connection.query(obd.commands[command])
print(res.value)
except Exception as ex:
print("Error: " + str(ex))
# Close the connection
connection.close()
Итоговый журнал:
Ports:
['/dev/rfcomm0']
[obd.obd] ======================= python-OBD (v0.7.1) =======================
[obd.obd] Explicit port defined
[obd.elm327] Initializing ELM327: PORT=/dev/rfcomm0 BAUD=auto PROTOCOL=4
[obd.elm327] Response from baud 38400: b'?\r\r>'
[obd.elm327] Choosing baud 38400
[obd.elm327] write: b'ATZ\r'
[obd.elm327] wait: 1 seconds
[obd.elm327] read: b'\r\rELM327 v1.5\r\r>'
[obd.elm327] write: b'ATE0\r'
[obd.elm327] read: b'ATE0\rOK\r\r>'
[obd.elm327] write: b'ATH1\r'
[obd.elm327] read: b'OK\r\r>'
[obd.elm327] write: b'ATL0\r'
[obd.elm327] read: b'OK\r\r>'
[obd.elm327] write: b'AT RV\r'
[obd.elm327] read: b'14.0V\r\r>'
[obd.elm327] %s is not a valid protocol. Please use "1" through "A"
[obd.elm327] Adapter connected, but the ignition is off
[obd.obd] Cannot load commands: No connection to car
[obd.obd] ===================================================================
Connection status:
OBD Connected
Supported commands:
CLEAR_DTC
ELM_VERSION
MIDS_A
GET_CURRENT_DTC
GET_DTC
PIDS_A
ELM_VOLTAGE
Enter command (type 'quit' to exit): quit
[obd.obd] Closing connection
[obd.elm327] closing port
[obd.elm327] write: b'ATZ\r'
Есть идеи, что мне делать?