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操作一般在打开或者复位串口设备时进行操作。
本文详细介绍了如何使用tcflush函数来清除串口缓冲区中的输入或输出数据,包括如何在特定场景下清空缓冲区,以及在串口通信中的应用实例。
函数&spm=1001.2101.3001.5002&articleId=50773286&d=1&t=3&u=d5a458e7b75e42158f134d4f0f0c13ba)
201

被折叠的 条评论
为什么被折叠?



