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, ...);         //从串口接收队端返回的数据.
GitHub 加速计划 / li / linux-dash
10.39 K
1.2 K
下载
A beautiful web dashboard for Linux
最近提交(Master分支:2 个月前 )
186a802e added ecosystem file for PM2 4 年前
5def40a3 Add host customization support for the NodeJS version 4 年前
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐