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

22、touchGFX学习Model-View-Presenter设计模式

touchGFX采用MVP架构,如下所示:
在这里插入图片描述
本文界面如下所示:
在这里插入图片描述
本文将实现两个操作:
1、触摸屏点击开关按键实现打印开关显示信息,模拟开关灯效果
2、板载案按键控制触摸屏LED灯的显示和隐藏

一、触摸屏点击开关按键实现打印开关显示信息,模拟开关灯效果

实现的方向为view->present->model

1、添加led开关交互事件:button_clicked_led

在这里插入图片描述

2、screenView.hpp中声明button_clicked_led函数,再到screenView.cpp中定义此函数并执行通知Presenter层

在这里插入图片描述
在这里插入图片描述

3、screenPresenter.hpp中声明button_clicked_led函数,screenPresenter.cpp中定义此函数将消息传递给model层

在这里插入图片描述
在这里插入图片描述

4、Model.hpp中声明button_clicked_led函数,Model.cpp中定义此函数将依据此消息执行开关灯操作

在这里插入图片描述
在这里插入图片描述
如此即可完成触摸屏开关控制硬件led灯的亮灭
在这里插入图片描述

二、板载案按键控制触摸屏LED灯的显示和隐藏

流程方向:model->modelListener->present->view

1、ModelListener.hpp中声明函数notify_key_event,并在Model.cpp中定义此函数,将外部按键的动作通知给modelListener

因为ModelListener被Model继承了,也被screenPresenter继承了
在这里插入图片描述
在这里插入图片描述

2、screenPresenter.hpp中声明函数notify_key_event,并在screenPresenter.cpp中定义此函数,并通知给view

在这里插入图片描述
在这里插入图片描述

3、screenView.hpp中声明函数notify_key_event,并在screenView.cpp中定义此函数,并更改界面灯的显示隐藏

在这里插入图片描述
在这里插入图片描述

image1_led是这个灯的名字哈
在这里插入图片描述
如此就实现了外部按键控制触摸屏

三、补充另一个:按键切换屏幕背景色

在这里插入图片描述
添加KeyController.cpp|KeyController.hpp文件
在这里插入图片描述

KeyController.cpp

#include "KeyController.hpp"
#include "Key_Driver.h"using namespace touchgfx;void KeyController::init()//按键初始化
{//Key_Init();//在BSP中统一初始化
}bool KeyController::sample(uint8_t& key)//按键扫描
{uint8_t value = 0;if(Key_ScanPin(&value) < 0)return false;//Key_ScanPin按键扫描并获取键值key = value;return true;
}

KeyController.hpp

#ifndef SCREENVIEW_HPP
#define SCREENVIEW_HPP#include <gui_generated/screen_screen/screenViewBase.hpp>
#include <gui/screen_screen/screenPresenter.hpp>
#include "stdint.h"class screenView : public screenViewBase
{
public:screenView();virtual ~screenView() {}virtual void setupScreen();virtual void tearDownScreen();virtual void button_clicked_led();virtual void notify_key_event(uint8_t event,uint8_t KeyValue);
protected:
};#endif // SCREENVIEW_HPP

TouchGFXHAL.cpp添加按键执行代码
打开​​TouchGFXHAL.cpp​​​文件新建一个​​KeyController​​对象
然后在​​void TouchGFXHAL::initialize()​​里面这个对象赋值给系统,记得调用初始化函数
在这里插入图片描述
如此即可实现按键改变屏幕背景色

三、参考文章

没使用过touchGFX则先看视频:https://www.yuanzige.com/course/detail/80229
Model-View-Presenter设计模式示例:https://smallash.blog.csdn.net/article/details/127047799?spm=1001.2014.3001.5502

四、学习笔记

http://www.lryc.cn/news/129648.html

相关文章:

  • Python Opencv实践 - 图像高斯滤波(高斯模糊)
  • 使用 Qt 生成 Word 和 PDF 文档的详细教程
  • ssm+vue校园美食交流系统源码
  • 电力系统基础知识(一)—电力系统概述
  • spring(15) SpringBoot启动过程
  • 耕地单目标语义分割实践——Pytorch网络过程实现理解
  • 画质提升+带宽优化,小红书音视频团队端云结合超分落地实践
  • 【傅里叶级数与傅里叶变换】数学推导——3、[Part4:傅里叶级数的复数形式] + [Part5:从傅里叶级数推导傅里叶变换] + 总结
  • 第二章MyBatis入门程序
  • AgentBench::AI智能体发展的潜在问题(二)
  • C++中的运算符总结(4):逻辑运算符(上)
  • Flink安装与使用
  • CentOS系统环境搭建(七)——Centos7安装MySQL
  • 3.react useRef使用与常见问题
  • Axios使用CancelToken取消重复请求
  • 九耶丨阁瑞钛伦特-Spring boot与Spring cloud 之间的关系
  • 总结,由于顺丰的问题,产生了电脑近期一个月死机问题集锦
  • C#程序配置读写例子 - 开源研究系列文章
  • Angular中的管道Pipes
  • React入门 jsx学习笔记
  • sqlserver数据库中把一张表中的数据复制到另一张表中
  • el-table 多个表格切换多选框显示bug
  • UE5.2程序发布及运行问题记录
  • c语言strtol函数、strtod函数、strtoul函数浅悉
  • Spark第三课
  • LangChain手记 Chains
  • ONNX版本YOLOV5-DeepSort (rknn版本已经Ready)
  • MySQL的约束
  • Lnton羚通关于【PyTorch】教程:torchvision 目标检测微调
  • AMD fTPM RNG的BUG使得Linus Torvalds不满