Win32中的线程和串行通信

时间:2018-04-14 12:00:53

标签: c multithreading winapi serial-port

我有一个Windows的C程序,它使用Win32 API,主线程和另一个线程(名为ThreadRx)从串行端口(虚拟COM端口,USB)接收数据。 串行端口以“重叠”模式处理。 ThreadRx的核心是一个while循环:

$ gcc myconnect.c -lpthread && ./a.out

当我想关闭程序时,主线程以下列方式禁用ThreadRx:

while(is_ThreadRx_Enabled)
{
      //issue a read operation
      //wait for the event "read completed"
      //feed a shared variable
      //other things....
}
ExitThread(0);

现在,如果连接到串行端口的发送器不再发送数据,则读取操作被阻止,因此强制执行rxThread终止。串口上的任何后续操作都会导致错误(如果我尝试刷新串口,我会看到蓝屏!) 处理这种情况的正确方法是什么? 有没有类似“中止”功能来终止已发布的读取操作? 非常感谢! Alessio的

0 个答案:

没有答案