首页 文章

在等待ECU的OBD数据时,我应该多长时间睡眠?

提问于
浏览
0

我正在使用C#为Windows开发OBD2扫描仪应用程序 . 我希望有人能告诉我等待响应的最佳时间(使用thread.Sleep())来自汽车的ecu,然后再从串口读取响应 .

我正在使用蓝牙适配器进行开发,波特率为9600.我目前的等待时间设置为100毫秒,但我希望能比这更短 . 我只是不想遇到我尝试在端口未准备好时读取数据的情况 . 我希望在平滑的GUI和舒适的误差范围之间取得良好的 balancer .

更新:感谢您的想法 . 处理DataReceived是一个很好的总体思路,但我睡眠线程的原因是我需要每隔一段时间重复轮询一次ECU,以便我可以做更新RPM测量仪等事情 . 我试图找到一个甜点,我从ECU获得尽可能多的代表,而不是压倒它 . 如果我只对它进行一次轮询,那么简单地处理一个事件就可以了,但我需要知道民意调查之间可接受的间隔是多少 . 我肯定会将我的代码更改为事件驱动,但我仍然需要知道民意调查之间有多长时间 .

2 回答

  • 0

    而不是使用Thread.Sleep(),产生一个不断尝试从流中读取的后台线程可能更合适 . 完全读取数据后,触发主线程处理的事件 . 只要你打开了端口,就不会有问题 .

  • 2

    我决定跟随我的汽车内置行程计算机的引导并每1000ms更新一次值,或更准确地说,每秒刷新10个值,一次一个,100ms,200ms,300ms等 .

    我还优先考虑了更频繁变化的事情,例如即时消耗,RPM和一些专门的传感器 . 电池电压,温度和燃料水平之类的事情只需要分别每5,10和20秒进行一次真实的轮询,因此有很多优先次序 .

相关问题