这个串行口是进行异步读写的,所以 WaitCommEvent 执行后会马上退出,返回错误为 ERROR_IO_PENDING;表示,它在后台进行操作。调用 WaitForSingleObject 函数阻塞线程运行,等待上面的操作完成。===============================================================根据楼主的提问,看来你对串行口的同步、异步操作并不理解,所以你肯定看不懂这个程序。对于初学者,读写串行口建议采用同步操作,这个比较好理解。
===============================================================一个疑问:上面这段程序是采用异步方式的,可是为什么又调用 WaitForSingleObject 函数阻塞线程运行?与其这样,那还不如采用同步方式运行???不知道楼主的程序是从哪里来的?

解决方案 »

  1.   

    WaitCommEven是检测串口的状态,具体如下:
    /*---------------
    EV_BREAK  检测到一个输入中断 
    EV_CTS  CTS信号发生变化 
    EV_DSR  DSR信号发生变化 
    EV_ERR  发生行状态错误 
    EV_RING  检测到振铃信号 
    EV_RLSD  RLSD(CD)信号发生变化 
    EV_RXCHAR  输入缓冲区接收到新字符 
    EV_RXFLAG  输入缓冲区收到事件字符 
    EV_TXEMPTY  发送缓冲区为空
    --------------*/