2017-07-02 29 views
0

我想使用OBD2藍牙/ USB適配器測量我汽車油箱內的當前燃油油位。如何從Wagon R 2010型號獲得OBD2燃油油位讀數

當我嘗試查詢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) 

任何人可以在這裏建議如何獲得當前在車內的燃料水平。正如我可以在我的面板上看到的酒吧標誌。

+0

正如我所知的一些汽車這些數據可能不可見使用OBD2有沒有方法可用於計算汽車目前的燃料水平... –

+0

你可以找出你的罐支持哪些PID與測試PID 0x00 ,0x20,0x40等等。它會以4個字節作爲響應,每個字節顯示你是否有該PID。然後你可以有一個計劃如何獲得你的燃料水平。 – Mogi

+0

感謝您的回覆Mogi您能向我展示如何放入OBD2代碼的快速示例我猜你在評論中提到的pid是模式1.請您驗證一下。 –

回答

1

爲了獲取所有可用的PID的車輛,你有權要求在第一下面的PID酷似你問車輛的轉速:

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

例如,當您請求PID 0x00時,ECU將返回4個字節,這意味着它是否支持來自0x01 - 0x20的PID。每個字節總共有8位,總共32位,從PID 0x01到PID 0x20。現在是解析數據的時候了。如果每一位都是1,則意味着ECU將支持並且不支持。這是你的責任做一些按位操作來翻譯這些位:

你也可以看看這個Wikipedia link它顯示在圖形!

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

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

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

....

字節4位7:PID的可用性0x1F

字節4 bi t 8:PID的可用性0x20 - >這裏ECU告訴你是否在下32個PID中支持任何PID。如果它是0,則不需要再檢查!

解析並收集所有支持的PID之後,您可以有一個路線圖來計算或檢查每個您想要的PID。由於計算的複雜性,不要忘記很多轉換率在維基百科中的公式是錯誤的。你必須閱讀ISO 15031 part 5,不要忘記ECU只給​​你排放相關的診斷信息,而不是所有的數據。