发表于:2004-01-17 09:46:00
楼主
我使用read读串口时,首先判断返回值是否小于0,不是则处理数据,是则继续循环判断,直到接收个数达到一定数目或接收时间超时退出循环。可是程序开始运行正常,运行一段时间后出现返回值始终小于0的故障,造成程序死循环,这是怎么回事啊?
程序段如下:
while(...)//判断是否接受超时,时间由定时信号处理程序处理
{
if(select(...)!=0)//非阻塞判断数据是否有效
{
if(FD_ISSET(...))//是否是否是指定串口数据
{
if(read(fd[2],&ch,1)>0)//问题出在这里
{
buf[i++]=ch;
}
}
}
if(i==20) break;//个数已达到,退出循环
}