3-3-串口的单字节发送与接收

实训项目:串口的单字节发送与接收

编写Arduino程序,在蓝蜻蜓ESP32物联网开发平台上,完成以下的功能:

  1. 初始化UART0
    • 初始化UART0的波特率为115200,并打开串口0。
  2. 串口接收与发送
    • 使用available()循环检测串口0的接收缓冲区。
    • 如果有可读的数据,则使用read()函数读出一个字节数据。
    • 将该字节数据加1后,使用write()函数将该字节数据通过串口0发送出去。
  3. 代码下载与运行
    • 下载代码并运行。
    • 利用串口助手工具,向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。

posted @ 2024-09-10 22:43  ZHYWJML  阅读(58)  评论(0)    收藏  举报