Arduino的串口结束符及串口缓冲区

文章目录

        • 1.深入理解缓冲区和Serial.available():
        • 2.深入理解串口结束符
        • 3.验证结论:

1.深入理解缓冲区和Serial.available():

运行下面的代码,我发现如果不在串口输入任何数字,就会一直显示“no”,输入一个数字,就一直显示“yes”。关掉串口界面再打开,还是一直显示no
得出第一个结论:
输入的字符并不会随着输入的结束而结束,他一直都存在于缓冲区。

void setup(){Serial.begin(9600);
}
void loop(){if(Serial.available()>0){Serial.println("yes");}else {Serial.println("no");}
}

由于arduino是通过loop函数不断循环的,每一次的循环都很快,可能我们输入的数据还没有完全传入arduino的串口缓冲区,因此Serial.avaliable()的值在一开始可能并不能准确显示出缓冲区里的所有数据的字节数。
我们只能说,Serial.avaliable()的返回值是当前缓冲区中接收到的数据字节数,注意是当前。
例子:

void setup(){Serial.begin(9600);
}
void loop(){if(Serial.available()>0){//delay(1000);Serial.println(Serial.available());delay(1000);Serial.println("yes");}else {Serial.println("no");}
}

上述代码的结果如下图,可以看出,一开始虽然我们输入四个字节,但是缓冲区只收到三个字节,进行第二次循环,缓冲区才完全接收到。
在这里插入图片描述

void setup(){Serial.begin(9600);
}
void loop(){if(Serial.available()>0){delay(1000);Serial.println(Serial.available());delay(1000);Serial.println("yes");}else {Serial.println("no");}
}

上述代码我们又增加一个delay(1000)。此代码的结果如下,可以看出,此时缓冲区第一次就读取了所有输入的字节
在这里插入图片描述
得出第二个结论:
Serial.avaliable()的返回值是当前缓冲区中接收到的数据字节数。为了使它一次就捕获到所有缓冲区中的数据,我们通常需要加延时函数。

2.深入理解串口结束符

打开串口界面,会发现
在这里插入图片描述
在这里插入图片描述
那么这几个选项分别是什么意思呢,又有什么不同呢?
首先我们需要知道Serial.read(),他是从缓冲区拿出一个字节,先进缓冲区的先被拿出来。

void setup(){Serial.begin(9600);
}
void loop(){if(Serial.available()>0){delay(2000);Serial.println("yes");char inchar= Serial.read();if(Serial.available()>0){Serial.println("yes2");}else{Serial.println("no2");}}
}

我们选择没有结束符,然后输入五个数字,结果如下图。从中我们可以发现,读到第五个数之后缓冲区已经没有数据了。
在这里插入图片描述
然后我们再分别选择换行符和回车,从结果可以看出,此时我们输入了五个,但实际上缓冲区有六个字节,那么显而易见,当我们输入五个数,然后点发送,系统会自动增加一个换行符或回车作为最后一个数
在这里插入图片描述
在这里插入图片描述
好了,现在我们得出第三个结论,结束符是当输入完后系统自动添加到缓冲区中的字符。

3.验证结论:

来验证一下我们的三个结论:
我们输入五个数,如果说第一个输出是六,那么三个结论成立

void setup(){Serial.begin(9600);
}
void loop(){if(Serial.available()>0){delay(2000);Serial.println(Serial.available());Serial.println("yes");char inchar= Serial.read();if(Serial.available()>0){Serial.println("yes2");}else{Serial.println("no2");}}
}

结果如下图,三个结论成立。
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/560596.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

android 圆角边框边框渐变,支持边框、圆角、渐变色、透明度的GradientButton

最近在项目中发现好多Button背景颜色相同,但圆角大小不等的Button,这样就得写一大堆的shape或者selector,不便于管理及后期维护,于是乎变想能不能写一个支持边框、圆角、渐变色、透明度的万用Button呢。为了能够兼容button自带的属…

鸿蒙ide如何运行,深入浅析华为鸿蒙IDE安装与Hello World

一、系统安装1. 到官网下载HUAWEI DevEco Studio2. 安装二、创建项目创建项目目前还没有手机选项,所以我先选择一个电视:IDE的环境看起来和idea差不多,应该比较容易上手。从“关于”里也可以看到,确实是基于IDEA开源版本开发的。我…

中快捷搜索_同事用1分钟,我用半小时,原来是因为这8个Word快捷键,秒杀一切办公技巧...

同事用1分钟,我用半小时,这8个Word快捷键,秒杀一切办公技巧​mp.weixin.qq.com文|王羽卒今天给小伙伴们分享几个实用又有效的快捷键,帮助快速完成工作,同事用了半小时,你1分钟就能解决哟&#x…

荣耀x10max能不能升级为鸿蒙,荣耀终于放出大招!4部荣耀旗舰可升级鸿蒙,网友:终于等到了...

4月24~26日,华为将召开开发者大会,届时手机使用的鸿蒙系统将正式上线,华为和部分荣耀手机将会首先支持。其实,早在2月22日的华为Mate X2的发布会上,余承东就说过4月发布鸿蒙OS。华为并不想推出鸿蒙系统,如果…

android 7.0新增控件,自定义Android控件,封装Arcgis for Android测距测面积工具控件

控件的功能包括,测距、测面积、撤销、恢复、清除、完成六个功能。测距:在地图上绘制线段进行长度测量测面积:在地图上绘制一个面,进行面积测量撤销:撤销到上一步绘制,只能撤销未完成的测量恢复:…

多媒体分析与理解_如何设计一个出色的数字多媒体展厅?

展厅设计方案是了解每个多媒体设备的应用方法,那么如何让设备跟展厅结合一起,展示出我们想要的科技效果,核心就是用户体验度。今天华南数字科技的小编就为您介绍下数字多媒体展厅对用户体验方面的几个重点要素。1、细节展示不论多前卫的多媒体…

gradient设置上下渐变_图解CSS: CSS渐变

CSS的渐变主要分布在 conic-gradient()和repeating-conic-gradient()两个属性。在CSS中,CSS的渐变相当于图像,我们可以使用线性渐变(linear-gradient()和repeating-linear-gradient())、径向渐变(radial-gradient()和repeating-radial-gradient())和锥形…

2021泗阳致远中学高考成绩查询,2021高考成绩什么时候发布?可通过哪些途径查询?...

3、安徽省高考成绩预计将于6月23日公布各批次录取分数线和高考成绩,考生可通过安徽省教育招生考试院自行查分;4、湖南高考成绩将于6月25日左右公布,本科不再分一二三批,考生可通过湖南教育政务网、湖南省普通高校招生考试考生综合…

mysql数据库的字符集_mysql数据库中字符集乱码问题原因及解决

前言有的时候我们在查看数据库数据时,会看到乱码。实际上,无论何种数据库只要出现乱码问题,这大多是由于数据库字符集设定的问题。下面我们就介绍一下,数据库的字符集的设定及乱码问题的解决。mysql数据库的字符集直白的说&#x…

1主5从mysql数据库_MySQL主从复制虽好,能完美解决数据库单点问题吗?

一、单个数据库服务器的缺点数据库服务器存在单点问题;数据库服务器资源无法满足增长的读写请求;高峰时数据库连接数经常超过上限。二、如何解决单点问题增加额外的数据库服务器,组建数据库集群;同一集群中的数据库服务器需要具有…

惠普z6计算机进不去桌面,HP Z6 桌面工作站 | HP® HK 惠普香港

Intel、Thunderbolt 及 Xeon 均為 Intel Corporation 於美國及/或其他國家或地區的商標。Microsoft 及 Windows 為 Microsoft Corporation 於美國及/或其他國家或地區的註冊商標或商標。NVIDIA 是 NVIDIA Corporation 在美國及其他國家或地區的商標及/或註冊商標。USB Type-C™…

mysql定义条件和处理_mysql sql存储过程条件定义与处理

一、条件定义DECLARE condition_name CONDITION FOR condition_valecondition_value:sqlstate[value] sqldata_value |mysql教程_error_code二、条件处理DECLARE htype HANDLER FOR cond_value[...] sp_statementhandtype_value:sqlstate [value] saltate_value|contentname|sq…

长沙医学院学位计算机考试内容,湖南长沙医学院2017年9月计算机等级考试报名时间...

长沙医学院2017年下半年第49次全国计算机等级考试(以下简称NCRE)将于2017年9月23至25日举行。为做好本次考试报名及相关考务工作,现将有关事项通知如下:一、报名时间:2016年6月7日—2016年6月18日,逾期不接受任何理由的补报名。二…

mysql dnslog_dnslog小技巧

一、dnslog利用场景主要针对无回显的情况。Sql-BlindRCESSRFRFI(Remote File Inclusion)二、原理将dnslog平台中的特有字段payload带入目标发起dns请求,通过dns解析将请求后的关键信息组合成新的三级域名带出,在ns服务器的dns日志中显示出来。三、案例展…

2019哈佛计算机专业录取,2019哈佛大学早申请录取数据公布 录取率再降1个点仅为13.4%...

出结果了,出结果了,作为美国在全球范围内最负盛名的哈佛大学,与近日公布2019美国本科申请提前录取的相关数据。今年哈佛大学本科学院向6,968位在2023届提前录取轮次申请人中的935位发出了录取通知,申请录取率约为13.4%&#xff0c…

mysql中pi是什么意思_MySQL 基础知识与常用命令

MySQLMySQL是一种开放源代码的关系型数据库管理系统(RDBMS),MySQL数据库系统使用最常用的数据库管理语言--结构化查询语言(SQL)进行数据库管理。MySQL在过去由于性能高、成本低、可靠性好,已经成为最流行的开源数据库,因此被广泛地应用在Inte…

科幻计算机类小说,短篇科幻小说推荐 | 黄金时代的五部科幻杰作

编注:本文是少数派读书月「我读过的好书」征文活动的入围文章。本文仅代表作者本人观点,少数派对标题和排版略作调整。想了解如何参与本次读书征文,赢取各种丰厚奖品,你可以 点此查看 活动规则和奖品清单。文章包含五个故事的情节…

计算机中丢失msc,mscvr120.dll32位/64位版_修复计算机中丢失msvcr120.dll

mscvr120.dll32位/64位版_修复计算机中丢失msvcr120.dllmscvr120.dll是系统的非常重要的一个文件,相信很多的人都是遇到文件丢失的情况,这个时候就需要你在下载一个dll文件使用了!现在就为大家提供最新的dll文件下载,需要的可以看…

mysql解压缩版配置_MySQL 5.6 for Windows 解压缩版配置安装

1、MySQL安装文件分为两种,一种是msi格式的,一种是zip格式的。如果是msi格式的可以直接点击安装,按照它给出的安装提示进行安装(相信大家的英文可以看懂英文提示),一般MySQL将会安装在C:\Program Files\MySQL\MySQL Server 5.6 该…

计算机二级考试开考多久能出来,【计算机二级】明天就要开考了,你们准备好了吗?...

原标题:【计算机二级】明天就要开考了,你们准备好了吗?计算机二级考试马上要来了现在距离考试只有不到几个小时的时间了不知道各位同学准备的怎么样了呢?人有多大胆,复习拖多晚但这可不是什么好习惯奔赴“战场”之前先…