CSerialPort教程(10) - CSerialPort的DTR和RTS功能
前言
CSerialPort项目是基于C++的轻量级开源跨平台串口类库,用于实现跨平台多操作系统的串口读写。
CSerialPort项目的开源协议自 V3.0.0.171216 版本后采用GNU Lesser General Public License v3.0
为了让开发者更好的使用CSerialPort进行开发,特编写基于4.x版本的CSerialPort教程系列。
本文将介绍如何使用CSerialPort的DTR和RTS功能。
注意:CSerialPort的DTR和RTS功能需要v4.3.0及以上版本。
CSerialPort项目地址:
- https://github.com/itas109/CSerialPort
- https://gitee.com/itas109/CSerialPort
1. 硬件准备
开发板:合宙ESP32C3经典版
IDE:Arduino IDE 2.1.0 (esp32@2.0.8)
USB驱动:CH343SER
2. ESP32C3的DTR和RTS测试程序
功能:
- DTR高电平时,D4或D5亮起,并在串口打印字符串DTR 1
- DTR低电平时,D4 D5每个1秒交替亮起,并在串口打印字符串DTR 0
- RTS低电平时,ESP32C3重启,并在串口打印字符串 INIT
代码:
- CSerialPort_DTR_RTS.ino
// test DTR and RTS for CSerialPort(https://github.com/itas109/CSerialPort)
#define LED_D4_PIN 12 // D4
#define LED_D5_PIN 13 // D5
#define BTN_BOOT_PIN 9 // BOOT Button// BOOT <---> DTR
// RST <---> RTS// DTR(1) => D4 or D5 on
// DTR(0) => D4 D5 alternate flashing per 1 second
// RTS(1) => nothing
// RTS(0) => ESP32 restart, then serial print "INIT"void setup() {Serial.begin(9600);Serial.println("INIT");pinMode(BTN_BOOT_PIN, INPUT);pinMode(LED_D4_PIN, OUTPUT);pinMode(LED_D5_PIN, OUTPUT);digitalWrite(LED_D4_PIN, HIGH);digitalWrite(LED_D5_PIN, LOW);
}void loop() {if (LOW == digitalRead(BTN_BOOT_PIN)) {digitalWrite(LED_D4_PIN, !digitalRead(LED_D4_PIN));digitalWrite(LED_D5_PIN, !digitalRead(LED_D5_PIN));Serial.println("DTR 0");delay(1000);} else {Serial.println("DTR 1");delay(1000);}
}
3. CSerialPort测试程序
这里使用CSerialPort中的example代码(CSerialPort/examples/CommQT)
注意:CSerialPort的DTR和RTS功能需要v4.3.0及以上版本。
测试步骤:
- 编译并运行CommQT
- 选择ESP32C3的串口,波特率选择9600
- 选中DTR,D4 D5每个1秒交替亮起,并在串口打印字符串DTR 0
- 取消选中DTR,D4或D5亮起,并在串口打印字符串DTR 1
- 选中RTS,ESP32C3重启,并在串口打印字符串 INIT
Reference:
- https://github.com/itas109/CSerialPort
- https://gitee.com/itas109/CSerialPort
- https://blog.csdn.net/itas109