打印
[嵌入式linux]

串口编程问题

[复制链接]
923|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
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

粉丝