#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
使用说明
-
硬件连接:
-
根据您的ESP32开发板调整RX和TX引脚
-
常见的ESP32开发板可以使用默认的GPIO9(RX)和GPIO10(TX)
-
如果需要与其他设备通信,请正确连接TX到RX,RX到TX
-
-
功能说明:
-
代码初始化了两个串口:Serial(用于调试)和Serial1(用于外部通信)
-
在Serial输入消息并按回车,消息将通过Serial1发送
-
从Serial1接收到的任何数据都会显示在Serial监视器上
-
-
在VS Code中运行:
-
安装PlatformIO插件
-
创建新项目,选择ESP32开发板
-
将代码复制到src/main.cpp
-
连接ESP32开发板
-
点击PlatformIO的Upload and Monitor按钮
-
注意事项
-
请根据您的实际硬件调整RX/TX引脚定义
-
确保通信双方的波特率设置一致(本例中使用115200)
-
如果需要更复杂的协议,可以扩展此代码实现数据帧解析等功能
这个示例提供了基本的双向串口通信功能,您可以根据实际需求进行扩展和修改