2015-04-19 96 views
0

我在获取Python OBD2读取程序的正确速度时遇到了一些问题。即使我没有移动,它仍然保持在13。我已经将我的代码从git集线器上的pi2go中取出。尽管不管speed_float的值总是从十六进制转换为浮点数。OBD2 Python获取速度

def speed(self, oldValues): 
    """ Gets the speed of the vehicle """ 
    if self.serialIO is None: 
     return "Serial IO not setup." 
    self.serialWrite("0D") 
    speed_list = self.serialRead() 
    if speed_list == -1 or speed_list == 0: 
     print("There is an issue with reading the speed of the vehicle.") 
     return 0 
    else: 
     speed_hex = speed_list[0] 
     speed_float = float(int("0x" + speed_hex, 0)) 
     print("Speed float = " + str(speed_float)) 
     if speedFormat == "mph": 
      # display speed in miles per hour 
      #speed_float = speed_float * 0.621371 
      speed_float = speed_float * 1.609 - 20.917 #made it go to zero by subtracting 20.917 

      print("mph = " + str(speed_float)) 
     elif speedFormat == "kph": 
      # display speed in kilometers per hour 
      print("kph = " + str(speed_float)) 
      return speed_float 
     else: 
      # error 
      print("Configuration is wrong. Please check config.py for speedFormat") 
    return speed_float 

当我将mph值设为零后,它保持为零。它永远不会改变。上面的公式使得它有点像8.0。我的问题是如何获得实际的速度。

+0

你配置了本地回显的串口吗? – rfkortekaas

+0

rkorekaas - 其他一切正在工作。 RPMs进气温度等我只是无法得到速度正常工作。 – crzyone9584

回答

0

在研究这个问题时,我浪费了时间研究这个问题,我在git hub上发现了一个Java开源项目,它正在做同样的事情。而不是使用列表中的第一个位置,它使用第二个位置。取而代之的

speed_hex = speed_list[0] 

我改成了

speed_hex = speed_list[1] 

现在正常工作。