我封装了一个类,在同步(阻塞)模式下对串口进行读写开了两个线程,分别用于读和写在读线程当中使用 如下语句实现事件驱动:
SetCommMask(m_hSerialPort, EV_RXCHAR);
WaitCommEvent(m_hSerialPort, &dwEvent, NULL);目的是为了使程序阻塞在 WaitCommEvent 处,当缓冲区内接收到数据时程序继续向下执行,从而实现指定的功能但是,在实际运行中,即使串口接收到了数据,程序仍然阻塞在WaitCommEvent 处无法继续向下执行。不仅如此,当读线程阻塞在WaitCommEvent 处等待数据时,写线程中一旦执行到 WriteFile 函数处也发生了阻塞。更加让我感到诡异的是,相同的代码在WinCE 4.2 下,对手机模块进行串口读写操作,程序运行非常之好,没有任何异常。但移植到 XP 下就出现了上述问题,不解。请教各位这究竟是怎么一回事?谢谢!