2017-02-26 142 views
0

我想用ELM327通過OBD2記錄數據,而我是Python中的新手。從obd elm327讀取數據python-OBD

我可以發送命令並獲得響應。但是我不能發送更多的查詢並獲得響應,僅針對第一個命令,其餘響應是「無」。

我的代碼:

import obd, time 


connection = obd.OBD(baudrate=38400, fast=True) # auto-connects to USB or RF port 


while True: 
    for i in commands_list: 
     cmd1 = obd.commands.RPM  # select an OBD command (sensor) 
     response1 = connection.query(cmd1) # send the command, and parse the response 
     print(response1.value) # returns unit-bearing values thanks to Pint 
     # connection.close() 

     cmd2 = obd.commands.COOLANT_TEMP # select an OBD command (sensor) 
     response2 = connection.query(cmd2) # send the command, and parse the response 
     print(response2.value) 
     # connection.close() 
     time.sleep(0.5) 

輸出爲:(與停止的發動機,在點火)

0.0 revolutions_per_minute 
None 
0.0 revolutions_per_minute 
None 
0.0 revolutions_per_minute 
None 

預期的輸出:

0.0 revolutions_per_minute 
91 degC 
0.0 revolutions_per_minute 
91 degC 
0.0 revolutions_per_minute 
91 degC 

它與關閉連接工作得到每個迴應後,但它真的很慢...我喜歡在最大後得到迴應。 1秒。最佳時間至少爲0.5秒。

有沒有人有這方面的想法或經驗? 在此先感謝。

回答

0

的解決方案是設置快速模式爲false:

connection = obd.OBD(baudrate=38400, fast=False) 

功能描述:

快:允許命令被髮送到汽車前進行優化。 Python-OBD目前進行了兩次這樣的優化:

發送回車以重複上一個命令。在命令結尾附加 響應限制,告知適配器在收到N個響應(而不是等待並且最終超時)後返回 。對於 個別命令,可啓用和禁用此功能。 禁用快速模式將保證python-OBD爲每個請求輸出未改變的命令。

來源:LINK