网传touchfgx启动过程

FrontendHeap 的构造函数--->调用到 FrontendHeapBase 的界面跳转函数 栈是主画面

#ifndef FRONTENDHEAP_HPP
#define FRONTENDHEAP_HPP

#include <gui_generated/common/FrontendHeapBase.hpp>

class FrontendHeap : public FrontendHeapBase
{
public:
  
    FrontendApplication app;
    Model model;

private:
    FrontendHeap() : FrontendHeapBase(presenters, views, transitions, app),
                     app(model, *this)
    {
        gotoStartScreen(app);
    }
};



在:FrontendHeapBase.hpp
    virtual void gotoStartScreen(FrontendApplication& app)
    {
        app.gotoScreen1ScreenNoTransition();
    }
	
	也就是
void FrontendApplicationBase::gotoScreen1ScreenNoTransition()
{
    transitionCallback = touchgfx::Callback<FrontendApplicationBase>(this, &FrontendApplication::gotoScreen1ScreenNoTransitionImpl);
    pendingScreenTransitionCallback = &transitionCallback;
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
【RT-Thread作品秀】家庭医用多功能检测仪作者:李元江 概述背景随着人们生活水平不断提高,人们越来越注重身心健康。现在家用型的医用检查仪器太少,很多人想要检查一些简单的项目,也要专门去医院检查,这样很不方便。普通的家用医用型检查仪器,功能简单,缺少智能性。所以智能家庭医用多功能检测仪器是很有需要的。 功能实时时间显示 网络时间获取、自动对时 天气情况获取、显示 显示室内温度、气压 检测心率、血氧浓度,检测时可以实时查看心率变化值。 开发环境硬件:APT-Pi V1.5 、ESP32-01S 、LPS22HH 、MAX30102 、4.3寸触摸屏(480*272) RT-Thread版本:V4.0.2 开发工具及版本:RT_Thread StudioV1.1.5 RT-Thread使用情况概述内核部分: 任务调度,本软件设计五个执行线程,分别为Main线程、RTC线程、LPS22HH线程、MAX30102线程、TouchGFX线程。 组件部分: Finsh、C++、libc、i2c框架。 C++,i2c在移植TouchGFX需要使用到。 软件包部分: cJson、gt9147 通过cJson解析从网络上获取到的天气数据。 触摸屏触摸芯片为gt9147,所以需要gt9147软件包。 库部分: TouchGFX库 GUI界面显示框架。 硬件框架该设计硬件大体有五大部分:主控、触摸屏、wifi模块、温度传感器、心率血氧传感器。它们的连接框图如下图所示。 主控板使用的是ART_Pi。 触摸屏使用RGB888和I2C接口与主控板进行连接,触摸屏芯片为GT9147。 温度传感器使用的是LSP22HH,LSP22HH是一款兼容IIC和SPI接口的芯片,能够采集温度和气压值,这里使用使用SPI与主控板进行通信。 心率血氧传感器使用的是MAX30102,主要通过IIC接口与主控板进行通信,INT中断输出引脚与主控GPIO进行连接,主控可以根据INT信号,判断数据是否可读。 Wifi模块使用的是ESP32-01S,ART_Pi自带有Wifi模块但是最近没有时间去研究该自带模块该怎么去使用,所以先使用ESP32-01S进行开发。ESP32-01S主要使用UART串口与主控板进行通信。主控板的两个GPIO口与ESP32-01S的CH_PD和RST连接。CH_PD是ESP32-01S的使能信号,RST是重启信号。 软件框架说明本设计使用RT_Thread进行开发,主要设计有五个执行线程,分别为Main线程、RTC线程、LPS22HH线程、MAX30102线程、TouchGFX线程。 总的软件框图如下图所示。 系统开启后,主要进行RT_Thread系统内部初始化,然后进行各个线程的调用。 软件模块说明Main线程进入Main线程后,会先通过Wifi模块获取网络时间和天气情况。这就相当于系统启动后,会先获取网络时间和天气情况,到达开机自动对时功能。之后会进入while(1)循环,在While循环中根据RefreshFlag标志位,来判断是否手动获取网络时间和天气数据。在触摸屏主界面点击刷新按钮,会置位RefreshFlag标志位,从而手动获取网络时间个天气数据。 其流程图如下所示。 RTC线程我这里没使用RT_Thread的RTC,而是自己实现了一个RTC。线程设置为每1S进入该线程,进入后,时间戳数据+1,然后通过把时间戳转化为北京时间,就可以得到时间数据。当然,这里如果长时间运行,时间偏差肯定会大,考虑到设备一般不会长时间使用,所以暂时使用该方案。 LPS22HH线程LPS22HH线程任务主要是获取温度和气压情况。刚开始进入该线程时,先进行SPI的初始化和LPS22HH传感器的初始化,然后每2S调度一次进行获取温度和气压值。 其流程图如下所示。 MAX30102线程MAX30102线程任务主要是获取血氧和心率值。刚进入该线程时,先进行IIC的初始化和MAX30102器件初始化。然后进入一个循环调度过程,在循环调度过程中,根据checkFlag标志位状态,来判断是否进行获取血氧和心率值。CheckFlag可以在触摸屏检测界面进行置位和清零。点击第一次checkFlag置位,点击第二次chechFlag清零。 其流程图如下所示。 TouchGFX线程触摸屏GUI方面用的TouchGFX框架。为TouchGFX设置了一个循环调度线程。该线程主要包括两个任务处理,显示处理和触摸处理。显示处理主要是更新时间、温度气压情况、血氧、心率值和心率曲线值。触摸处理主要是进行界面更换,获取网络时间、实时天气情况,心率、血氧检测操作。 其流程图如下所示。 GUI界面GUI使用TouchGFX框架,主要设计有两个界面:主界面和检测界面。 主界面 主界面主要功能是显示时间、

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值