我正在尝试使用Java库通过串行端口使用OBD2协议与汽车进行通信。协议很简单:发送ASCII字符串(例如“01 0d”),汽车以ASCII值回答。我在网上找到了很多库,但是在示例中有一个我不理解的概念。在每个发送命令之后,程序员调用sleep
。这是为什么?例如:
send(pid)
sleep(200)
receive(response)
我不明白,因为read
是一个阻塞函数调用,所以我应该能够等待read
。为什么要对sleep
进行额外调用?
答案 0 :(得分:0)
答案 1 :(得分:0)
如果您通过硬件接口(如OBDKey或类似的基于ELM327的设备),则会为您处理协议时序,因此不太可能是睡眠延迟的原因。
你是对的,读取确实阻止了。但请注意,在建立COM /串行端口参数时,读取机制中可能会设置超时。在这种情况下,当超时到期时,对read的调用返回一些或没有数据。