Linux环境下进行原始串口通信问题(tcflush())

Linux环境下进行原始串口通信问题(tcflush())  


1: Linux原始串口通信与Linux终端通信不同,
    终端通信都是以'\n'换行符作为一次通信的结束符,而原始串口没有这个约定.
2: 需要清除串口发送和接收缓冲区.
   (1):打开串口后,最好清除一下接收和发送缓冲区:
       tcflush(fd, TCIOFLUSH);   
3: 在向对端发送读命令时,一定要在发送前清除一下原来的杂乱数据。
   (1):问题代码
       write(fd, GET_PARAM, ..);   // 向串口发送读命令.
       read(fd, buf, ...);         //从串口接收队端返回的数据.
       因为串口接收缓冲区,可能存在以前的一些杂乱的数据,因此读回来的数据,不一定
       都是刚才接收到的。
   (2): 正确的代码
       tcflush(fd, TCIFLUSH);    //先清除接收缓冲区的数据.
       write(fd, GET_PARAM, ..);   // 向串口发送读命令,这里的读命令,指的是发送此命令后,对端会立即返回相应数据. 
       read(fd, buf, ...);         //从串口接收队端返回的数据.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值