200分求教:有没有办法在等待20秒时间之内,直到缓冲区满24个字节为止才调用ReadFile一次?或者将缓冲区的数据读完后仍然保存在缓冲区里面呢?
现在我在项目中遇到这样的一个问题:用重叠IO方式读取串口的数据:代码如下dwBytesRead = 24;
bReadStatus=ReadFile(hCom,lpInBuffer,dwBytesRead,&dwBytesRead,&m_osRead);
if(!bReadStatus){
if(GetLastError()==ERROR_IO_PENDING){
WaitForSingleObject(m_osRead.hEvent,20000);
......................................................
}
现在项目中要求只有串口的输入缓冲区中满了24个字节之后,才能一起读取出来。那么这段代码就遇到了这么一个缺陷:
如果在执行ReadFile时候串口的输入缓冲区只有10个字节的话,ReadFile会将这10个字节读取出来,以后下位机再送入串口的数据将会乱掉(顺序等等)。
有没有办法在等待20秒时间之内,直到缓冲区满24个字节为止才调用ReadFile一次?或者将缓冲区的数据读完后仍然保存在缓冲区里面呢?