2015-01-02 32 views
4

我正在研究一个应用程序,我需要计算从点A到点B(乘汽车)的距离。Android OBD-II如何清除行驶距离(PID0131)?

我问Elm Electronics(芯片组制造商),他们说没有标准的OBD-II PID来从里程表返回里程数,尽管汽车制造商可能会提供PID。由于这种方式不是标准的,我找到了另一种方式。

PID 0131(代码清除后的距离),正在返回一些我认为可能有用的东西。如果我能够清除它在点A和读取它的价值点B,然后我完成:)

我想了很多猜猜什么是“代码清除”的意思,但我不知道是什么它的意思是?和我的另一个重要问题,如何清除代码或重置此PID?

任何建议,将不胜感激。谢谢。


更新

我只是两辆车进行测试。

  1. 在奔驰汽车没有OBD-II指挥工程。我无法获得任何数据:(
  2. 我在Persona汽车(本地马来西亚)得到了正确的回复,但0x0131 PID总是返回7F01,即使通过几公里后仍然是16608KM。我尝试通过发送04命令重置它(as埃里克在他的回答中建议),但是,没有什么明确的:)我仍然得到了7F01作为回应。

我的库可用于任何正在查找OBD-II lib from here的人。

所以,我打算做的是,因为我能够获得速度(v),那么我可以根据d = v * t公式计算距离。

+0

这里有一个提示,该代码可与任何OBD2阅读器或通过断开电瓶车被清除。基本上,你的方法不起作用。 –

+0

@ElliottFrisch感谢您的快速回复。我实际上使用蓝牙ELM327这是一个阅读器,并连接到我的应用程序。我可以发送代码并获得结果。但我想知道是否可以通过命令重置(清除代码)? – Hesam

+1

根据[this](http://www.elmelectronics.com/ELM327/AT_Commands.pdf)是的。它是'Z'。 –

回答

1

榆树电子是正确的。重置故障码解决方案虽然是可能的,但也许是不必要的解决方法。

模式04用于重置代码。发送04将重置MIL(故障指示灯)并重置您想要重置的代码。

在评论中,克里斯建议使用这个值,而不是自己跟踪这个值。这样您就不需要误用模式04. Th 0131值在65535公里处溢出。但是,当您将车送来进行维护时,他们可以重置此值,具体取决于谁在维修您的车。

来源:Mode 04 - Wikipedia

+0

清除不相关目的的诊断代码听起来不是一个好主意 –

+0

的确,读者,小心!但是,这是他可以使用问题中提到的0131 PID的唯一方式。 –

+1

该值是否快速溢出?否则将原始值除非其他人(如合法的引擎服务)在两者之间将其清除,否则减法应该工作,但这也会打破这种方法。 –