诈知 发表于 6 天前

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

<br>#include

// 定义使用的串口
#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)


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)
[*]如果需要更复杂的协议,可以扩展此代码实现数据帧解析等功能
这个示例提供了基本的双向串口通信功能,您可以根据实际需求进行扩展和修改
 

来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
页: [1]
查看完整版本: ESP32 串口通信代码 (VS Code 开发环境)