LOADING

加载过慢请开启缓存 浏览器默认开启

arduino的串口通信

arduino的串口通信

工程下载

arduino提供了非常强大的串口通信函数,这可能是我唯一觉得arduino的优点
他可以使用简单的函数配置和使用串口与其他设备进行通信
当然串口通信还是要看单片机是否有指定的IO
也不是所有的IO都支持串口

arduino的串口是否接收到数据

Serial.available()

该函数将会返回等待读取的数据字节数
等待读取的数据字节数。
返回值数据类型:int

arduino的禁用串口

Serial.end()    

终止串行通讯,包括rx,tx
可调用 Serial.begin()重新打开串行通讯。

arduino的查找串口是否有指定数据

Serial.find(数据内容);

数据内容:
被查找字符串。
允许使用String或char类型。

返回值:如果接收到的数据内容一致就会返回真(不为0的数)
否者就是假(0)bool类型

arduino的查找串口是否有指定数据带结束

Serial.findUntil(开始执行数据内容, 终止的数据内容);

开始执行数据内容:
允许使用String或char类型。如果串口读取到的和开始执行数据内容一致
就会返回真,否者为假

终止的数据内容:
用于设置终止函数执行的字符串信息。
设备在读取数据时一旦读取到此终止字符串,将会结束函数执行并返回。
可以用于开始和结束函数

arduino的串口数据提取整形类型的数据

Serial.parseInt()

返回值:
在输入信息中找到的整数数值。类型:long
其他数据会丢失

arduino的串口数据提取浮点型类型的数据

Serial.parseFloat()

返回值:
在输入信息中找到浮点数值。类型:float

arduino的串口初始化设置波特率

Serial.begin(波特率);

波特率:
设置电脑与Arduino进行串口通讯时的数据传输速率(每秒传输字节数)。
可使用以下速率:300, 600, 1200, 2400, 4800, 9600, 14400, 19200, 28800, 38400, 57600, 115200等
你也可以根据你所使用的设备而设置其他传输速率。(数据类型: long)

arduino的串口发送一个字节

Serial.write(字节)
Serial.write(字符串)
Serial.write(字节数组, 长度)

字节:
0x(xx)
字符串:
比如发送123就会变成0x49 0x50 0x51
字节数组:
创建数组,把字节存里面
长度:
发送多少的字节
返回值:
会返回发送的字节数。

arduino的串口发送数据

Serial.print(数据, 模式);

数据:
如果指定模式的情况下,默认以ASCII码形式发送
Serial.print(数据)

模式:
BIN (binary二进制)
OCT (octal八进制)
DEC (decimal十进制)
HEX (hexadecimal十六进制)
指定小数点的位数:输入具体的数字来指定多少位
Serial.print(78, BIN) 发送 “1001110”
Serial.print(78, OCT) 发送 “116”
Serial.print(78, DEC) 发送 “78”
Serial.print(78, HEX) 发送 “4E”
Serial.println(1.23456, 0) 发送 “1”
Serial.println(1.23456, 2) 发送 “1.23”
Serial.println(1.23456, 4) 发送 “1.2346”

你可以用F()把待发送的字符串包装到flash存储器。例如:
Serial.print(F(“Hello World”))

arduino的串口发送数据带换行

Serial.println(数据,  模式)

具体参数不多说和上面的一样,只是多了换行

arduino的串口读取一个字节(非数据流)

Serial.peek();

读取一个字节的数据,如果没数据返回值为0,
如果是一串数据的话,第一个数据读出后不会消失所以只能读取第一个数据
read可以读取一串数据

arduino的串口读取字符串

Serial.readString()

返回值:
接收到的数据,类型为字符串。

arduino的串口读取字符串带终止

Serial.readStringUntil(终止符);

终止符:
终止字符。用于设置终止函数执行的字符信息。
设备在读取数据时一旦读取到此终止字符,将会结束函数执行。允许使用char类型。
返回值:
接收到的数据,类型为字符串。

arduino的串口读取一个字节(数据流)

Serial.read()

返回值:
设备没有接收到数据时,返回值为-1
设备接收到数据时,返回值为接收到的数据流中的1个字符
函数可用于从设备接收到数据中读取一个字节的数据。
读取数据流,数据会放缓存里面,
读取一个数据就会丢失一个数据,下一个数据就会替换上去

arduino的串口读取数据并且存储在数组中

Serial.readBytes(变量/数组, 读取字节上限);

变量/数组:
用于存储读取到的信息。允许使用char或者byte类型的变量或数组。
读取字节上限:
指定的字节数量后就会停止运行。允许使用int类型

arduino的串口读取数据并且存储在数组中带停止

Serial.readBytesUntil(终止字符, 变量/数组, 读取字节上限);

终止字符:
用于设置终止函数执行的字符信息。设备在读取数据时一旦读取到此终止字符
将会结束函数执行。允许使用char类型。
变量/数组:
用于存储读取到的信息。允许使用char或者byte类型的变量或数组。
读取字节上限:
指定的字节数量后就会停止运行。允许使用int类型

arduino的查找串口设置缓存区

Serial.flush()

flush函数不具备清楚缓存效果
当我们通过Serial.print或Serial.println来发送数据时,被发送的字符数据将会存储于开发板的“发送缓存”中。
这么做的原因是开发板串行通讯速率不是很高,如果发送数据较多,发送时间会比较长。
在没有使用flush函数的情况下,开发板不会等待所有“发送缓存”中数据都发送完毕再执行后续的程序内容。
也就是说,开发板是在后台发送缓存中的数据。程序运行不受影响。
相反的,在使用了flush函数的情况下,开发板是会等待所有“发送缓存”中数据都发送完毕以后,再执行后续的程序内容。

补充:
清除接收缓存

void setup() {
Serial.begin(9600);
}

void loop() {
 clean ();//清除缓存的函数
}

void clean ()
{
// 以下while循环语句将会清除接收缓存内容。
// 具体工作原理是这样的。每当有数据输入接收缓存后,
// 我们可以使用Serial.read()来读取接收缓存中的内容。
// 这时,如果我们对Serial.read()函数的返回值不加以任何利用
// 那么读取到的数据,也就是Serial.read()函数的返回值将会在
// 下一次执行Serial.read时所抛弃。利用while循环语句,我们可以
// 保证在接收缓存中有数据的时候,反复将串口接收缓存中的信息读取并抛弃。
// 从而达到清除接收缓存的目的。
while(Serial.available()){
    Serial.println("Clearing Serial Incoming Buffer.");
    Serial.read();
} 

// 当接收缓存为空时,Serial.read返回值为“-1”
// 通过以下语句我们将看到无论我们是否通过串口监视器
// 输入信息,开发板的串口监视器会一直输出:
// "Incoming Buffer is Clear."
// 这是因为接收缓存中的信息被以上while语句中的内容给清除掉了。
if (Serial.read() == -1){
    Serial.println("Incoming Buffer is Clear.");
}
}

使用方法:
1、Serial.begin(波特率);先配置波特率
2、 Serial.print(数据, 模式);发送
3、Serial.read();读取

如果要使用多个串口
Serialx.begin();x不填就是默认UART0,1就是UART1
比如
Serial1.begin()就是使用UART1
Serial2.begin()就是使用UART2