Serial.begin(speed)、Serial.begin(speed, config)函数对串口进行初始化配置
speed:波特率,300、600、1200、2400、4800、9600、14400、19200、28800、38400、57600、115200
config:数据位、校验位、停止位配置,配置选项如下表
config可选配置 | 数据位 | 校验位 | 停止位 |
---|---|---|---|
SERIAL_5N1 | 5 | 无 | 1 |
SERIAL_6N1 | 6 | 无 | 1 |
SERIAL_7N1 | 7 | 无 | 1 |
SERIAL_8N1(默认配置) | 8 | 无 | 1 |
SERIAL_5N2 | 5 | 无 | 2 |
SERIAL_6N2 | 6 | 无 | 2 |
SERIAL_7N2 | 7 | 无 | 2 |
SERIAL_8N2 | 8 | 无 | 2 |
SERIAL_5E1 | 5 | 偶 | 1 |
SERIAL_6E1 | 6 | 偶 | 1 |
SERIAL_7E1 | 7 | 偶 | 1 |
SERIAL_8E1 | 8 | 偶 | 1 |
SERIAL_5E2 | 5 | 偶 | 2 |
SERIAL_6E2 | 6 | 偶 | 2 |
SERIAL_7E2 | 7 | 偶 | 2 |
SERIAL_8E2 | 8 | 偶 | 2 |
SERIAL_5O1 | 5 | 奇 | 1 |
SERIAL_6O1 | 6 | 奇 | 1 |
SERIAL_7O1 | 7 | 奇 | 1 |
SERIAL_8O1 | 8 | 奇 | 1 |
SERIAL_5O2 | 5 | 奇 | 2 |
SERIAL_6O2 | 6 | 奇 | 2 |
SERIAL_7O2 | 7 | 奇 | 2 |
SERIAL_8O2 | 8 | 奇 | 2 |
输入函数:Serial.read(),每次都会返回一个字节的数据,这个返回值便是当前串口读取到的数据。
输出函数:Serial.print(val) 或Serial.println(val)可以向串口发送数据,println在发送完数据后,在发送一组回车换行符
void setup() {
// 初始化串口
Serial.begin(9600);
}
void loop() {
// 读取输入的信息
char ch=Serial.read();
// 输出信息
Serial.print(ch);
delay(1000);
}
函数名 | 描述 | 参数 | 返回 |
available() |
获取串口接收到的数据个数,即获取串口接收缓冲区的字节数,缓冲区最多保存64bytes的数据 | 无 | 可读取的字节数 |
end() | 结束串口通信 | 无 | 无 |
find(target) | 从缓冲区读取数据,直到读取到指定的字符串 | target:字符或字符串 |
Boolean型: True:找到 False:没有找到 |
findUntil(target, terminal) | 从缓冲区读取数据,直到读取到指定的字符串或停止符 | target : 需要搜索的字符串或字符 terminal : 停止符 |
bool |
flush() | 等待正在发送的数据发送完成 | 无 | 无 |
parseFloat() | 从缓冲区返回第一个float型有效数据 | 无 | float型数据 |
parseInt() | 从缓冲区返回第一个intt型有效数据 | 无 | int型数据 |
peek() | 从缓冲区返回一个字节数据,但是与read()不同的是,peek读取数据后不会在缓冲区删除改数据 | 无 | 进入接受缓冲区的第一个字节的数据;如果没有可读数据,则返回-1 |
readBytes(buffer, length) | 从接收缓冲区读取指定长度的字符,并存储到数组中 | buffer: 用于存储数据的数组(char[]或者byte[]) length : 需要读取的字符长度 |
读到的字节数;如果没有接收到有效的数据,则返回0。 |
readBytesUntil(character, buffer, length) | 从接收缓冲区读取指定长度的字符,并存储到数组中。如果读取到停止位或者超时,将退出此函数 | character : 停止符 buffer: 用于存储数据的数组( char[] 或者byte[] ) length : 需要读取的字符长度 |
读到的字节数;如果没有接收到有效的数据,则返回0。 |
setTimeout(time) | 用于设置Serial.readBytesUntil() 和Serial.readBytes() 的等待串口数据时间。 |
time:超时时间,单位毫秒 |
无 |
Serial.write(val) Serial.write(str) Serial.write(buf, len) |
以字节的形式输出数据到串口 | val: 发送的数据 str: string型的数据 buf: 数组型的数据 len: 缓冲区的长度 |
输出的字节数 |
软串口需要先声明SoftwareSerial.h头文件,使用SoftwareSerial(rxPin, txPin)定义一个对象,rxPin和txPin为引脚编号,该对象的很多函数与硬件串口类似。
listen()
开启软串口监听状态。 Arduino Uno在同一时间仅能监听一个软串口,当你需要监听某一软串口时,需要该对象调用这个函数开启监听功能。 语法: mySerial.listen() 参数: mySerial:用户自定义的软件串口对象 返回值: 无
isListening()
监测软串口是否正在监听状态。 语法: mySerial.isListening() 参数: mySerial:用户自定义的软件串口对象 返回值: Boolean型 True:正在监听 False:没有监听
end()
停止监听软串口。 语法: mySerial. end() 参数: mySerial:用户自定义的软件串口对象 返回值: Boolean型 True:关闭监听成功 False:关闭监听失败
overflow()
检测缓冲区是否溢出。 语法: mySerial.overflow() 参数: mySerial:用户自定义的软件串口对象 返回值: Boolean型 True:溢出 False:没有溢出
示例程序
#include <SoftwareSerial.h>
SoftwareSerial mySerial(2, 3);
void setup()
{
Serial.begin(115200);
while (!Serial) {
}
Serial.println("Goodnight moon!");
mySerial.begin(9600);
mySerial.println("Hello, world?");
}
void loop()
{
if (mySerial.available())
Serial.write(mySerial.read());
if (Serial.available())
mySerial.write(Serial.read());
}
文章浏览阅读643次。电源工程师们都知道开关MOS在整个电源系统里面的损耗占比是不小的,我们谈及最多的就是开通损耗和关断损耗,由于这两个损耗不像导通损耗或驱动损耗一样那么直观,所以有部分人对于它计算还有些迷茫。今天我们就来详细分析计算一下开关损耗,并论述实际状态下功率MOSFET的开通过程和自然零电压关断的过程,从而使电子工程师知道哪个参数起主导作用并更加深入理解MOSFET。MOSFET开关损耗1、开通过程..._buck电路电感和开关管损耗占比
文章浏览阅读77次。【唠叨】 学习cocos2dx 3.2确实比较吃力,因为网上关于最新版的v3.2的资料十分稀少,或者是讲解的确实不是很详细。大部分人都是根据官方文档照样画瓢,而对于有些比较抽象的概念及函数都是照着官方文档来讲解的。这样的结果,导致有些东西令我确实非常费解。没有办法,只好自己来总结cocos2dx3.2,然后将个人的学习感悟分享给大家。PS:当然有些大牛写的文章还是..._clippingnode 性能
文章浏览阅读647次,点赞2次,收藏2次。1.更新apt-get2.下载docker.ioY。_炫彩蛇
文章浏览阅读2.4w次,点赞63次,收藏418次。Paper:https://arxiv.org/pdf/2103.02907.pdfGitHub:https://github.com/Andrew-Qibin/CoordAttention轻量,优秀,好用!讲之前我们先回顾一下以前的SE与CBAMSESE比较简单,看一下结构图差不多就能理解了,如果有些实现不太懂的,可以借鉴一下CBAM的。但SE只考虑内部通道信息而忽略了位置信息的重要性,而视觉中目标的空间结构是很重要的。CBAM稍微介绍一下CBAM,如图b所示,CBAM包含空间注意力和通_位置注意力机制
文章浏览阅读1.2k次。这里的执行逻辑顺序是:eslint会首先读extends的规则,这个时候遇到了最后配置的plugin:prettier/recommended,而这个插件又会先读本地配置的.prettierrc文件再读取prettier自己内部设置的配置,最后读.eslintrc.json的rules配置。2、其次配置.eslintrc.json文件,extends: [“plugin:prettier/recommended”],如果有其他扩展,则"plugin:prettier/recommended"放在最后。_plugin:prettier/recommended
文章浏览阅读548次。处理方式:在目录: C:\Users\Administrator\.kettle 里 找到:shared.xml 把该文件的编码方式改为UTF-8,重启kettle就没问题了
文章浏览阅读69次。1 #include <cstdio> 2 3 struct road{ 4 int head; 5 int tail; 6 int value; 7 }; 8 9 #define Infinity 23333333310 11 int main(){12 int n, m;13 ...
文章浏览阅读3.9k次,点赞14次,收藏39次。题型与分值选择题10道*2分=20分填空题5道*2分=10分判断题5道*1分=5分简答题2道*10分=20分方案设计题1道*15分=15分(无唯一标准答案,可用中文写清楚每个关键步骤和重要技术点,也可直接写代码,或者中文和代码混合说明)注意:①写清方案实行的步骤②每个步骤的重要技术点,比如用的哪个类来实现程序设计题6段*5分=30分(从挖行改成挖段)内容复习hive的JSON和多字节分隔符的解析步骤和关键技术点复习hive窗口函数的使用方法和含义集群与分布式分布式_燕山大学大数据期末复习笔记
文章浏览阅读431次。Java读取txt文件内容。可以作如下理解:首先获得一个文件句柄。File file = new File();file即为文件句柄。两人之间连通电话网络了。接下来可以开始打电话了。通过这条线路读取甲方的信息:new FileInputStream(file)目前这个信息已经读进来内存当中了。接下来需要解读成乙方可以理解的东西既然你使用了FileInputStream(_readtxt.readfile java
文章浏览阅读446次,点赞11次,收藏7次。给定一个整数 M,对于任意一个整数集合 S,定义“校验值”如下:从集合 S 中取出 M 对数(即 2×M 个数,不能重复使用集合中的数,如果 S 中的整数不够 M 对,则取到不能取为止),使得“每对数的差的平方”之和最大,这个最大值就称为集合 S 的“校验值”。现在给定一个长度为 N 的数列 A 以及一个整数 T。我们要把 A 分成若干段,使得每一段的“校验值”都不超过 T。求最少需要分成几段。_天才acm
文章浏览阅读7.6k次,点赞21次,收藏24次。今天要分享的技术方案是我在写bg-boom这款插件当中一小块的代码实现方案,先从需求说起吧,其模块整体的需求是丰富idea的背景功能,让背景支持电影、视频、直播、TV、广播、音乐、美女图等功能。_bg-boom
文章浏览阅读751次。如果你告诉你的朋友你想买一台电脑,他们肯定会建议你买一台台式电脑。因为在相同的预算下,台式电脑可以比笔记本电脑带来更强大的性能。然而,在很多情况下,台式电脑的不可移动性会给游戏玩家带来很多麻烦,这并不像笔记本电脑那样方便。Origin EON15-X:桌面级的CPU造就一个无与伦比的游戏笔记本电脑处理器:4GHz英特尔酷睿i7-4790K;显卡:英伟达GeForce GTX 980 M (..._联想买什么电脑好,能玩游戏,办公软件