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掉。怎么解决?
} 展开
由于其他程序需要高并发读写,我这样写:
int fd = open("/dev/ttyACM0", O_RDWR);
while(1)
{
read(fd, buf, 512); //一直读好像没问题
write(fd, buf, 512); //但是这儿总是出问题,写很小一会儿就挂死了,打开minicom也会挂死,退不出,只能强制kill掉。怎么解决?
} 展开
3个回答
展开全部
这样写肯定会写死的啊..写(也就是串口发送数据)实际应用不会这么频繁的.楼主可以在写后加上一个sleep(1);这样就不会写死了..
高并发读写这样设计也是错误的应该用队列来处理..
高并发读写这样设计也是错误的应该用队列来处理..
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
应该用 select 语句确定这个端口是可以写的时候再写,串口是个低速设备
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
加上错误判定把,如果读写时出现EAGAIN就sleep一下
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询