串口引脚:0(RX)1(TX)
函数介绍
1 串口是否可用:Serial
功能:查看串口是否可用
函数原型:Serial
返回值: 1:串口可用(或串口准备就绪)
0:串口不可用(或串口未准备就绪)
2 可以读取的字节数:Serial.available()
功能:查看可读数据量
函数原型:Serial.available()
返回值:可以读取的字节数,即已经收到的数据数(单位字节)
3 可以写入的字节数:Serial.availableForWrite()
功能:查看写入缓冲区空间
函数原型:Serial.availableForWrite()
返回值:可以写入的字节数(单位字节)(缓冲区剩余的空间,即还可以写多少数据进缓冲区。)
4 开启串口:Serial.begin()
功能:打开串口
函数原型一:Serial.begin(speed),一般使用这个即可
speed:波特率,一般设置9600即可
函数原型二:Serial.begin(speed,config)
speed:波特率,一般设置9600即可
config:设置数据位、是否奇偶校验、停止位
config可以取值:详细请看官网
默认值为:SERIAL_8N1(即调用Serial.begin(speed)时默认为此)
8N1代表数据位为8位,不使用奇偶校验,停止位位是1位
5 关闭串口:Serial.end()
功能:禁用串口
函数原型:Serial.end()
6 查找字符:Serial.find(target)
功能:查找字符串/字符target,直到遇到字符串结束符
函数原型:Serial.fine(target)
target:要查找的字符或字符串,可以是字符也可以是字符串
返回值:1:在接收到的数据中找到字符
0:在接收到的数据中没有找到字符
注意:find在查找时会一直查找,直到找到或者查到末尾
find查找的过程是读取一个字符,判断字符是否是目标字符,如果不是则丢弃字符,读取下一个,直到查找到。因此执行fine函数后目标字符前的数据都会丢失。
7 有结束查找字符:Serial.findUntil(target, terminal)
功能:查找字符串target,直到出现字符串terminal(就停止查找)
函数原型:Serial.findUntil(target, terminal)
target:要查找的字符串,只能查找字符串,如果要查找字符则写单个字符的字符串“a”
terminal:结束标志,单片机读取到一个字符串后,如果判断到该字符为结束字符串,则无论有没有找到目标字符串都停止查找
返回值:1:在接收到的数据中找到字符串
0:在接收到的数据中没有找到字符串
注意:同样,被查找过的字符串都会丢失,包括结束字符串。
8 等待串口发送数据结束:Serial.flush()
功能:等待串口发送数据结束,在发送数据时,发送数据量很大时,发送需要时间,我们要等待数据发送完成才能继续发送。flush函数相当于一个延时函数,数据没有发送完成就继续延时,发送完成就结束延时。
无返回值
9 解析小数:Serial.parseFloat()
10 解析整形:Serial.parseInt()
11 查看输入字符:Serial.peek()
功能:查看输入数据中的第一个字节,并且查看后不删除数据。
返回值:返回值数据类型整形,是二进制数据的绝对值,也是字符的ASCII值,如果没有数据则返回-1;
12 发送函数:Serial.print(x)
功能:将易于人类读解的数字或字符x解析成字符串发送出去,即print具有自动识别和转换功能。
返回值:写入(发送)的字节数
x:x可以是多种数据类型
整形:如 int a=123;Serial.print(a); 函数先将整形a转换成字符串“123”,再将字符串的ASCII值发送出去。
小数(浮点型):如 float a=1.2345;Serial.print(a); 函数先将小数a转换成字符串“1.23”(默认发送两位小数),再将字符串的ASCII值发送出去。
字符/字符串:直接发送其ASCII值
发送整形或者浮点型时还可以有第二个参数:Serial.print(x,mode)
当x为整形:mode可以是
BIN:将数据x以二进制的字符串形式发送,如
如 int a=123;Serial.print(a,BIN); 函数先将整形a转换成二进制数 1111011 ,再将其变成字符串“1111011”,再将字符串的ASCII值发送出去。
OCT:将数据x以八进制字符串形式发送
DEC:将数据x以十进制字符串形式发送,不写该参数时Serial.print(x)默认转换成十进制发。
HEX:十六进制
当x为浮点型:mode可以是任意大于零的数字,表示保留小数点后多少位数据
如:float a=1.2345;Serial.print(a,3); 函数先将小数a转换成字符串“1.234”(默认发送两位小数,即不填第二个参数时Serial.print(a);),再将字符串的ASCII值发送出去。
13 发送函数:Serial.println(x)
该函数用法与发送函数:Serial.print(x)一样。但是在发送的字符串的结尾加了"\r\n"回车和换行符。
14 读取一个字节:Serial.read()
功能:从接收到的数据中读取一个字节的数据
返回值:返回值数据类型整形,是二进制数据的绝对值,也是字符的ASCII值,如果没有数据则返回-1;
注意:该函数与peek()函数不一样,peek()查看数据后,数据还保留在缓冲区,但read()执行后读取的那一个字节的数据将从缓冲区中删除。
15 读取一定字节数的数据:Serial.readBytes(buffer, length)
功能:读取长度为length字节长度的数据存放到buffer中(buffer是数组名,即指针)
buffer:存放数据的地址,一般是数组的名字
length:读取数据的字节数
返回值:成功读取的字节数,最大值为length,表示未将所有数据读取完成,小于length表示剩下的数据已经没有length那么多了,表示该次读取后数据已经没有了,返回0表示没有数据可读。
16 发送字符/字符串:Serial.write()
发送单个字符:Serial.write(val)
val:要发送的字符或者其ASCII值,如Serial.write('1')和Serial.write(49)
发送字符串:Serial.write(str)
str:要发送的字符串,如Serial.write("abc");
发送数组:Serial.write(buf,len)
buf:数组的名字
len:发送的字节数
参考:arduino教程