我必须做一个Android应用程序,它通过蓝牙从连接到汽车OBD-II端口的蓝牙设备读取值。
我使用的是UUID SPP UUID 00001101-0000-1000-8000-00805F9B34FB。
如果我创建了4个想要连接到OBD-II设备的线程,则3 connect()
失败,只有一个线程能够连接到设备。
有没有办法通过蓝牙将更多线程连接到OBD-II设备?
我不知道elm-237
设备是否能够与更多线程通信。
答案 0 :(得分:7)
我不是OBD / OBD-II的专家,但我对串口知之甚少。
实际上,你所看到的并没有让我感到惊讶。串口设备通常必须以独占模式运行,因此只有一个演员可以在一个时间点与他们交谈。为此创建多个线程完全没有意义 - 这不会使您的串口“更快地说话”,也不会使外部设备(OBD芯片)响应更快!这不是网络!要与多个设备并行通信,您需要使用实际的多条电缆 - 可能还有几个芯片。
ELM327是OBD-2电缆中的设备。它可以调节汽车芯片与USB端口之间的通信,并通过USB总线显示虚拟串行端口。我从来没有听说过任何廉价的支持蓝牙的ELM327克隆,但我知道有OBD-II蓝牙适配器 - 我看到的最后一次花费了大约2000美元,因为它带有一个大型诊断软件和汽车零件数据库(罢工:见评论),当然没有任何电缆。但我认为它仍然只能提供1个虚拟串口来与1个设备通信。