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

How to get OBD2 Fuel Level reading from Wagon R 2010 model

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

当我尝试查询 PID 时,我得到了以下数据 "NO DATA",同时我可以检查其他 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)

任何人都可以在这里建议如何获得目前他们车内的燃油水平。正如我在带有条形标志的面板中看到的那样。

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

0x000x200x40、....0x80 等等。

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

你也可以看看这个Wikipedia link,用图形显示!

字节 1 位 1:PID 的可用性 0x01

字节 1 位 2:PID 的可用性 0x02

字节 1 位 3:PID 的可用性 ox03

.....

byte 4 bit 7 : PID可用0x1F

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

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