无法从Raspberry Pi上的OBD2串行端口连接读取数据

时间:2015-06-01 14:01:45

标签: raspberry-pi obd-ii

我目前正在为学校开展覆盆子项目,在那里我从车上读取OBD2到usb检查员的数据。

当我使用Screen连接到串口时,一切正常,但是当我尝试在python中执行时,serial.readline()返回一个空字符串。

有人知道如何从python中的串口检索数据吗?

我已经尝试了所有可用的选项。

import serial

ser = 0

#Function to Initialize the Serial Port
def init_serial():

    global ser         
    ser = serial.Serial()
    ser.baudrate = 38400   
    ser.port = '/dev/ttyUSB0' 
    ser.timeout = 1
    ser.open()          #Opens SerialPort

    # print port open or closed
    if ser.isOpen():
    print 'Open: ' + ser.portstr
    #Function Ends Here

init_serial()

temp = raw_input('Type what you want to send, hit enter:\r\n')
ser.write(temp)         #Writes to the SerialPort

while 1:    
      bytes = ser.readline()  #Read from Serial Port
      print bytes      #Print What is Read from Port

2 个答案:

答案 0 :(得分:0)

您可能无法发送有效数据以获得回复。我相信ODB2接口使用AT命令集。发送AT \ n可能是一个很好的起点。

我正在使用蓝牙ODB2接口,发现串行波特率是固定的。使用任何其他波特率无法正确获取数据。

我建议从支持串口的putty或其他终端进行测试,直到让设备正确响应。然后使用有效设置对代码进行故障排除。

答案 1 :(得分:0)

您没有使用命令发送\ r \ n,ELM327在命令末尾需要换行符号。