要重新使用串行通信, 需要 Serial.begin()语句

Serial.read();

读取串口数据,一次读一个字符,读完后删除已读数据
返回串口缓存中第一个可读字节,当没有可读数据时返回-1,整数类型
bl=Serial.findUntil("ell","|"); 从串行缓冲区读取数据,直到找到一个给定字符串或字符串终止位;
如果目标字符串被发现,该函数返回true,如果超时则返回false
参数1 要搜索的字符串
参数2 终止位

Serial.flush(); 等待输出数据传送完毕

Serial.peek(); 读取下一字节

读串口缓存中下一字节的数据(字符型),但不从内部缓存中删除该数据。也就是说,连续的调用peek()将返回同一个字符
返回串口缓存中下一字节(字符)的数据,如果没有返回-1,整数int型

while(Serial.read()>= 0){} 清空缓存

因Serial.read()函数读取串口缓存中的一个字符,并删除已读字符。因此可以用这句代码来清空串口缓存
s=Serial.parseInt();//从缓冲区读取一个int整数

Serial.print(); 串口输出数据函数,写入字符串数据到串口

语法:
Serial.print(val)
Serial.print(val,format)
val: 打印的值,任意数据类型 ; format: 输出的数据格式,包括整数类型和浮点型数据的小数点位数
示例
Serial.print(78, BIN) 得到 "1001110" BIN表示二进制
Serial.print(78, OCT) 得到 "116" OCT表示8进制
Serial.print(78, DEC) 得到 "78" DEC表示10进制--默认
Serial.print(78, HEX) 得到 "4E" HEX表示16进制
Serial.print(1.23456, 0) 得到 "1" 取0位小数
Serial.print(1.23456, 2) 得到 "1.23" 取2位小数
Serial.print('N') 得到 "N" 输出字符串

Serial.println(); 与Serial.print()类似 后面自动加入换行

int x=Serial.readBytes(buffer,length); 从串口读取指定长度length的字符到缓存数组buffer

返回存入缓存的字符数,0表示没有有效数据

Serial.readBytesUntil(character,buffer,length); 从串口缓存读取指定长度的字符到数组buffer,遇到终止字符character后停止

character : 终止的字符 (char)
buffer: 存储读取数据的缓存(char[] 或byte[])
返回存入缓存的字符数,0表示没有有效数据

String comdata =Serial.readString(); 从串口缓存区读取全部数据到一个字符串型变量

返回从串口缓存区中读取的一个字符串--包括\n

String comdata =Serial.readStringUntil(terminator); 从串口缓存区读取字符到一个字符串型变量,直至读完或遇到某终止字符

terminator:终止字符(char型)
返回值 从串口缓存区中读取的整个字符串,直至检测到终止字符

float comfloat=Serial.parseFloat(); 读串口缓存区第一个有效的浮点型数据,数字将被跳过。当读到第一个非浮点数时函数结束

返回值 返回串口缓存区第一个有效的浮点型数据,数字将被跳过

int comInt=Serial.parseInt() 从串口接收数据流中读取第一个有效整数(包括负数)

注意:非数字的首字符或者负号将被跳过;当可配置的超时值没有读到有效字符时,或者读不到有效整数时,分析停止;如果超时且读不到有效整数时,返回0
返回值 返回下一个有效整型值

Serial.find() 从串口缓存区读取数据,寻找目标字符串target(char型)

语法:
char target[] = ”目标字符串”;
Serial.find(target);
返回值 找到目标字符串返回真,否则为假

Serial.findUntil(target,terminal);从串口缓存区读取数据,寻找目标字符串target(char型数组),直到出现终止字符串terminal(char型数组),找到为真,否则为假

Serial.write(); 串口输出数据函数。写二进制数据到串口

语法 Serial.write(val) val: 字节
Serial.write(str) str: 一串字节
Serial.write(buf, len) buf: 字节数组 len: buf的长度
返回值 字节长度

Serial.SerialEvent(); 串口数据准备好时触发的事件函数,即串口数据准备好调用该函数

语法:Serial.serialEvent{//statements}
statements: 任何有效的语句
当使用print()发送一个数据时,Arduino发送的并不是数据本身,而是将数据转换成字符(无论是何种类型的数据,如int a=100数据也会被转化为三个char型数据,即’1’ .’0’.’0’),再将字符翻译成ASCII码发送出去,串口监视器接收到ASCLL码,则会显示对应的字符(串口监视器会自动进行ASCII码翻译工作)。因此,使用print()函数是以ASCLL码的形式输出数据到串口。
而当使用write()函数时,Arduino发送的是数值本身,省略了把字符转化为ASCII码的过程。串口监视器接收到数据后,也会将数值当做ASCLL码而显示其对应的字符(write()函数只支持发送0~255整型数据)