如何从Wagon R 2010型号获得OBD2燃油液位读数

时间:2017-07-02 11:28:47

标签: obd-ii

我想使用OBD2蓝牙/ USB适配器测量汽车油箱内的当前燃油油位。

当我尝试查询PID时,我将后续数据称为“无数据”,同时我可以检查其他PIDS,如RPM,所有数据都可以。

我有一个小的python程序,它读取它但我无法得到它。

import serial

#ser = serial.Serial('COM12',38400,timeout=1)
#ser.write("01 2F \r")
#speed_hex = ser.readline().split(' ')
#print speed_hex
#convert hex to decprint ("SpeedHex",speed_hex)
#speed = float(int('0x'+speed_hex[3],0))
#print ('Speed',speed,'Km/h')
ser1 = serial.Serial("COM12",38400,timeout=1)
#ser1.write("ATZ \r")
#ser1.write("ATE0 \r")
#ser1.write("ATL0 \r")
#ser1.write("ATH1 \r")
#ser1.write("ATSP 5 \r")
ser1.write("01 0C \r")
fuel_hex= ser1.readline()
print fuel_hex
#convert to hex to decprint ("FuelHex",fuel_hex)
#fuel = float(int('0x'+fuel_hex[3],0))
#print ("Fuel in Per",fuel)

任何人都可以在这里建议如何在当前时间获得汽车内部的燃油油位。正如我在带有条形符号的面板中看到的那样。

1 个答案:

答案 0 :(得分:1)

为了获得车辆中所有可用的PID,您必须首先请求以下PID,就像您询问车辆的转速一样:

0x000x200x40,...... 0x80等等。

例如,当您请求PID 0x00时,ECU将返回4个字节,这意味着它支持来自0x01 - 0x20的PID。每个字节总共有8位,共32位,完全是从PID 0x01到PID 0x20。现在是解析数据的时候了。如果每个位为1,则表示ECU将支持,0表示不支持。你有责任做一些按位操作来翻译这些位:

另外,你可以看一下图形中显示的Wikipedia link

字节1位1:PID 0x01

的可用性

字节1位2:PID 0x02

的可用性

字节1位3:PID ox03

的可用性

...

字节4位7:PID 0x1F

的可用性

字节4位8:PID 0x20的可用性 - >这里ECU告诉您是否支持接下来的32个PID中的任何PID。如果是0,则不需要再检查了!

解析并收集所有支持的PID后,您可以制定路线图来计算或检查所需的每个PID。不要忘记许多转换率由于计算的复杂性,维基百科中的公式是错误的。您必须阅读ISO 15031 part 5并且不要忘记ECU仅为您提供与排放相关的诊断而不是所有数据。