当前位置: 首页 > news >正文

ESP32 配合上位机串口打印数据

串口发送ON到esp32,立即回复1,立即开始打印串口数据,回复OFF,立即回复1,停止返回数据

// ESP32-S3 串口控制数字打印程序(带即时停止功能)volatile bool isPrinting = false;  // 使用volatile确保多任务中可见性void setup() {Serial.begin(115200);  // 初始化串口通信while (!Serial);       // 等待串口连接Serial.println("Ready. Send 'ON' to start or 'OFF' to stop.");
}void loop() {// 检查串口是否有数据if (Serial.available() > 0) {handleSerialCommand();}
}void handleSerialCommand() {String command = Serial.readStringUntil('\n');command.trim();if (command.equalsIgnoreCase("ON")) {Serial.println("1"); // 回复确认if (!isPrinting) {isPrinting = true;//Serial.println("Starting printing...");// 使用独立任务处理打印,避免阻塞主循环xTaskCreatePinnedToCore(printNumbersTask,   // 任务函数"PrintNumbers",     // 任务名称10000,             // 堆栈大小NULL,              // 参数1,                 // 优先级NULL,              // 任务句柄0                  // 运行在核心0);}} else if (command.equalsIgnoreCase("OFF")) {Serial.println("1"); // 回复确认isPrinting = false;//Serial.println("Stopped. Send 'ON' to resume.");}
}void printNumbersTask(void *pvParameters) {// 从0.1递增到1000for (float i = 0.1; i <= 1000.0 && isPrinting; i += 0.1) {Serial.println(i, 1);//delay(10);checkForStop(); // 更频繁地检查停止命令}// 从1000递减到0.1for (float i = 1000.0; i >= 0.1 && isPrinting; i -= 0.1) {Serial.println(i, 1);//delay(10);checkForStop(); // 更频繁地检查停止命令}if (isPrinting) {//Serial.println("Cycle completed. Starting again...");printNumbersTask(NULL); // 继续下一个循环}vTaskDelete(NULL); // 删除任务
}void checkForStop() {// 快速检查串口是否有停止命令while (Serial.available() > 0) {String command = Serial.readStringUntil('\n');command.trim();if (command.equalsIgnoreCase("OFF")) {Serial.println("1"); // 回复确认isPrinting = false;//Serial.println("Immediate stop requested.");}}
}
http://www.lryc.cn/news/617718.html

相关文章:

  • 【Web 服务的铁三角架构】Flask、Nginx 与 Docker 的分工与协作
  • FFmpeg - 基本 API大全(视频编解码相关的)
  • macOS 搭建 Gitea 私有 Git 服务器教程
  • wed前端第三次作业
  • 算法训练营DAY57 第十一章:图论part07
  • 缓存的三大问题分析与解决
  • STM32蓝牙模块驱动开发
  • 第10节 大模型分布式推理典型场景实战与架构设计
  • 《算法导论》第 19 章 - 斐波那契堆
  • 【SpringBoot】持久层 sql 注入问题
  • 一周学会Matplotlib3 Python 数据可视化-绘制直方图(Histogram)
  • 银河麒麟V10配置KVM的Ubuntu虚机GPU直通实战
  • 梯度裁剪总结
  • 做调度作业提交过程简单介绍一下
  • Spring Cloud Gateway 路由与过滤器实战:转发请求并添加自定义请求头(最新版本)
  • 如何安装 Git (windows/mac/linux)
  • 【数据可视化-85】海底捞门店数据分析与可视化:Python + pyecharts打造炫酷暗黑主题大屏
  • Java数据库编程之【JDBC数据库例程】【ResultSet作为表格的数据源】【七】
  • NY185NY190美光固态闪存NY193NY195
  • cf--思维训练
  • 【C++语法】输出的设置 iomanip 与 std::ios 中的流操纵符
  • Dashboard.vue 组件分析
  • 基于 Axios 的 HTTP 请求封装文件解析
  • 【Redis的安装与配置】
  • ESP32将DHT11温湿度传感器采集的数据上传到XAMPP的MySQL数据库
  • loading效果实现原理
  • 【JAVA】使用系统音频设置播放音频
  • 在线代码比对工具
  • Selenium元素定位不到原因以及怎么办?
  • 机器学习 TF-IDF提取关键词,从原理到实践的文本特征提取利器​