遇到一个问题,如果在一个线程中使用WaitCommEvent来处理RX接受中断的话,如果没有任何事件发生,程序将阻塞在WaitCommEvent一行,以至于无法正常终止线程。
解决方法:要使WaitCommEvent正常终止,需要使用OVERLAPPED模式在创建串口设备的时候(CreateFile)使用重叠IO的方式。
这样WaitCommEvent就会立即返回,再去Wait OVERLAPPED结构的hEvent,同时再创建一个线程终止的Event对象。
使用API,WaitForMultipleObjects来等待这两个时间。即可实现串口数据接受线程的正常退出。