如何让ReadFile按一个字节读取数据?读取完后不清空缓存可以继续读取
void CDeviConnect::DeviReadForChar(unsigned char *ch)
{
USES_CONVERSION;
OVERLAPPED m_osRead;
memset(&m_osRead,0,sizeof(OVERLAPPED));
m_osRead.hEvent=CreateEvent(NULL,TRUE,FALSE,NULL);
COMSTAT ComStatR;
DWORD dwErrorFlagsR;
DWORD dwBytesRead=1;//读取的字节数
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|
PURGE_RXABORT|PURGE_TXCLEAR|PURGE_RXCLEAR);
}
代码是这样的,但是当读取缓存内容时候,读取完1个字符之后却清空了缓存,有什么办法解决?