转载至:https://blog.csdn.net/a4150902/article/details/7584676
tcflush()函数刷清(扔掉)输入缓存(终端驱动法度已接管到,但用户法度尚未读)或输出缓存(用户法度已经写,但尚未发送).
#include <termios.h>
#include <unistd.h>
int tcflush(int fd, int queue_selector);
quene_selector数该当是下列三个常数之一:
*TCIFLUSH 刷清输入队列
*TCOFLUSH 刷清输出队列
*TCIOFLUSH 刷清输入、输出队列
例如:tcflush(fd,TCIFLUSH);
在设备打开串口后,串口其实已经可以开始读取数据了 ,这段时间用户如果没有对做读取操作,将保存在缓冲区里,如果用户不想要开始的一段数据,或者发现缓冲区数据有误,可以使用这个 tcflush()函数清空缓存数据。
tcflush(fdcom, TCIFLUSH);
sleep(2);
RecvLen = PortRecv(fdcom, RecvBuf, 10, portinfo.baudrate);
这样,在sleep之前发的数据都被清空了。