说明
此页面用于演示如何清除开发板的接收缓存。
制作此说明页面是由于很多人误认为stream类中的flush函数具有清除缓存的功能。事实上此函数是没有清除缓存功能的。
为了便于理解,我们在这里用Serial作为示例,演示如何清除串口接收缓存中的信息。
示例程序
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
/********************************************************************** 项目名称/Project : 零基础入门学用物联网 程序名称/Program name : stream_clear_buffer 团队/Team : 太极创客团队 / Taichi-Maker (www.taichi-maker.com) 作者/Author : CYNO朔 日期/Date(YYYYMMDD) : 20200318 程序目的/Purpose : ----------------------------------------------------------------------- 本示例程序为太极创客团队制作的《零基础入门学用物联网》中示例程序。 该教程为对物联网开发感兴趣的朋友所设计和制作。如需了解更多该教程的信息,请参考以下网页: http://www.taichi-maker.com/homepage/esp8266-nodemcu-iot/ ***********************************************************************/ void setup() { Serial.begin(9600); } void loop() { // 以下while循环语句将会清除接收缓存内容。 // 具体工作原理是这样的。每当有数据输入接收缓存后, // 我们可以使用Serial.read()来读取接收缓存中的内容。 // 这时,如果我们对Serial.read()函数的返回值不加以任何利用 // 那么读取到的数据,也就是Serial.read()函数的返回值将会在 // 下一次执行Serial.read时所抛弃。利用while循环语句,我们可以 // 保证在接收缓存中有数据的时候,反复将串口接收缓存中的信息读取并抛弃。 // 从而达到清除接收缓存的目的。 while(Serial.available()){ Serial.println("Clearing Serial Incoming Buffer."); Serial.read(); } // 当接收缓存为空时,Serial.read返回值为“-1” // 通过以下语句我们将看到无论我们是否通过串口监视器 // 输入信息,开发板的串口监视器会一直输出: // "Incoming Buffer is Clear." // 这是因为接收缓存中的信息被以上while语句中的内容给清除掉了。 if (Serial.read() == -1){ Serial.println("Incoming Buffer is Clear."); } } |
相关内容
– available()