我正在开发一个使用C#的windows的OBD2扫描仪应用程序。我希望有人能告诉我在从串口读取响应之前等待汽车ecu响应的最佳时间(使用thread.Sleep())。
我正在使用蓝牙适配器开发,波特率是9600。我目前已经将等待时间设置为100ms,但如果可能的话,我希望比这个时间短得多。我只是不想遇到在端口未就绪时尝试读取数据的情况。我想在流畅的图形用户界面和适当的错误边际之间取得一个好的平衡。
更新:感谢你的想法。处理DataReceived是一个很好的总体想法,但我休眠线程的原因是我需要每隔一段时间重复轮询ECU,这样我就可以做一些事情,比如更新转速测量仪。我正在试图找到一个甜蜜点,在那里我可以从ECU获得尽可能多的代表,而不会让它不堪重负。如果我只轮询一次,那么简单地处理一个事件就可以了,但我需要知道轮询之间的可接受间隔是多少。我肯定会将我的代码更改为事件驱动的,但我仍然需要知道轮询之间的时间间隔是多长。
发布于 2013-07-12 15:24:38
我决定跟随我的汽车内置行程计算机的指引,每1000毫秒刷新一次数值,或者更准确地说,每秒刷新10个数值,每次100毫秒、200毫秒、300毫秒等等。
电池电压、温度和燃油水平等信息实际上只需要每隔5秒、10秒和20秒轮询一次,因此有很大的优先级空间。
发布于 2013-06-05 21:32:06
与其使用Thread.Sleep(),不如派生一个不断尝试从流中读取数据的后台线程。当数据被完全读取时,然后激发一个事件,让主线程处理。只要您打开了端口,就不会有问题。
https://stackoverflow.com/questions/16941056
复制相似问题