一个很顽固的问题,关于串口操作
请大家看看下面代码(csdn的朋友提供的,具体在哪拷贝的不记得了)
//以下是读串口方法中的部分代码
………………
clock_t start;
start=clock();
int i=0;
for(;;)
{
ClearCommError(idComDev,&dwErrors,&lpCommStat);//关键是这行代码
i++;
if (dwErrors|| lpCommStat.cbInQue) /* byte received or error ? */
{
break;
}
else if(clock()-start>1000) /* time out 4 clock ticks */
{
*ErrorNumber = -3;
return(0);
}
}
………………
在我单步调试的时候,ClearCommError函数每次都执行得很顺利,一次就能通过,并得到缓冲区的字节数lpCommStat.cbInQue不为0
而如果去掉所有断点,直接运行后,通过返回的计数器值(即代码中的i)发现只有很少次能顺利执行,绝大部分时候ClearCommError函数要重试几万少也要几千次才能得到缓冲区字节数。。导致我读串口的速度很慢很慢。
翻来覆去调了一天了,请朋友们帮帮我!谢谢了