首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Android OBD-II:如何获得以米为单位的距离?

Android OBD-II:如何获得以米为单位的距离?
EN

Stack Overflow用户
提问于 2016-09-06 20:09:08
回答 4查看 7.1K关注 0票数 4

我正在制作一个通过蓝牙连接到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公里)。

想知道它使用什么命令来实际获得值,或者它是从其他东西派生出来的。

EN

回答 4

Stack Overflow用户

发布于 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 apiLocation.distanceTo(location)中的位置侦听器来确定增量位置更改。

有关增强型PID的更多信息

增强型PID(也称为DID)是特定于车辆的模式22参数。

还有许多其他未公开记录的车辆参数,它们可能会提供更好的精度。它们是特定于车辆的(但通常是同一制造商的车辆子集所共有的)。它们是模式22增强型PID。Here's a list of old Ford DIDs。如果有人能找到更新的模式22 DID列表,请编辑我的帖子并添加它,因为我知道有很多比我公开提供的更多。

票数 7
EN

Stack Overflow用户

发布于 2016-09-08 23:49:13

您可以读取OBD-II模式1,PID 0D以获得定期间隔的速度。如果你经常阅读,并应用距离=速度*时间计算,这将给出一个以米为单位的不错的距离读数。

票数 3
EN

Stack Overflow用户

发布于 2017-02-15 05:36:43

大多数类都实现了

代码语言:javascript
复制
ObdCommand 

它有一个方法

代码语言:javascript
复制
useImperialUnits(boolean)

所以,如果你使用,比如说,DistanceSinceCCCommand,那么

代码语言:javascript
复制
DistanceSinceCCCommand distanceSinceCCCommand = new DistanceSinceCCCommand();
distanceSinceCCCommand.useImperialUnits(true);

会进行转换。如果你检查一下库的源代码,你会发现一些有趣的东西。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39348702

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档