BOOL bReadStat; ClearCommError(hCommPort,&dwErrorFlagsR,&ComStatR); min(dwBytesRead,(DWORD)ComStatR.cbInQue); dwBytesRead = 1; bReadStat=ReadFile(hCommPort,ch, dwBytesRead,&dwBytesRead,&m_osRead); if(!bReadStat){if(GetLastError()==ERROR_IO_PENDING) //GetLastError()函数返回ERROR_IO_PENDING,表明串口正在进行读操作{WaitForSingleObject(m_osRead.hEvent,2000); //使用WaitForSingleObject 函数等待,直到读操作完成或延时已达到2 秒钟 //当串口读操作进行完毕后,m_osRead 的hEvent 事件会变为有信号}}PurgeComm(hCommPort,PURGE_TXABORT| ------解决方案-------------------- ..这还真不知道有没有了,或者你申请一个空间来保存读出来的数据吧 ------解决方案-------------------- 复制一个缓冲区,读完后,再复制回去 ------解决方案-------------------- ------解决方案-------------------- 自己维护一个缓存不就好了 ------解决方案-------------------- 如果缓冲区里有多个数据,你只读一个,那缓冲区是不会把剩下的9个给清了,除非是缓冲区里只有一个数据或者是你读完一个就执行清除语句 你不是自己调用PurgeComm把缓冲区清空了么。。。