Pyserial,从OBD设备获取额外信息

时间:2013-10-18 17:46:48

标签: python-3.x pyserial obd-ii

我是编程新手,正在尝试使用OBD II设备与我的车辆进行通信。串口转USB。我做了我想做的事,但是我得到了打印出的命令。我如何从设备获取信息?

继承我的代码。我使用的是Python 3.2.3

import serial
import time
import string
import io
import os
import sys
ser = serial.Serial("/dev/ttyUSB1")
ser.baudrate = 38400
s = input('Enter AT command --> ')
print ('AT command = ' + s)
ser.write(bytes(s + '\r\n', encoding = 'utf-8'))
ser.timeout = 1
response = ser.read(999).decode('utf-8')
print(response)
ser.close()  

当我输入命令'atrv'时打印出来的东西。

>>> 
Enter AT command --> atrv
AT command = atrv
atrv
0.1V
>>>

如何防止高于0.1V的'atrv'打印出来?

2 个答案:

答案 0 :(得分:1)

将ATE0发送到ELM设备。

这会禁用回声,因此atrv不会发回给你!

看看这个:http://elmelectronics.com/DSheets/ELM327DS.pdf,很多AT命令的集合,可能会有所帮助!

答案 1 :(得分:0)

在树莓PI上我必须将代码修改为:

import serial
import time
import string
import io
import os
import sys

ser = serial.Serial("/dev/rfcomm0")
ser.baudrate = 115200
s = input('Enter AT command --> ')
print ('AT command = ' + s)
ser.flushInput();
ser.write(bytes(s + '\r\n', encoding = 'utf-8'))
ser.flush();
ser.timeout = 1
response = ser.read(999).decode('utf-8')
print(response)
ser.close()