ESP32 串口通信代码 (VS Code 开发环境)

复制代码
#include <Arduino.h>

// 定义使用的串口
#define SERIAL1_RX_PIN 9  // 根据您的ESP32开发板调整
#define SERIAL1_TX_PIN 10 // 根据您的ESP32开发板调整

// 全局变量
HardwareSerial Serial1(1); // 使用串口1
String inputString = "";   // 存储接收到的数据
bool stringComplete = false; // 是否接收到完整字符串

void setup() {
  // 初始化串口0(用于调试)
  Serial.begin(115200);
  
  // 初始化串口1(用于外部通信)
  Serial1.begin(115200, SERIAL_8N1, SERIAL1_RX_PIN, SERIAL1_TX_PIN);
  
  // 等待串口初始化完成
  delay(1000);
  
  Serial.println("ESP32 Serial Communication Example");
  Serial.println("Type a message and press Enter to send via Serial1");
  Serial.println("Messages received on Serial1 will be displayed here");
}

void loop() {
  // 检查串口0(调试端口)是否有数据输入
  if (Serial.available()) {
    char inChar = (char)Serial.read();
    
    // 如果收到换行符,则认为输入完成
    if (inChar == '\n') {
      // 通过串口1发送数据
      Serial1.println(inputString);
      Serial.print("Sent: ");
      Serial.println(inputString);
      
      // 清空输入字符串
      inputString = "";
      stringComplete = false;
    } else {
      // 将字符添加到输入字符串
      inputString += inChar;
    }
  }
  
  // 检查串口1是否有数据返回
  if (Serial1.available()) {
    String response = Serial1.readStringUntil('\n');
    Serial.print("Received: ");
    Serial.println(response);
  }
  
  // 短暂延迟以减少CPU使用率
  delay(10);
}

PlatformIO配置文件 (platformio.ini)

复制代码
[env:esp32dev]
platform = espressif32
board = esp32dev
framework = arduino
monitor_speed = 115200

使用说明

  1. 硬件连接:

    • 根据您的ESP32开发板调整RX和TX引脚

    • 常见的ESP32开发板可以使用默认的GPIO9(RX)和GPIO10(TX)

    • 如果需要与其他设备通信,请正确连接TX到RX,RX到TX

  2. 功能说明:

    • 代码初始化了两个串口:Serial(用于调试)和Serial1(用于外部通信)

    • 在Serial输入消息并按回车,消息将通过Serial1发送

    • 从Serial1接收到的任何数据都会显示在Serial监视器上

  3. 在VS Code中运行:

    • 安装PlatformIO插件

    • 创建新项目,选择ESP32开发板

    • 将代码复制到src/main.cpp

    • 连接ESP32开发板

    • 点击PlatformIO的Upload and Monitor按钮

注意事项

  • 请根据您的实际硬件调整RX/TX引脚定义

  • 确保通信双方的波特率设置一致(本例中使用115200)

  • 如果需要更复杂的协议,可以扩展此代码实现数据帧解析等功能

这个示例提供了基本的双向串口通信功能,您可以根据实际需求进行扩展和修改