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, ...);         //从串口接收队端返回的数据.
已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页