【问题标题】:How to have multiple connections to a single Obd2 bluetooth device connected to car如何与连接到汽车的单个 Obd2 蓝牙设备建立多个连接
【发布时间】:2012-09-01 12:07:15
【问题描述】:

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

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

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

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

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

【问题讨论】:

  • @Alice,请不要添加random 代码formatting,它会降低可读性。

标签: android multithreading bluetooth obd-ii


【解决方案1】:

我不是 OBD/OBD-II 方面的专家,但我对串口略知一二。

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

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

【讨论】:

  • 所以唯一的方法是一个线程和单个请求/响应时间?
  • 是的,我认为这是唯一的方法。在en.wikipedia.org/wiki/On-board_diagnostics 上没有提到多路复用连接,只提到了多主冲突解决,这是非常不同的事情。另外,我刚刚找到了一个没有专业软件套件的 ELM327+蓝牙,而且它相当便宜:amazon.com/Soliport-Bluetooth-OBDII-Diagnostic-Scanner/dp/… 但这会像往常一样占用整个 OBD 端口并暴露 1 个串行......只是没有电缆。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-10-10
  • 2016-03-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多