串口操作之刷清输入输出缓存操作---tcflush()函数

原文链接tcflush()函数

tcflush函数刷清(扔掉)输入缓存(终端驱动已接管到,但用户尚未读)或输出缓存(用户已经写,但尚未发送).

  int tcflush(int filedes,int quene)
  其中参数quene是下列三个常数之一:
    TCIFLUSH  刷清输入队列
    TCOFLUSH  刷清输出队列
    TCIOFLUSH 刷清输入、输出队列

  例如:tcflush(fd,TCIFLUSH);


在打开串口后,串口其实已经可以开始读取 数据了 ,这段时间用户如果没有读取,将保存在缓冲区里,如果用户不想要开始的一段数据,或者发现缓冲区数据有误,可以使用这个函数清空缓冲

tcflush(fdcom, TCIFLUSH);

sleep(2);
RecvLen = PortRecv(fdcom, RecvBuf, 10, portinfo.baudrate);

这样,在sleep之前发的数据都被清空了。


注意:如果是在任务中,需要不停地写入数据到串口设备,千万不能在每次写入数据到设备前,进行flush以前数据的操作,因为两次写入的间隔是业务控制的,内核不会保证在两次写入之间一定把数据发送成功。flush操作一般在打开或者复位串口设备时进行操作。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章