Esp32_Link调试笔记(Vol.3)

news/2025/2/24 11:57:22/文章来源:https://www.cnblogs.com/moyuu/p/18723965

这是一个标题

前面两章网上大多都有教程且难度不大,重点是记录学习一下@FASTSHIFT大佬的"页面生命周期管理"和"消息订阅发布框架"。当然LVGL API从8.3升级至了9.2。
当然接下来的程序是基于屏幕正常显示,触摸驱动正常情况下。(即显示方向与期望相同,滑动方向与预期相同)

第三章 移植代码

原始参考代码
修改后本章代码

向页面生命周期中添加页面

修改文件
main.cpp

点击查看代码
添加 #include "APP.h"void setup(){ .........App_Init();}
按照_Template页面格式创建一下文件

image
├── Test.cpp Model和View初始化,控件回调(界面右滑+按键check)
├── Test.h
├── TestModel.cpp 数据处理初始化(实际是给数据管理发送命令,传给数据管理,数据管理最终调用HAL_test里的函数,目前注释掉)
├── TestModel.h
├── TestView.cpp 界面控件创建 (创建一个bottom)
└── TestView.h
在App.cpp中,注释掉所有没用到的啊界面,只保留
manager.Install("Test", "Pages/Test");
manager.Push("Pages/Test");

这样就开机会直接跳到Test界面

AppFactory.cpp
去掉无用界面添加 APP_CLASS_MATCH(Test);

这样界面就添加完了。

向数据管理中添加数据

在Dataproc文件夹中建立DP_test.cpp
DP_LIST.inc中添加DP_DEF(Test, sizeof(HAL::Test_Info_t));完成Test的account初始化,及自身对应命令的初始化。
在TestModel.cpp中account->NotifyOnEvent函数会通过Dateproc最终调用DP_test.cpp中的OnEvent函数。
所有命令在HAL_Def中定义。
在HAL文件夹下建立HAL_test.cpp
HAL_Def.h添加Test的account所需指令。

点击查看代码
    typedef enum Test_cmd{Ts_START = 0,Ts_UPDATE,Ts_STOP,} Test_cmd_t;typedef struct{uint16_t data1;uint16_t data2;Test_cmd_t test_cmd; } Test_Info_t;
举例: Test这个account拥有三条指令和两个数据 通过**TestModel.cpp**中

初始化Account在DataCenter.cpp中

account = new Account("TestModel", DataProc::Center(), 0, this);
调用Account在Account.cpp中

account->Notify("Test", &info_val, sizeof(info_val));

Account::Notify函数回调
DP_Test.cpp的onEvent函数

点击查看代码
switch (info->test_cmd){case HAL::Ts_START:HAL::Test_Init(info);break;case HAL::Ts_UPDATE:HAL::Test_Update(info);break;case HAL::Ts_STOP:break;default:break;}

onEvent还是根据命令的不同调用HAL_Test中对应函数,完成整个数据的传递。

例程是按下Test页面上的按键,实现数据data1+1

大概就是按照格式添加就好了
最终实现了添加Test页面,Test数据

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/888953.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

集合幂级数学习笔记

集合幂级数学习笔记 一、集合幂级数基础 类比形式幂级数将序列对应为一个多项式,我们可以用类似的方法,把一个集合及其所有子集变为一个多项式的形式,对于集合 \(U\) 标准形式如下: \[F(x)=\sum_{S\subseteq U}f_{S}x^S \]这里 \(x^S\) 只是一个占位符,就像形式幂级数的 \…

赛前启航 | 微软 AI 开发者挑战赛三场指导直播联袂来袭!

三场直播,为你的参赛之路注入强劲动力随着微软 AI 开发者挑战赛的火热进行,赛前指导直播已成为众多参赛者获取技术干货、灵感碰撞和实战技巧的绝佳平台。继前两期的精彩呈现,第三、四、五期直播即将接连登场,为开发者们带来更加深入的 AI 技术剖析和项目实战指引。无论你是…

Java基础学习(十九)

Java基础学习(十九):动态代理 目录Java基础学习(十九):动态代理概念使用 本文为个人学习记录,内容学习自 黑马程序员概念作用:可以无侵入式地给代码增加额外的功能 代理内部就是对象要被代理的方法 实际步骤:调用者先调用代理中的方法,实现一些额外的功能,再由代理去…

安川机器人伺服电机维修

在现代工业生产中,安川机器人发挥着至关重要的作用。然而,就像任何机械设备一样,它们也会面临各种故障。机器人故障的出现会严重影响生产效率,增加生产成本。例如,当安川机器人伺服电机出现问题时,可能导致机器人无法精准执行任务,这在自动化生产线上是非常严重的情况。…

BTA24-ASEMI双向可控硅的卓越魅力

BTA24-ASEMI双向可控硅的卓越魅力编辑:ll BTA24-ASEMI双向可控硅的卓越魅力 型号:BTA24 品牌:ASEMI 封装:TO-220F 特性:单向可控硅 正向电流:25A 反向耐压:600V~800V 引脚数量:3 芯片个数:2 包装方式:3000pcs/盘 浪涌电流: 特点:单向可控硅 工作温度:-40℃~150℃ …

36、车辆过户

咨询电话:12123—>1—>5 直接说人工服务(听到对方说咨询就说 人工服务 ) 1、车辆购车日期,看行驶证(这里有个注册日期和发证日期) 2、

用PyTorch从零构建 DeepSeek R1:模型架构和分步训练详解

DeepSeek R1 的完整训练流程核心在于,在其基础模型 DeepSeek V3 之上,运用了多种强化学习策略。本文将从一个可本地运行的基础模型起步,并参照其技术报告,完全从零开始构建 DeepSeek R1,理论结合实践,逐步深入每个训练环节。通过可视化方式,由浅入深地解析 DeepSeek R1 …

解锁跨境电商成功密码:运营优化五步走

跨境电商运营优化是一个涉及多个方面的复杂过程,以下是一些关键的优化策略: 一、市场调研与精准选品 深入分析目标市场 ○ 通过市场调研工具(如Google Trends、Jungle Scout等)分析市场趋势、竞争程度及潜在需求,挖掘蓝海产品。 ○ 了解目标市场的消费需求、文化差异、政策…

【每日一题】20250224

梦是好的;否则,钱是要紧的。【每日一题】如图所示,放在固定斜面上的物块以加速度 \(a\) 沿斜面匀加速下滑,若在物块上再施加一个竖直向下的恒力 \(F\),则 A. 物块可能匀速下滑 B. 物块仍以加速度 \(a\) 匀加速下滑 C. 物块将以大于 \(a\) 的加速度匀加速下滑 D. 物块将以小…

# 如何让大模型安全地自动生成代码并执行? ## 前言

前言 本文带来的分享是在crewai中使用代码解释器,为了安全,代码在docker中运行。 为什么要使用代码解释器呢? 之前的文章中使用的是function call + 各种工具 来完成一个任务,比如文件读取工具、文件保存工具等。 但是用户的需求是多变的,你很难提前写好所有的工具。 读取…

关于远程桌面

现有电脑A(win11系统)的开机PIN是123;现在想通过windows自带的“远程桌面应用”登录到电脑A上; 下图是电脑A上的设置 (1)、设置允许远程登录(2)将用户Administrator设置为远程桌面用户(3)在与电脑A在同一个网段内的电脑B上,打开远程桌面应用,输入电脑A的IP或电脑名…