linux下串口读写问题挂死

lpc1768写了个虚拟USB串口设备,可以收发数据。linux下设备为/dev/ttyACM0由于其他程序需要高并发读写,我这样写:intfd=open("/dev/t... lpc1768写了个虚拟USB串口设备,可以收发数据。linux下设备为/dev/ttyACM0
由于其他程序需要高并发读写,我这样写:
int fd = open("/dev/ttyACM0", O_RDWR);
while(1)
{
read(fd, buf, 512); //一直读好像没问题
write(fd, buf, 512); //但是这儿总是出问题,写很小一会儿就挂死了,打开minicom也会挂死,退不出,只能强制kill掉。怎么解决?
}
展开
 我来答
bcg448251593
2013-11-23 · 超过25用户采纳过TA的回答
知道答主
回答量:76
采纳率:0%
帮助的人:19.8万
展开全部
这样写肯定会写死的啊..写(也就是串口发送数据)实际应用不会这么频繁的.楼主可以在写后加上一个sleep(1);这样就不会写死了..
高并发读写这样设计也是错误的应该用队列来处理..
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
holly336
2013-11-28 · TA获得超过187个赞
知道小有建树答主
回答量:155
采纳率:0%
帮助的人:107万
展开全部
应该用 select 语句确定这个端口是可以写的时候再写,串口是个低速设备
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
蛋蛋的苍穹之下
2013-11-25 · TA获得超过159个赞
知道小有建树答主
回答量:220
采纳率:0%
帮助的人:129万
展开全部
加上错误判定把,如果读写时出现EAGAIN就sleep一下
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式