【发布时间】:2013-10-20 19:56:59
【问题描述】:
我正在为 OBD 开发 android 应用程序。 我已经在线程中编写了与 OBD 设备代码的蓝牙连接。 该线程适用于某些设备,但处理器非常好的设备有问题。
请告诉我如何管理这些设备?
提前谢谢你。
【问题讨论】:
标签: android multithreading bluetooth obd-ii
我正在为 OBD 开发 android 应用程序。 我已经在线程中编写了与 OBD 设备代码的蓝牙连接。 该线程适用于某些设备,但处理器非常好的设备有问题。
请告诉我如何管理这些设备?
提前谢谢你。
【问题讨论】:
标签: android multithreading bluetooth obd-ii
所以,如果我说对了,你的代码执行得太快了吗?如果您发送 1 个命令,然后什么也没有,它可以正常工作吗?
我能想象的唯一问题是您发送命令的速度太快了。您将不得不采取一种巧妙的方式向 OBD 设备发送命令,或者在发送命令后让线程休眠。根本问题是你的设备可以发送多个命令,而 obd-ii 设备没有先处理它,然后它一次读取多个命令,这让他感到困惑。
更新:
当您发送命令时,OBD 协议会发送命令,并且 ECU 会根据命令做出响应,并且会响应您。在此期间,OBD-II 设备不遵循任何其他说明。在响应之后,它会查看缓冲区并处理该命令。将其视为一次只能处理 1 个命令的单个线程。
标准,OBD-ii 设备等待的时间是 200 毫秒。然后它会向您发送回复。您可以通过将超时设置得较低来更改此设置。 (查看 ELM-327 的 AT 命令),或在命令后添加 1,以便 OBD-II 设备知道当他找到 1 个可能的答案时它应该做出响应。
【讨论】: