当前位置:
工控论坛
> >
产品
>
嵌入式系统
>
Linux
我要发帖
求助:linux下对串口的访问
点击:
1447
| 回复:
3
progman
关注
私信
精华:0帖
求助:0帖
帖子:1帖 | 1回
年度积分:0
历史总积分:10
注册:2004年1月15日
发表于: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;//个数已达到,退出循环 }
分享到:
收藏
邀请回答
回复楼主
举报
独孤西狂
关注
私信
精华:1帖
求助:0帖
帖子:11帖 | 199回
年度积分:0
历史总积分:372
注册:2002年11月09日
发表于:2004-11-19 13:56:00
1楼
您把if(i==20) break;//改成if(i>20) break;看行不行。
回复
引用
举报
ccbq
关注
私信
精华:0帖
求助:0帖
帖子:3帖 | 558回
年度积分:0
历史总积分:581
注册:2003年9月26日
发表于:2004-11-24 15:08:00
2楼
您问题找的很准啊!把i++提到if的上面去,先自加再做返回值判断就可以了。
回复
引用
举报
mcujob
关注
私信
精华:0帖
求助:0帖
帖子:2帖 | 27回
年度积分:0
历史总积分:42
注册:2008年4月01日
发表于:2008-04-30 15:57:48
3楼
厉害。。。。。。。。
回复
引用
举报
热门招聘
相关主题
工控系统中非常出色一款控制...
[1148]
ARM9方案讨论!!!!
[1041]
7188问题,编译过程,高手赐教...
[1063]
嵌入式系统开发发展方向!ARM...
[1150]
谁知道Keil C51的使用方法
[1033]
嵌入式系统(上交大视频课程)...
[1001]
这是一个PLC还是PC?—— 一种新...
[1496]
关于NT系统自动启动的设置
[1226]
求助:有关CF卡问题
[2523]
最近新做的项目,用单片机做的...
[976]
官方公众号
智造工程师
客服
小程序
公众号