[嵌入式linux] 串口编程问题

[复制链接]
 楼主| lk07828 发表于 2016-1-12 10:27 | 显示全部楼层 |阅读模式
本帖最后由 lk07828 于 2016-1-12 10:28 编辑

linux C

串口通讯流程:
com_set();
while(1)
{
    tcflush(fd,TCIOFLUSH);//先清空所有缓冲区
    write(fd,sendbuf,len);
    read(fd,recvbuf,len);
}


read总是读不到数据:
1.去掉tcflush(fd,TCIOFLUSH)后正常。但是第一次运行时read也是返回0,以后正常(可能跟comset中也有tcflush有关)
2.在不去掉tcflush(fd,TCIOFLUSH)的情况下,将串口的参数
options.c_cc[VTIME] = 1; //100ms
改大一点到2,串口接收正常。
但是单纯的再tcflush(fd,TCIOFLUSH)后usleep(200ms)也不行

问题:
串口的tcflush是怎么个用法?
还是想将options.c_cc[VTIME]设置为1,然后每次发送前还是要清缓冲区,该怎么做?
mini1986 发表于 2016-1-13 11:00 | 显示全部楼层
网上例子很多,个人表示,没这么搞过......
 楼主| lk07828 发表于 2016-1-15 09:13 | 显示全部楼层
使用select设置超时时间解决了问题
lhllhllhl 发表于 2016-1-16 00:23 | 显示全部楼层
谢谢分享!需要的资料!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

12

主题

161

帖子

2

粉丝
快速回复 在线客服 返回列表 返回顶部