CSerialPort教程(10) - CSerialPort的DTR和RTS功能

news/2025/1/18 7:27:21/

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:

  1. https://github.com/itas109/CSerialPort
  2. https://gitee.com/itas109/CSerialPort
  3. https://blog.csdn.net/itas109

http://www.ppmy.cn/news/103750.html

相关文章

Apache Doris 数据导入导出 , Binlog Load

4.数据的导入导出 按照使用场景划分 点击图片可查看完整电子表格 4.1使用 Insert 方式同步数据 用户可以通过 MySQL 协议&#xff0c;使用 INSERT 语句进行数据导入。 INSERT 语句的使用方式和 MySQL 等数据库中 INSERT 语句的使用方式类似。 INSERT 语句支持以下两种语法&…

今天面了一个9个月测试经验的人,开口就跟我要18K,我都愣住了....

2月初我入职了深圳某家创业公司&#xff0c;刚入职还是很兴奋的&#xff0c;到公司一看我傻了&#xff0c;公司除了我一个测试&#xff0c;公司的开发人员就只有3个前端2个后端还有2个UI&#xff0c;在粗略了解公司的业务后才发现是一个从零开始的项目&#xff0c;目前啥都没有…

SDUT数据库原理——第九章作业(参考答案)

第9章 作业: 1.简述数据库管理系统查询优化的一般步骤。 答:查询优化的一般步骤如下: (1)将查询转化为某种内部表示,通常是语法树。

uniapp中根据不同状态跳转不同页面

大纲&#xff1a; 今天我们讲 在uniapp中&#xff0c;如何根据不同的状态跳转到不同的页面。 以下代码&#xff0c;是Tabs标签的展示 &#x1f33f; :list"list" 是参数配置&#xff0c;该参数要求为数组&#xff0c;元素为对象&#xff0c;且对象要有name属性&…

Windows提权:利用MySQL数据库

目录 数据库提权的基本条件 MySQL UDF提权 什么是UDF UDF如何应用到提权 利用思路 MSF提权实战 MySQL 启动项提权 原理&#xff1a;通过MySQL数据库把木马写到Windows启动项中 Windows启动项位置 MSF提权利用实战 MySQL 反弹shell提权 数据库提权的基本条件 知道数据…

win10 Mysql8.0以上重置初始密码

第一步&#xff1a;关闭Mysql服务 首先&#xff0c;确保自己已经关闭了Mysql的服务 net stop mysql 问题&#xff1a;关闭时报错 原因是&#xff1a;因为net start 服务名&#xff0c;启动的是win下注册的服务。此时&#xff0c;系统中并没有注册mysql到服务中。即当前路径下…

粉丝经济:互帮互助,众筹,人人帮我我帮人人

目录 用户精准定位&#xff1a; 用户裂变 用户在线“买卖需要注册&#xff1a;为后期思域流量变现 用户容器“APP&#xff0c;小程序”&#xff1a;用户资产化 LBS(一人千面&#xff0c;个性化定制&#xff0c;根据地理位置进行提醒&#xff1a;优惠券”) 粉丝渠道化&…

【C++】手把手教你模拟实现string类

模拟实现string 前言类的成员变量构造函数析构函数size和length[ ] 重载迭代器赋值运算符重载和拷贝构造函数拷贝构造函数赋值运算符重载现代式写法 reserve 和 resizereserveresize 字符串追加push_backappend insertpos位置插字符pos位置插字符串 erase>> 和 <<&…