flush

说明

flush函数可让开发板在所有待发数据发送完毕前,保持等待状态。

请注意:很多人误认为flush函数具有清除开发板接收缓存区的功能。事实上此函数是没有此功能的。如需了解如何清除开发板接收缓存区内信息的方法,请点击这里进入相应说明页面。

本函数属于Stream类。该函数可被Stream类的子类所使用,如(Serial, WiFiClient, File 等)。

为了更好的理解flush函数的作用,我们在这里用Serial.flush()作为示例讲解。

当我们通过Serial.print或Serial.println来发送数据时,被发送的字符数据将会存储于开发板的“发送缓存”中。这么做的原因是开发板串行通讯速率不是很高,如果发送数据较多,发送时间会比较长。

在没有使用flush函数的情况下,开发板不会等待所有“发送缓存”中数据都发送完毕再执行后续的程序内容。也就是说,开发板是在后台发送缓存中的数据。程序运行不受影响。

相反的,在使用了flush函数的情况下,开发板是会等待所有“发送缓存”中数据都发送完毕以后,再执行后续的程序内容。

语法

stream.flush()
注:此处stream为概念对象名称。在实际使用过程中,需要根据实际使用的stream子类对象名称进行替换。如:
Serial.flush()
wifiClient.flush()

参数

返回值

示例程序

为了演示flush函数工作效果,一共为您准备了两个示例程序。这两个程序一个使用了flush函数另外一个没有使用flush函数。

通过这两个示例程序的运行结果比较,您可以看到flush函数的工作效果。

示例1:没有使用flush函数的情况下,通过串口监视器显示开发板输出一大串字符的运行效果。

示例2:使用flush函数的情况下,通过串口监视器显示开发板输出一大串字符的运行效果。

通过以上两个程序的运行,您可以看到。在没有使用flush函数的情况下,开发板在输出信息前后时间差别微乎其微。但是在使用了flush函数以后,可以明显看到开发板输出信息占用了一定的时间。

相关内容

清除接收缓存