用多媒体定时器做辅助线程不断读串口的问题
我用多媒体定时器做了一个每1ms不断读串口,只要有数据马上读进来进行处理,但是在WIN2K里进行实际数据采集时发现检测周期经常会变大,最大的一次甚至是隔了两百多毫秒才去读串口,结果一下读进很多数据,极度影响了数据采集的实时性;而且只要我一运行我的程序,WIN2K的CPU占用率就一直是100%,电脑也比较烂,最后我只能从任务管理器才能将程序关闭。因为本来数据是每10ms发过来一次的,我中间收到的数据的周期也应该是10ms。所以这样让我无法判断正确性。
后来我看到一篇文章说是用查询法读串口可以保证数据的实时性,但是CPU占用率很大,所以要把不断读串口的这个函数做成一个辅助线程,检测到数据后再通知主线程读出数据进行处理。我想问下辅助线程就不占用那么高的CPU了吗?检测到数据后再通知主线程不浪费时间吗?这样做是不是真可以保证实时性呢?我是个菜鸟,对VC线程一点都不懂啊。多谢啊