OBD2 Python获取速度

时间:2015-04-19 20:22:03

标签: python pyserial obd-ii

我从Python OBD2阅读程序中获得正确的速度时遇到了一些麻烦。即使我不动,它也会保持在13。我把我的代码基于git hub上的pi2go。虽然无论speed_float值是什么,一旦从十六进制转换为浮点数,总是13。

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一样。我的问题是如何获得实际速度。

1 个答案:

答案 0 :(得分:0)

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

speed_hex = speed_list[0]

我把它改成了

speed_hex = speed_list[1]

现在可以正常使用。