为什么我用PurgeComm(m_hCom, PURGE_TXABORT| PURGE_RXABORT|PURGE_TXCLEAR|PURGE_RXCLEAR);
还是没有清空串口的缓冲区呢?(我是用重叠IO方式的)

解决方案 »

  1.   

    if(::ClearCommError(_hCommHandle, &dwError, &Stat) && dwError > 0) //清除错误
      {
       ::PurgeComm(_hCommHandle, PURGE_RXABORT | PURGE_RXCLEAR); /*清除输入缓冲区*/
       return 0;
      }
      

  2.   

    PURGE_TXABORT   终止所有正在进行的字符输出操作,完成一个正处于等待状态的重叠i/o操作,他将产生一个事件,指明完成了写操作  
      PURGE_RXABORT   终止所有正在进行的字符输入操作,完成一个正在进行中的重叠i/o操作,并带有已设置得适当事件  
      PURGE_TXCLEAR   这个命令指导设备驱动程序清除输出缓冲区,经常与PURGE_TXABORT   命令标志一起使用  
      PURGE_RXCLEAR   这个命令用于清除设备驱动程序得输入缓冲区,经常与PURGE_RXABORT   命令标志一起使用 请确认API调用返回成功