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

四、学习笔记

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值