在arduino1.0之前的版本 Serial.flush()的作用是是清空串口缓存( dropping received incoming data)。但在1.0之后的版本 Serial.flush()的作用调整为了等待串口数据传送完毕(Waits for the transmission of outgoing serial data to complete.)(引用自http://arduino.cc/en/Serial/Flush)。

因为我在使用wifibee的过程中,如果既想用Serial.print通过串口向wifi模块发送指令,又想用Serial.print显示出模块通过串口返回的数值,对于只有一组串口的arduino UNO来说,这两次Serial.print的内容都会向模块发送,即我会将指令和模块对指令的返回分别发送到模块上。如果将模块返回的内容print出来,虽然我们可以在串口监视器上看到,但它会同时发送给模块,对模块来说这就是一个错误的指令,肯定无法得到正确的返回。同时周而复始,错误的指令会得到错误的返回同时继续发给模块。

我在百度上找到的答案是这样的:

	如果你还需要清空串口缓存的话,可以使用:while(Serial.read() >= 0){}来代替。

这是一个等待循环,当缓冲区没数据的时候Serial.read() 返回-1,当缓存区有数据时Serial.read() 返回对应的字符(the first byte of incoming serial data available (or -1 if no data is available) )。因此当缓存区没有数据时,不做任何事,保证缓存区不进入数据。函数Serial.available()的功能是返回串口缓冲区中当前剩余的字符个数,按照Arduino提供的该函数的说明,串口缓冲区中最多能缓冲128个字节。

转载:http://blog.csdn.net/opalefire/article/details/10066781

关于arduino清空串口缓存(转)的更多相关文章

  1. Arduino通讯串口

    串口是Arduino与其它设备进行通信的接口 所有的Arduino控制板有至少一个串口(又称作为UART或USART).它通过0(RX)和1(TX)数字引脚经过串口转换芯片连接计算机USB端口与计算机 ...

  2. [Arduino] 在串口读取多个字符串,并且转换为数字数组

    功能如题目.在串口收到逗号分割的6串数字比如100,200,45,4,87,99然后在6个PWM端口3, 5, 6, 9, 10, 11输出对应PWM值代码注释很详细了,就不再说明了. //定义一个c ...

  3. 手机与Arduino蓝牙串口通讯实验及完整例程

    安卓手机与Arduino之间采用蓝牙串口通讯,是很多智能装置和互动装置常用的控制方法,简单而有效,无需网络环境,很实用的技术. 实验采用Arduino UNO板,加了一块1602LCD屏做显示(因为只 ...

  4. RECONFIGURE语句会清空计划缓存么?

    几个星期前,有个网友问我一个非常有趣的问题:RECONFIGURE语句会清空计划缓存么?通常我对这个问题的答案是简单的是,但慢慢的我找出了真正的答案是“看情况啦”.我们来看下它,为什么“它看情况”. ...

  5. Laravel 清空配置缓存

    清空配置缓存 php artisan cache:clear php artisan config:clear

  6. C#与Arduino通过串口通信来控制LED灯的状态

    一.引言 最近摆弄了一段时间的Arduino,发现Arduino做一些电子类项目.监控.机器人.电子玩具比较容易,并且Arduino与.NET程序集成也不难.接下来介绍一个简单的小程序,C#做的一个W ...

  7. 清空npm缓存

    nodejs 清空 npm 缓存 npm cache clean -f

  8. Mac 安装node npm cnpm vue 以及卸载 node 和 npm 的方法 清空npm缓存的方法

    S01 安装node(内含npm) 首先,到官网下载长期支持版,截止目前,最新的长期支持版本号是10.16.3 https://nodejs.org/zh-cn/download/ 下载完毕后,安装该 ...

  9. 清空 npm 缓存

    清空 npm 缓存 npm cache clean -f

随机推荐

  1. nginx学习笔记

    我的工作环境是 Debian . 在 Debian 上安装 ngingx 和其他 linux 安装基本相同. 在配置 hello world 之前,没有头绪,看了很多资料.最后 "https ...

  2. StackPanel在增加控件的问题

    今天遇到这样一个问题,就是我做了一个自定义控件.然后加到StackPanel中, <StackPanel Height="676" HorizontalAlignment=& ...

  3. Android Studio in OSX 提高工作效率的快捷键

    前言 本篇文章参考了<倍数提高工作效率的Android Studio>一文,快捷键基于OS X系统. OS X Yosemite 10.10.5 Android Studio 1.3.1 ...

  4. vtk保存图像

    vtkWindowToImageFilter * wif = vtkWindowToImageFilter::New(); vtkBMPWriter *bmpw = vtkBMPWriter::New ...

  5. 1不等于1?numeric、decimal、float 和 real 数据类型的区别

    大家有没有在SQL中遇见1不等于1(1<>1)的情形!?下面会有一个例子演示这个情形. 先简单介绍一下标题中的四种数值数据类型. 在T-SQL中,numeric和decimal是精确数值数 ...

  6. java技术 spring 配置

    spring 的IOC是反射注入,用来管理对象的创建与销毁.一般使用都是在启动的web服务器的时候就创建了对象,可以选择自动装配对象管理,将对象引用实现与引用分开.采用的xml配置方式.及大减少了各个 ...

  7. 在Mac上配置adb命令

    在Mac上配置adb命令 在Mac OS中使用adb命令时,应进行变量配置,步骤如下: 一.终端中输入 cd ~ 二.输入touch .bash_profile 回车 touch:如果没有,则创建文件 ...

  8. LR12.53—使用HP网络导游示例应用程序

    本教程使用 的HP Web之旅,一个样本的基于Web的旅行社系统,向人们展示LoadRunner将如何作为负载测试解决方案.惠普网络旅游用户连接到Web服务器,搜索航班,预订机票,检查飞行路线. 虽然 ...

  9. jquery 城市三级联动

    js代码 /*城市三级联动 * @method cityChange * @param allProvince,allCity,allDistrict */ function cityChange(p ...

  10. jquery让滚动条跳到最底部

    selector.scrollTop(50000);   添加一个最大的数值: 或者 公式:内容器的高度加上外层容器的padding,再减去外层容器的高度: var tableHeight = $(' ...