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

本文关键字:我应该 长时间 ECU OBD 数据 在等待 | 更新日期: 2023-09-27 18:17:07

我正在使用c#为windows开发OBD2扫描仪应用程序。我希望有人能告诉我在从串口读取响应之前等待汽车ecu响应的最佳时间(使用thread.Sleep())。

我正在使用蓝牙适配器开发,波特率是9600。我目前的等待时间设置为100毫秒,但如果可能的话,我希望能短得多。我只是不想遇到这样的情况,我试图读取数据时,端口还没有准备好。我想在一个流畅的GUI和舒适的错误空间之间得到一个很好的权衡。

更新:谢谢你的想法。处理DataReceived是一个很好的总体想法,但我休眠线程的原因是我需要间隔多次轮询ECU,以便我可以做更新RPM计等事情。我正试图找到一个最佳点,让我从ECU获得尽可能多的代表,而不是压倒它。如果我只轮询它一次,那么简单地处理一个事件就可以了,但是我需要知道轮询之间的可接受间隔是多少。我肯定会把我的代码改为事件驱动的,但我仍然需要知道投票之间的适当时间是多长。

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

比起使用thread . sleep(),生成一个不断尝试从流中读取数据的后台线程可能更合适。当数据被完全读取后,触发一个事件供主线程处理。只要打开了端口,就不会有问题。

我决定效仿我的汽车内置行程计算机,每1000毫秒刷新一次值,或者更准确地说,每秒刷新10个值,每次刷新100毫秒,200毫秒,300毫秒等。

我还优先考虑了那些更经常变化的东西,比如即时消耗、RPM和一些专门的传感器。像电池电压、温度和燃料水平这样的东西实际上只需要分别每5秒、10秒和20秒进行一次轮询,所以有很大的优先级空间。

相关文章: