[arduino]串口函数Serial库

Serial.begin(speed)

串口波特率定义函数。

开启串行通信接口并设置通信波特率。

一般取值300, 1200, 2400, 4800, 9600, 14400, 19200, 28800, 38400, 57600, or 115200。

speed:速率,长整数型long

Serial.end()

禁止串口传输函数

关闭通信串口

Serial.available()

判断串口接收缓冲器的状态函数。读取串口接收缓冲器的值(128字节寄存器),以判断数据送达到串口。

判断串口缓冲器是否有数据装入

例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
int incomingByte = 0; // for incoming serial data

void setup()
{
Serial.begin(9600); // opens serial port, sets data rate to 9600 bps
}

void loop()
{
// send data only when you receive data:
if (Serial.available() > 0)
{
incomingByte = Serial.read(); // read the incoming byte:
Serial.print("I received: "); // say what you got:
Serial.println(incomingByte, DEC);
}
}

Serial.read()

读取串口函数。

返回串口的数据第一个字节,如果没有返回-1;整数类型int

Serial.peek()

串口读取函数。

串口数据中下一个字节内容,如果没有返回-1;整数类型int

Serial.flush()

清除串口缓冲器内容函数。

清空串口缓存

Serial.print()

串口输出数据函数。

输出字符串数据到串口

语法
Serial.print(val)
Serial.print(val,format)

参数
val: 打印的值,任意数据类型
format: 输出的数据格式,包括整数类型和浮点型数据的小数点位数。

例:

1
2
3
4
5
6
7
8
9
Serial.print(78, BIN) 得到 "1001110"  二进制
Serial.print(78, OCT) 得到 "116" 八进制
Serial.print(78, DEC) 得到 "78" 十进制
Serial.print(78, HEX) 得到 "4E" 十六进制
Serial.print(1.23456, 0) 得到 "1"
Serial.print(1.23456, 2) 得到 "1.23"
Serial.print(1.23456, 4) 得到 "1.2346"
Serial.print('N') 得到 "N"
Serial.print("Hello world.") 得到 "Hello world."

Serial.println()

输出字符串数据到串口并换行

Serial.write()

串口输出数据函数。

输出二进制数据到串口。

语法
Serial.write(val)
Serial.write(str)
Serial.write(buf, len)

参数
val: 字节
str: 一串字节
buf: 字节数组
len: buf的长度

例:

1
2
3
4
5
6
7
8
9
10
11
void setup()
{
Serial.begin(9600);
}

void loop()
{
Serial.write(45); // send a byte with the value 45
int bytesSent = Serial.write(“hello”);
//send the string “hello” and return the length of the string.
}

Serial.serialEvent()

串口数据准备好调用该函数。

read时触发的事件函数

语法
Serial.serialEvent{//statements}

参数
statements: 任何有效的语句。

注意

peek():功能类似于read(),但是我们知道当调用一次read()后,缓冲区的数据流会被读取并删除read过的数据,也就是available值会减少,但peek()不会出现类似情况,其功能类似于检测缓冲区的头部数据,反复调用peek()返回的值是一样的。用得好的话可以精简很多代码。