问题标签 [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.
android - BluetoothChat-to-ELM327 拆分响应消息
我正在尝试使用 Android BluetoothChat 示例与 ELM327 OBDII 蓝牙加密狗进行通信。我可以毫无问题地连接到设备,并且从 BluetoothChat 到 ODBII 设备的消息似乎被设备正确传输和接收。
但是,来自 OBDII 设备的响应消息通常被拆分为多个消息、加扰或缺少字符。
例如,需要三次尝试该ati
命令才能收到完整的预期响应:
Me: ati
OBDII: a
OBDII: 327
OBDII: 327
OBDII: 327 v1.5 >
Me: ati
OBDII: 1
OBDII: 1
OBDII: 1.5 >v
OBDII: 1.5 >
Me: ati
OBDII: ELM327 v1.5 >
同样,发送010c
应触发包含三个十六进制对的单行响应。相反,我通常(但不总是)得到如下结果:
Me: 010c
OBDII:
OBDII: 4
OBDII: 3C
OBDII: 3
OBDII: 3C C
OBDII: 3C
OBDII:
OBDII:
OBDII: >
我尝试了几种不同的波特率和不同的 OBDII 协议,但更改默认设置似乎只会让事情变得更糟。我的响应消息处理有问题吗?为什么响应消息分裂?蓝牙加密狗与可用的应用程序(如 Torque)正常工作,所以我认为设备没有故障。
我使用的代码几乎与 BluetoothChat 项目相同(来源此处)。我只修改了我的蓝牙设备的 UUID 并在传出消息中添加了一个回车符(根据这个 StackOverflow问题)。
更改 1(在 BluetoothChatService.java 中):
更改 2(在 BluetoothChat.java 中):
android - Android OBD 命令响应未以十六进制显示
我正在使用距离命令(0131\r)从 Car 获取 Obd 响应。但是我得到的距离命令的响应是:N10DO DATA、0PS0DDP、0O0S、ADE,这些不是十六进制的。那么我该如何处理呢?
java - Java (Android) 中的 IOException:传输端点未连接
在我的 Android 应用程序中,该应用程序是从这个问题的答案中复制而来的(然后由于三星 Galaxy 标签的 UUID 相关问题而略有更改),我通过蓝牙成功连接到 OBD 设备。
然后,当我尝试发送任何命令(由 sendData() 完成)时,会引发来自标题的异常(未连接传输端点)并且什么都不会发送。
当我连接到我的计算机时(代码的唯一区别是硬件地址),我可以毫无问题地发送命令(当然,我没有得到任何响应,因为计算机不是 OBD 设备)。因此,我相信我获得了所需的所有权限,并且 UUID 地址也很好。
EDIT1:我再次在平板电脑上安装了 Komunikacija.apk。我只添加了一些评论,遇到了两个新问题:
- openBT() 中的 mmSocket.connect() 失败(在最后一次 toast "5" 之后很长时间没有任何反应)
- 如果蓝牙关闭,应用程序会显示打开蓝牙的请求,但随后“不幸停止”。
编辑2:
我再次上车并在三星手机上测试该应用程序,并在平板电脑上再次测试。结果:
- 平板电脑:
- 第一次运行应用程序时,EDIT1 中提到的连接没有成功。
- 我在接下来的所有尝试中都成功了,但是抛出了 IOException:
- 当我第一次按下按钮 SEND 时,exception.getMessage() 返回Connection reset by peer
- 每次下一次,我都会收到消息传输端点未连接
- 电话:我在第一次尝试时就成功建立了连接,其他一切都一样
EDIT3:我发现 OBD 设备 EML327 至少是问题的一部分,因为今天,我测试了另一个 OBD 设备(OBDLink LX),如果我使用它,一切正常。现在,问题是
如果我使用 OBD327,为什么这两个 OBD 设备的行为完全不同以及如何修复发生的错误?
EDIT4:我之前没有发现这很重要,但我的 EML327 的唯一响应是 AT+BRSF=24。谷歌搜索后,我找到了答案。
我的 MainActivity.java:
android - Android OBD 行驶距离命令不提供数据
我已将我的 android 应用程序与蓝牙 OBD 设备连接起来。现在,在运行诸如车速、转速、环境空气温度等命令时,我得到了所需且正确的响应,但是当我点击距离命令(0131\r)时,我再次得到响应 NO DATA。请帮我解决这个问题。
android - 在 Windows 8.1 上通过蓝牙与 Android 设备进行 OBDSim 连接
从昨天开始,我就一直在研究这个话题。我想开发关于 obd-ii 扫描仪的 android 应用程序。Github或Google Codes上有很多开源项目。我必须找到 obd-ii 模拟器来开发这个没有汽车或任何 odb-ii 芯片的应用程序。
我找到了 OBDSim 来创建示例数据并回答我的应用程序发送的请求。我遇到了很多问题,通过阅读很多文档和博文解决了这些问题。但我有最后一个问题,我需要你的帮助。
新版本的 OBDsim 支持 Windows 蓝牙连接现在使用com0com。当我安装 com0com 时,我遇到了签名问题,我解决了这个问题以禁用相关的 Windows 功能。我还将蓝牙的传入端口设置为 COM4。到目前为止一切都很好。之后,我想使用 com0com 创建虚拟端口。它在安装时已经创建了一对。它们是 CNCA0 和 CNCB0。我只是想将这对的第二个端口从 CNCB0 更改为 COM4。但是 windows 给出了关于 COM4 已经在使用的错误。我仍然完成并分配了 COM4 而不是 CNCB0。之后我运行 obdsim.exe 并开始像这样创建日志;
在此期间,我开始使用 android 应用程序并按下开始实时数据按钮。我在安卓手机上给出了关于蓝牙连接错误的错误 - 读取失败,套接字可能关闭或超时。这是一种情况。
在第二种情况下,我删除了中断 com0com 并将 OBDsim 直接连接到 COM4。我再次运行 obdsim.exe。它也具有与之前场景相同的输出。在我开始像这样的 android 应用程序输出更改之后。
而且我看不到我的应用程序有任何变化。
如果您知道问题出在哪里,或者我犯了什么错误或忘记了什么,我正在等待或您的帮助。
谢谢。
obd-ii - OBD ll (elm327) 通过蓝牙进行数据交换
我开发了一个 android 应用程序,它可以从 OBD2 读取(和发送)数据并实时显示。我的问题是读取数据和向 OBD 发送命令的最佳频率是多少?比如我用四个命令依次初始化OBD时,几乎总是失败。但有时它可以成功执行......如果我在命令之间以 500 毫秒的延迟进行初始化,它总是可以的。现在,当我向 OBD 发送命令时,我想等待多长时间才能确保它正常?有没有办法知道它或只是实时尝试不同的延迟?谢谢
embedded - 使用 ELM 327 加密狗和 ISO 9141 直接寻址 ECU
我有一辆大众高尔夫 4,它很旧,在其 CAN 总线上使用 KWP 2000 (ISO 9141)。我使用由 ELM 327 供电的加密狗,连接到汽车的 OBD-2 端口。
我正在尝试单独向每个 ECU 发送消息。我试图更改消息的标题:(
AT SH 48 XX F1
我希望XX
是 ECU ID;48
是“使用物理寻址”的标志)。我发出的任何命令(例如尝试3E
“测试人员在场”)都会返回NO DATA
(我禁用了自动超时并将超时设置为最大值)。
有没有办法直接向ECU发送消息?我对通过 OBD-2 提供的数据集不感兴趣,我也不想重新刷新 ECU。目前我只是试图找出总线上可用的 ECU。
谢谢!
android - Android OBD-II 行驶距离 (PID31)
我正在尝试读取行驶距离,因为使用 Android 应用程序从 OBD 中清除了一些代码。
我已经设法让 RPM 和燃料百分比工作,但行驶的距离比我预期的要高。
有谁知道我哪里出错了?
web-applications - 我可以使用 OBD II 构建 Web 应用吗
我正在寻找创建一个可以显示汽车指标并帮助用户提高汽车性能的 Web 应用程序。经过一些基本的谷歌搜索后,我开始了解 OBD。我见过使用 OBD 的 android 应用程序,但我遇到过任何说 OBD 可以与 Web 应用程序一起使用的东西。谁能告诉我我们是否可以将 OBD 与 Web 应用程序一起使用。
任何有关如何在 Web 应用程序中使用 OBD 的帮助表示赞赏。
提前致谢。