问题标签 [obd-ii]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
15022 浏览

android - 从 OBD 适配器读取 VIN

我正在开发这个应用程序,它需要我从 OBD II 适配器读取 VIN 并检查 OBD 是否连接到同一辆车。当我发送命令(09 02)以获取 VIN 时,我无法获得完整的 VIN。

每次我发送命令时,我都没有收到前 3 个字符。我唯一收到的是 VIN 的最后 7 个字符,有时我会收到前 7 个字符。

无法弄清楚什么是错的。

任何形式的帮助或支持将不胜感激。

0 投票
1 回答
27732 浏览

c# - 如何使用 Windows Phone 8 在 OBD-II 适配器中读取/写入数据?

我目前正在开发一个 Windows Phone 8 应用程序,它(希望)能够使用蓝牙 OBD-II 适配器通过蓝牙连接到车辆。我对 WP8 编程相当陌生,尽管我试图不尝试寻求帮助,但我有点想不通,也不知道该去哪里或该做什么。

此外,如果有人想知道我正在测试连接到汽车的设备,那就是这里的这个人

编辑:: 到目前为止,我已经设置了我的代码来检测蓝牙适配器是否已启用,我目前正在研究(或试图理解)如何向用户显示配对设备,以便他们可以选择一个。但我现在的主要脑块是,如何从 OBD-II 适配器读取(或提取)数据?它在软件文档中说:

为了表示 Kiwi Wifi 或 Kiwi 蓝牙已准备好处理命令,设备将输出一个大于号 (>)。

因此,如果我正确理解了这一点,我需要检查 > ,对吗?但是怎么做?我已经检查了大量来源,但没有一个真正解释如何。我遇到过 IBuffer 之类的东西,但我对此一无所知。

如果我所说的没有意义,那么简单地说。

  • 从 OBD 适配器读取数据
  • 将数据写入 OBD 适配器(软件文档说我需要发送 ASCII 码,我有这些)

如果我能理解如何读/写它,那么我认为我应该能够将数据操作回给用户;我希望。

编辑 2::

0 投票
1 回答
346 浏览

android - 我想要通过蓝牙示例应用程序使用来自 obd 的数据

我想通过使用蓝牙应用程序接收来自 obd 的数据,但是数据是分开的,我必须做什么..???

我想要完整的数据。
帮我!!

日志:

发送数据: s/// erch/// ing

0 投票
1 回答
346 浏览

ios - 使用 GCDAsynSocket api 进行异步值更新

我正在开发一个应用程序,在该应用程序中,我需要使用 OBD 连接器一次更新多个值,例如引擎 RPM、速度等参数。我需要实现异步命令/响应。为此,我使用[gcdAsyncSocket writeData:data withTimeout:-1 tag:uniqueTag];带有唯一标签的异步方式发送命令。

但是当 gcdAsync 的委托方法“socketDidReadDatawithTag”被调用时,它会返回数据但它不正确。例如,如果我发送了一个命令“010C\r”(读取 RPM)和“010D\r”(速度),带有标签263 和 264 ,如果我在 socketDidReadDatawithTag 中解析带有标签 264 的响应,有时它会返回给我 RPM 的数据。(我的响应混淆或 OBD 设备无法处理异步响应)

并且socketdidReadDatawithTag数据和标签不匹配。

0 投票
0 回答
1524 浏览

android - Connecting to ELM327 over Bluetooth (Android)

I am trying to write a simple app (similar to the BluetoothChat example) that will communicate with ELM327 (BT).

Torque (well known Android OBD app) is able to connect OK - its the only one. Neither my test app, nor SENA BTerm, nor android-obd-reader (well-known open source OBD app) is able to connect.

I am using the well-known service UUID 00001101-0000-1000-8000-00805f9b34fb

While the logs show the ACL_CONNECTED event, my code (and android-obd-reader) throws an IOException saying "socket closed or timeout".

These are the logs from my running my test just after calling connect.

Any explanations? I would have put this down to a bad adapter, except that Torque works

0 投票
1 回答
2265 浏览

macos - OS-X 上的 OBD-II 模拟器

有人在mac上安装了OBD-II模拟器吗?我尝试从这个站点下载它——OS-X 的http://icculus.org/obdgpslogger/obdsim.html

安装并打开 ObdGPSLogger 后,我可以看到 GPS 记录器窗口和不同的参数表。但是,在选择 Logfile 和 device 后,什么也没有发生。

在原始输出中,以下是 StdErr 下显示的错误:

如果你们知道原因,请告诉我

0 投票
1 回答
2371 浏览

java - OBD II 命令获取距离

我正在尝试获取用户从上次清除代码时经过的距离

“自代码清除以来的旅行距离”
http://en.wikipedia.org/wiki/OBD-II_PIDs

但我没有得到任何数据。我正在使用这个开源库。 https://github.com/pires/android-obd-reader 我正在用这个参数构造命令

我错过了什么?

0 投票
1 回答
996 浏览

android - 带有 CANCaseXL 工具的 obdII 蓝牙

这是基肖尔

我使用基于 ELM327 的 OBDII 到蓝牙适配器来监控乘用车中的 CAN 流量。换句话说,我们的意图是将 EML327 部署为 CAN2BT 加密狗(用于 CAN 消息接收目的)。

我很想使用 Monitor All 功能来接收车辆中的所有消息(不仅仅是通常通过 OBDII 协议完成的诊断)。我打算使用 ELM327 支持的 AT-MR 和 AT-MT 接口来选择性地收听我们的应用程序感兴趣的消息。

我遇到的问题是,在实验室中,ELM327 连接到 CANCaseXL,在 AT-MA 或 AT-MR 或 AT-MT 模式下,ELM327 不发送任何确认。由于缺少 ACK,尽管 CANcaseXL 以兼容的波特率进行传输,但传输错误会导致 CANcaseXL 进入错误状态。

有没有办法发送一系列专有 AT 命令以将 ELM327 置于不通过 OBDII 诊断协议进行通信的模式,而是通过适当的 ACK 监听原始 CAN 总线活动?

在这方面需要社区的帮助

感谢和问候基肖尔

0 投票
2 回答
11122 浏览

ios - 多条OBD指令同时发送,同时得到响应

我正在开发连接 OBD2 适配器并获取实时数据(如速度、转速、油门位置等)的应用程序。当我一次读取一个命令时,它可以正常工作,就像发送命令“010C\r”一样,我得到了当前转速。

我认为在一个请求中发送多个命令是不可能的。但是在 EngineLink HD、Dashcommand 等其他应用程序中,我们发现多个组件会同时更新,例如,如果我们正在驾驶汽车并检查 RPM、Sped 和 Throttle,那么它们每 1 秒更新一次。它看起来像实时数据。

我很惊讶这怎么可能?

我们添加了代码,例如如果用户想要显示 3 个组件,那么对于每个组件,都会生成一个线程并处理该命令的请求和响应。因此,在这种情况下,生成了 3 个线程并且我们得到了响应,但这需要太多时间,例如如果我们正在观看 3 个 PID 中的速度,那么速度会在 3-4 秒延迟后更新。

我们还需要锁定它发送请求和获取响应的代码 bcoz OBD2 适配器一次处理一个请求和响应。

如果我们不锁定代码,那么我们会得到无法预料的结果,这可能是由于应用程序和 obd2 适配器之间的套接字通信使用的公共共享流造成的。

但现在我想一次读取多个命令。我的意思是在某个时间点,我想知道速度、RPM 和油门位置等。所以我想在一个请求中发送上述命令并一次得到响应。

这怎么可能 ?有人可以指导我。

0 投票
0 回答
239 浏览

javascript - 记录obd数据的最优雅和最有效的方法是什么?

所以我有一个轮询器来轮询设备以获取如下所示的响应:

{"mode":"41","pid":"0C","name":"rpm","value":1817.75}

我有多个具有相似响应的轮询器。说,另一个具有以下响应的轮询器:

{"mode":"41","pid":"05","name":"temp","value":81}

每次轮询以 500 毫秒的间隔进行。我需要以某种形式记录所有这些数据。

现在会发生什么?

我有一个看起来像这样的日志:

我想要达到什么目的?

如下所示的日志:

我需要构造对象,使其看起来像我提到的那样。我确信有一个简单的方法可以做到这一点。另外,如果有更好的方法可以做到这一点,那会是什么?