3-3-串口的单字节发送与接收
实训项目:串口的单字节发送与接收
编写Arduino程序,在蓝蜻蜓ESP32物联网开发平台上,完成以下的功能:
- 初始化UART0
- 初始化UART0的波特率为115200,并打开串口0。
- 串口接收与发送
- 使用
available()循环检测串口0的接收缓冲区。 - 如果有可读的数据,则使用
read()函数读出一个字节数据。 - 将该字节数据加1后,使用
write()函数将该字节数据通过串口0发送出去。
- 使用
- 代码下载与运行
- 下载代码并运行。
- 利用串口助手工具,向ESP32发送数据和接收输出。

串口写单字节

检测串口数据接收长度

串口读单个字节

程序代码
#include <Arduino.h>
void Init_Seria()
{
Serial.begin(115200);
}
unsigned char dat;
void Serial_Read_Write_OneByte()
{
if (Serial.available() > 0)
{
dat = Serial.read();
dat++;
Serial.write(dat);
}
}
void setup()
{
Init_Seria();
}
void loop()
{
Serial_Read_Write_OneByte();
}
这段代码是一个Arduino程序,用于在蓝蜻蜓ESP32物联网开发平台上实现串口的单字节发送与接收。以下是代码的逐行解释:
#include <Arduino.h>
- 这行代码包含了Arduino核心库,是编写Arduino程序的基础。
void Init_Seria()
{
Serial.begin(115200);
}
- 定义了一个名为
Init_Seria的函数,用于初始化串口。 Serial.begin(115200);这行代码设置了串口的波特率(即数据传输速率)为115200,这样设备就可以通过串口与其他设备进行通信。
unsigned char dat;
- 定义了一个无符号字符变量
dat,用于存储从串口读取的数据。
void Serial_Read_Write_OneByte()
{
if (Serial.available() > 0)
{
dat = Serial.read();
dat++;
Serial.write(dat);
}
}
- 定义了一个名为
Serial_Read_Write_OneByte的函数,用于实现串口的单字节读取和发送。 if (Serial.available() > 0)这行代码检查串口的接收缓冲区是否有可读的数据。dat = Serial.read();读取一个字节的数据到变量dat。dat++;将读取的数据加1。Serial.write(dat);将加1后的数据通过串口发送出去。
void setup()
{
Init_Seria();
}
- 定义了
setup函数,这是Arduino程序的入口点。 Init_Seria();调用Init_Seria函数初始化串口。
void loop()
{
Serial_Read_Write_OneByte();
}
- 定义了
loop函数,这是Arduino程序的主要循环体,会不断重复执行。 Serial_Read_Write_OneByte();调用Serial_Read_Write_OneByte函数,实现串口的单字节读取和发送。
整个程序的逻辑是:在程序开始时初始化串口,然后在主循环中不断检查串口接收缓冲区是否有数据,如果有,则读取数据,加1,并将结果发送出去。这使得通过串口发送的数据在接收时会增加1。

浙公网安备 33010602011771号