我正在制作一个通过蓝牙连接到OBD-II设备(ELM327 - http://www.dx.com/p/elm327-bluetooth-odb2-v1-5-car-diagnostic-interface-126921#.V86wdih97IU)的安卓应用程序。
我还使用https://github.com/pires/obd-java-api/库从设备中获取数据。
我可以连接到设备并获取数据,没有任何问题,但当我尝试检索距离时,它总是返回以公里为单位的数据。有没有办法用米来计算行程的距离呢?
我试过使用Torque Lite应用程序(https://play.google.com/store/apps/details?id=org.prowl.torquefree&hl=en),它能够返回以公里为单位的行程,小数点后一位(0.0公里)。
想知道它使用什么命令来实际获得值,或者它是从其他东西派生出来的。
发布于 2016-09-09 00:51:57
不幸的是,行驶距离的标准PID根本不存在。有关标准PID的列表,请参阅this。
现在使用的代码DistanceSinceCCCommand使用标准模式01 PID 0x31来检索自上次清除代码命令以来行驶的距离。PID的单位为整数公里,因此无法提供所需的精度。
我试过使用Torque Lite应用程序(https://play.google.com/store/apps/details?id=org.prowl.torquefree&hl=en),它能够返回带有小数点后一位的行程距离(0.0公里)。
torque应用程序使用来自android设备的定位(GPS)信息来记录地理位置。我猜它是使用这些信息来确定行程距离,精度为0.1公里。
推荐
如果你需要这样的准确性,我建议你跟随他们的领导,使用位置数据来确定行驶的距离。
使用google location api和Location.distanceTo(location)中的位置侦听器来确定增量位置更改。
有关增强型PID的更多信息
增强型PID(也称为DID)是特定于车辆的模式22参数。
还有许多其他未公开记录的车辆参数,它们可能会提供更好的精度。它们是特定于车辆的(但通常是同一制造商的车辆子集所共有的)。它们是模式22增强型PID。Here's a list of old Ford DIDs。如果有人能找到更新的模式22 DID列表,请编辑我的帖子并添加它,因为我知道有很多比我公开提供的更多。
发布于 2016-09-08 23:49:13
您可以读取OBD-II模式1,PID 0D以获得定期间隔的速度。如果你经常阅读,并应用距离=速度*时间计算,这将给出一个以米为单位的不错的距离读数。
发布于 2017-02-15 05:36:43
大多数类都实现了
ObdCommand 它有一个方法
useImperialUnits(boolean)所以,如果你使用,比如说,DistanceSinceCCCommand,那么
DistanceSinceCCCommand distanceSinceCCCommand = new DistanceSinceCCCommand();
distanceSinceCCCommand.useImperialUnits(true);会进行转换。如果你检查一下库的源代码,你会发现一些有趣的东西。
https://stackoverflow.com/questions/39348702
复制相似问题