OBD2 Python 加速
OBD2 Python Getting Speed
我在从我的 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。我的问题是如何获得实际速度。
在浪费时间研究我遇到的这个问题后,我在 git 集线器上发现了一个 Java 开源项目在做同样的事情。它没有使用列表的第一个位置,而是使用了第二个位置。而不是
speed_hex = speed_list[0]
我改成了
speed_hex = speed_list[1]
它现在可以正常工作了。
我在从我的 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。我的问题是如何获得实际速度。
在浪费时间研究我遇到的这个问题后,我在 git 集线器上发现了一个 Java 开源项目在做同样的事情。它没有使用列表的第一个位置,而是使用了第二个位置。而不是
speed_hex = speed_list[0]
我改成了
speed_hex = speed_list[1]
它现在可以正常工作了。