Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/186.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android OBD-II如何清除行驶距离(PID0131)?_Android_Obd Ii - Fatal编程技术网

Android OBD-II如何清除行驶距离(PID0131)?

Android OBD-II如何清除行驶距离(PID0131)?,android,obd-ii,Android,Obd Ii,我正在开发一个应用程序,需要计算从A点到B点(开车)的行驶距离 我问过(芯片组制造商),他们说没有标准的OBD-II PID从里程表返回里程,尽管汽车制造商可能会提供PID。因为这种方法不标准,所以我找到了另一种方法 (代码清除后行驶的距离),返回了一些我认为可能有用的信息。如果我能够在A点清除它,并在B点读取它的值,那么我就完成了:) 我想了很多来猜测“代码清除”是什么意思,但我不知道它是什么意思?我的另一个重要问题是,如何清除代码或重置PID 如有任何建议,将不胜感激。谢谢 更新 我刚测试

我正在开发一个应用程序,需要计算从A点到B点(开车)的行驶距离

我问过(芯片组制造商),他们说没有标准的OBD-II PID从里程表返回里程,尽管汽车制造商可能会提供PID。因为这种方法不标准,所以我找到了另一种方法

(代码清除后行驶的距离),返回了一些我认为可能有用的信息。如果我能够在A点清除它,并在B点读取它的值,那么我就完成了:)

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

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


更新 我刚测试了两辆车

  • 奔驰轿车上没有OBD-II指令。我无法获取任何数据:(
  • 我在Persona car(马来西亚本地)上得到了正确的回复,但0x0131 PID始终返回7F01,即16608KM,即使经过几公里。我试图通过发送04命令(正如Eric在回答中所建议的那样)来重置它,但是,什么都不清楚:),我仍然得到7F01作为响应
  • 我的库可用于任何正在寻找OBD-II库的人


    所以,我计划做的是,既然我能够得到速度(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的首次读数分别为YZ,并且XY是这两个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感谢您的回复。我还没有测试,但根据你的参考,我认为它是正确的。“很快就会测试的。”埃里克斯梅肯,你有长途旅行吗?我也必须这样做。让我知道任何解决方案。简单的乘法在这里不能给出正确的答案。您需要获得行程持续时间内速度读数的积分。