Android OBD-II如何清除行驶距离(PID0131)?
我正在开发一个应用程序,需要计算从A点到B点(开车)的行驶距离 我问过(芯片组制造商),他们说没有标准的OBD-II PID从里程表返回里程,尽管汽车制造商可能会提供PID。因为这种方法不标准,所以我找到了另一种方法 (代码清除后行驶的距离),返回了一些我认为可能有用的信息。如果我能够在A点清除它,并在B点读取它的值,那么我就完成了:) 我想了很多来猜测“代码清除”是什么意思,但我不知道它是什么意思?我的另一个重要问题是,如何清除代码或重置PID 如有任何建议,将不胜感激。谢谢Android OBD-II如何清除行驶距离(PID0131)?,android,obd-ii,Android,Obd Ii,我正在开发一个应用程序,需要计算从A点到B点(开车)的行驶距离 我问过(芯片组制造商),他们说没有标准的OBD-II PID从里程表返回里程,尽管汽车制造商可能会提供PID。因为这种方法不标准,所以我找到了另一种方法 (代码清除后行驶的距离),返回了一些我认为可能有用的信息。如果我能够在A点清除它,并在B点读取它的值,那么我就完成了:) 我想了很多来猜测“代码清除”是什么意思,但我不知道它是什么意思?我的另一个重要问题是,如何清除代码或重置PID 如有任何建议,将不胜感激。谢谢 更新 我刚测试
更新 我刚测试了两辆车
所以,我计划做的是,既然我能够得到速度(v),那么我就能够根据
d=v*t
公式计算距离。Elm Electronics是正确的。重置故障代码解决方案是可能的,但可能是不必要的解决办法
模式04用于重置代码。发送04将重置MIL(故障指示灯)并重置要重置的代码
在评论中,Chris建议使用该值,然后自己跟踪该值。这样你就不需要滥用模式04。
Th 0131值在65535 km处溢出。但当你们把车带进来维修时,他们可能会重置这个值,当然这取决于谁在维修你们的车
来源:我认为您可以使用PID 0x011F(自发动机启动后的运行时间)和PID 0x010D(车速)。如果将这些值保存在sd卡中,则可以将这两个值相乘 有两个PID:0x0121
在故障指示灯(MIL)亮起时行驶的距离
保持MIL亮起时的距离,以及0x0131自代码清除后行驶的距离保持使用模式0x04清除MIL后的距离。所说的代码是指诊断故障代码(DTC)。当其中一个持续计算距离时,另一个是固定的,仅根据MIL on或off对其进行激活
对于milage,afaik,除了这两个PID之外,您还需要使用里程表的当前里程作为参考。例如,如果里程表*上的当前里程数为X,这两个PID的首次读数分别为Y和Z,并且X和Y是这两个PID的实时读数,则这两个公式可以为您提供里程和行程距离:
Real-Time mileage** = X + (y - Y) + (z - Z)
Trip distance (MIL Off) = x(end) - x(start)
Trip distance (MIL On) = y(end) - y(start)
*里程表应该通过PID0x01A6里程表
提供,但几乎所有车辆都不支持
**还应考虑这两个PID的读数溢出。这里有一个提示,可以使用任何obd2读取器或断开汽车蓄电池来清除代码。“基本上,你的方法是行不通的。”ElliottFrisch感谢你的快速回复。我实际上使用的是蓝牙ELM327,它是一个读卡器,并连接到我的应用程序。我可以发送一个代码并得到结果。但我想知道我可以通过命令重置(清除代码)吗?根据是。这是
Z
。我有一个Actron,所以我实在帮不了你。。。祝你好运@海德先生,不,你应该在某个地方(在内存中,如列表或数据库中)阅读v
persecond,然后将它们全部添加到一起,以找到最终的距离。为不相关的目的清除诊断代码听起来不是个好主意。的确,读者们,要当心!然而,这是他利用问题中提到的0131 PID的唯一方法。该值是否会很快溢出?否则,除非其他人(如合法的引擎服务)在两者之间清除原始值,否则存储原始值进行减法应该是可行的,但这也会破坏这种方法。@EricSmekens感谢您的回复。我还没有测试,但根据你的参考,我认为它是正确的。“很快就会测试的。”埃里克斯梅肯,你有长途旅行吗?我也必须这样做。让我知道任何解决方案。简单的乘法在这里不能给出正确的答案。您需要获得行程持续时间内速度读数的积分。