以下 读串口的函数
int get_str(double dsec,unsigned char *terstring)
{

DWORD ReturnNumber;
BOOL bResult;
unsigned int  slen,nret;
unsigned char getbuf[256];
//double dsec;
time_t btime,etime; //dsec = 40;
memset(getbuf,'\0',256);
time(&btime);
do 
{
if (m_hCom==INVALID_HANDLE_VALUE)
{
return 0x41;
}
else
{
COMMTIMEOUTS CommTimeOuts ;
SetCommMask(m_hCom, EV_RXCHAR ) ;
SetupComm(m_hCom, 4096, 4096 ) ; 
PurgeComm(m_hCom, PURGE_TXABORT| PURGE_RXABORT |
PURGE_TXCLEAR| PURGE_RXCLEAR ) ;
CommTimeOuts.ReadTotalTimeoutMultiplier = 0 ;
CommTimeOuts.ReadTotalTimeoutConstant = 2000;
CommTimeOuts.WriteTotalTimeoutMultiplier = 0;
CommTimeOuts.WriteTotalTimeoutConstant = 2000 ;
SetCommTimeouts(m_hCom, &CommTimeOuts ); 
}
bResult = ReadFile(m_hCom,getbuf,1,&ReturnNumber,NULL);// 读串口数据
if (!bResult) 
{
return 0x41;
}
if(ReturnNumber==1&&(getbuf[0]=='O'||getbuf[0]=='E')
{
bResult = ReadFile(m_hCom,getbuf+1,3,&ReturnNumber,NULL);// 读串口数据
if (!bResult) 
{
return 0x41;
}
if(ReturnNumber==3)
{
if(getbuf[0]=='O' && getbuf[1]!='K') return 0x41;
if(getbuf[0]=='E' && getbuf[1]!='R') return 0x41;
slen = getbuf[3];
bResult = ReadFile(m_hCom,getbuf+4,slen-4,&ReturnNumber,NULL);// 读串口数据
if (!bResult) 
{
return 0x41;
}
memcpy(terstring,getbuf,slen);
terstring[slen] ='\0';
return 0;
}
}
time(&etime);
} while(difftime(etime,btime)<dsec);
return 0x42;
}
dsec 等待时间
terstring 读的字符串
在读取后自动判断 并返回状态字通过判断 terstring  确认是我想要的数据 应该返回 return 0;
但每次都返回 0x42 请问怎么回事
我用 dsec=10秒的等待时间
每次都做完10秒再返回,其实 1-2秒就读到数据(串口外设报警提示 发送成功)
但 return 0 就是不跳出循环,结束函数运行。