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