6

我必须做一个 Android 应用程序,通过蓝牙从连接到汽车 OBD-II 端口的蓝牙设备读取值。

我使用 UUID SPP UUID 00001101-0000-1000-8000-00805F9B34FB 。

如果我创建了 4 个线程想要连接到 OBD-II 设备,3connect()秒失败,只有一个线程能够连接到设备。

有没有办法通过蓝牙将更多线程连接到 OBD-II 设备?

我不知道elm-237设备是否能够与更多线程通信。

4

1 回答 1

7

我不是 OBD/OBD-II 方面的专家,但我对串行端口知之甚少。

其实,你看到的一点也不让我吃惊。串行端口设备通常必须在独占模式下运行,因此只有一个参与者可以在单个时间点与它们交谈。为此创建多个线程完全没有意义——这不会让你的串口“说话更快”,也不会让外部设备(OBD芯片)响应更快!这不是网络!要并行与多个设备通信,您需要实际使用几根电缆 - 可能还需要几个芯片。

ELM327 是您的 OBD-2 电缆中的设备。它调解汽车中的芯片和您的 USB 端口之间的通信,并通过 USB 总线公开一个虚拟串行端口。我从未听说过任何便宜的支持蓝牙的 ELM327 克隆,但我知道有 OBD-II 蓝牙适配器——我见过的最后一个成本约为 2000 美元,因为它配备了一个大型诊断软件和汽车零件数据库(罢工:见评论)当然没有任何电缆工作。但我认为它仍然只提供 1 个虚拟串行端口来与 1 个设备通信。

于 2012-09-01T12:21:52.810 回答