Tag: ELM327

一起发送多个OBD命令并同时获得响应

我正在研究连接OBD2适配器并获取速度,转速,节气门位置等实时数据的应用程序。当我一次读取一个命令时,它通过发送命令“010C \ r”正常工作,我得到当前RPM。 我认为在一个请求中发送多个命令是不可能的。但是在像EngineLink HD,Dashcommand这样的其他应用程序中,我们发现多个组件是一次更新的,就像我们驾驶汽车并检查RPM,Sped和Throttle一样正在每1秒更新一次。 它看起来像实时数据。 我很惊讶,这怎么可能? 我们添加了一些代码,如用户想要显示3个组件,然后为每个组件生成一个线程,并处理该命令的请求和响应。 所以在这种情况下,生成3个线程,我们得到响应,但是如果我们在3个PID中观察速度,则花费太多时间,然后在3-4秒延迟之后更新速度。 我们还需要locking发送请求的代码,并获得响应bcoz OBD2适配器一次处理一个请求和响应。 如果我们不locking代码,那么我们得到不可预知的结果,这可能是由于应用程序和obd2适配器之间的套接字通信所使用的公用共享stream所致。 但是现在我想一次读多个命令。 我的意思是在某个时间点,我想知道速度,转速和油门位置等。所以我想发送一个请求上面的命令,并得到一个响应。 这怎么可能 ? 有人可以指导我。