【瑞昱RTL8763E】刷屏

1 显示界面填充

用户创建的各个界面在 rtk_gui group 中。各界面中 icon[]表对界面进行描述,表中的每个元素代表一 个显示元素,可以是背景、小图标、字符等,UI_WidgetTypeDef 结构体含义如下:

typedef struct _UI_WidgetTypeDef

{

    int16_t x;                              //起始显示位置横坐标

    int16_t y;                              //起始显示位置纵坐标

    int16_t active_ys;                       //有效滑动区域纵向起始位置

    int16_t active_ye;                       //有效滑动区域纵向结束位置

    int16_t width;                          //图片宽度

    int16_t hight;                          //图片高度

    uint32_t addr;                          //图片在flash中地址

    uint16_t widget_id_type;                //图标类型(背景、普通图标、遮挡图标、表盘指针、字符等)

    union

   {

        UI_ClockPointerTypeDef clock_pointer;

        UI_StringRecordTypeDef string_mem;

        uint32_t mask_addr;

        uint32_t graph_color;

        uint32_t num_string_addr;

    } u;

    bool touch_capability;                  //是否支持点触菜单切换

    void (*widget_touch_func)(uint32_t button_touch_type);              //点触菜单切换回调函数

} UI_WidgetTypeDef;

 

typedef struct _UI_StringRecordTypeDef

{

    uint16_t single_font_height;     //字体高度

    uint16_t font_number;         //将要显示字符串中第几个字符

    uint16_t font_count;           //字符个数

    uint32_t font_color;           //字符颜色

} UI_StringRecordTypeDef;

 

2 回调函数实现功能

/* change Here for UI */

const UI_MenuTypeDef Player =

{

    /* change Here for UI */

    .name = (const char *)"Player",

    .MenuParent = NULL,

    .MenuSub = NULL,

    .button_func = menu_button_cb,

    .touch_func = menu_touch_cb,

    .update_func = menu_update_cb,

    .dynamic_cb = menu_dynamic_time_cb,

    .display_cb = menu_display_time_cb,

    .cur_display_info = menu_display_info_cb,

    .constructor_cb = menu_constructor_cb,

    .destructor_cb = menu_destructor_cb,

    .pWidgetList = (UI_WidgetTypeDef *)icon,

    .current_max_widget = sizeof(icon) / sizeof(UI_WidgetTypeDef),

};

menu_touch_cb 触摸屏回调函数,包括基本的触摸滑动类型。

触摸滑动类型

含义解释

TOUCH_HOLD

横向跟指拖动

TOUCH_HOLD_Y

纵向跟指拖动

TOUCH_ORIGIN_FROM_X

横向回弹

TOUCH_ORIGIN_FROM_Y

纵向回弹

TOUCH_RIGHT_SLIDE

向右快速滑动

TOUCH_LEFT_SLIDE

向左快速滑动

TOUCH_UP_SLIDE

向上快速滑动

TOUCH_DOWN_SLIDE

向下快速滑动

TOUCH_INVALIDE

无效滑动

 在此回调函数中可以实现菜单之间相互切换的逻辑关系。利用rtl_gui_menu_update()rtl_gui_menu_slide()接口表明菜单之间的切换关系,接口详细说明参考下一节。

menu_constructor_cb构建当前菜单:

menu_ destructor _cb销毁当前菜单: 

menu_display_info_cb更新菜单图标内容数组,例如时间菜单每次刷屏时所显示的时间不同,这时此回调回来更新所要显示的时间。

menu_dynamic_time_cb界面定时刷新回调。

menu_update_cb界面刷新回调。

3 关键接口

实际刷屏接口:

void rtl_gui_menu_update(UI_MenuTypeDef *ui_cur, void *p_ui_cur_argv, \

                      UI_MenuTypeDef *ui_sub, void *p_ui_sub_argv, \

                      UI_MenuTypeDef *ui_par, void *p_ui_par_argv, \

                      int16_t detal_x, int16_t detal_y)

  • ui_cur,当前菜单,p_ui_cur_argv对应菜单内容更新;
  • ui_sub,下滑/右滑菜单,p_ui_sub_argv对应菜单内容更新;
  • ui_par,上滑/左滑菜单p_ui_par_argv对应菜单内容更新
  • detal_x,滑动造成的横向偏移;
  • detal_y,滑动造成的纵向偏移;

 记录各个菜单详情以及滑动位置及距离:

void rtl_gui_menu_slide(UI_MenuTypeDef *ui_cur, void *p_ui_cur_argv, \

                    UI_MenuTypeDef *ui_sub, void *p_ui_sub_argv, \

                    UI_MenuTypeDef *ui_par, void *p_ui_par_argv, \

                    int16_t from_x, int16_t to_x, \

                    int16_t from_y, int16_t to_y) 

  • ui_cur,当前菜单,p_ui_cur_argv对应菜单内容更新;
  • ui_sub,下滑/右滑菜单,p_ui_sub_argv对应菜单内容更新;
  • ui_par,上滑/左滑菜单p_ui_par_argv对应菜单内容更新
  • from_x,横向起始滑动位置;
  • to_x,横向目标位置;
  • from_y,纵向起始滑动位置;
  • to_y,纵向目标位置;

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

vite学习教程03、vite+vue2打包配置

文章目录 前言一、修改vite.config.js二、配置文件资源/路径提示三、测试打包参考文章资料获取 前言 博主介绍:✌目前全网粉丝3W,csdn博客专家、Java领域优质创作者,博客之星、阿里云平台优质作者、专注于Java后端技术领域。 涵盖技术内容&…

【深度强化学习基础】(一)基本概念

【深度强化学习基础】(一)基本概念 一、概率论基础知识二、强化学习领域术语三、强化学习中两个随机性的来源:四、rewards以及returns五、Value Functions1.Action-Value Function Q π ( s , a ) Q_\pi(s,a) Qπ​(s,a)2.State-Value Funct…

【高等数学学习记录】函数的极限

一、知识点 (一)知识结构 #mermaid-svg-Dz0Ns0FflWSBWY50 {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-Dz0Ns0FflWSBWY50 .error-icon{fill:#552222;}#mermaid-svg-Dz0Ns0FflWSBWY50 .erro…

影刀---如何进行自动化操作

本文不是广告,没有人给我宣传费,只是单纯的觉得这个软件很好用 感谢大家的多多支持哦 本文 1.基本概念与操作(非标准下拉框和上传下载)非标准对话框的操作上传对话框、下载的对话框、提示的对话框 2.综合案例3.找不到元素怎么办&a…

Leecode刷题之路第12天之整数转罗马数字

题目出处 12-整数转罗马数字-题目出处 题目描述 个人解法 思路: todo 代码示例:(Java) todo复杂度分析 todo 官方解法 12-整数转罗马数字-官方解法 方法1:模拟 思路: 代码示例:&#xff08…

class 032 位图

这篇文章是看了“左程云”老师在b站上的讲解之后写的, 自己感觉已经能理解了, 所以就将整个过程写下来了。 这个是“左程云”老师个人空间的b站的链接, 数据结构与算法讲的很好很好, 希望大家可以多多支持左程云老师, 真心推荐. 左程云的个人空间-左程云个人主页-哔哩哔哩视频…

SpringBoot项目:前后端打包与部署(使用 Maven)

文章目录 IDEA后端打包与部署(使用 Maven)1. 确保 Maven 已安装,并引入 pom 插件2. 清理并安装项目3. 定位生成的 JAR 包和配置文件4. 创建部署文件夹5. 上传到服务器 前端打包与部署(使用 npm)1. 确保 Node.js 和 npm…

Oracle 数据库安装和配置详解

Oracle 数据库安装和配置详解 Oracle 数据库是一款功能强大、广泛使用的企业级关系数据库管理系统 (RDBMS),适用于处理大型数据库和复杂事务。本文将介绍如何在 Linux 和 Windows 环境下安装 Oracle 数据库,并对其进行基本配置,帮助开发者快…

深入理解MySQL InnoDB中的B+索引机制

目录 一、InnoDB中的B 树索引介绍 二、聚簇索引 (一)使用记录主键值的大小进行排序 页内记录排序 页之间的排序 目录项页的排序 (二)叶子节点存储完整的用户记录 数据即索引 自动创建 (三)聚簇索引…

[ 蓝桥 ·算法双周赛 ] 第 19 场 小白入门赛

&#x1f525;博客介绍&#xff1a; EvLast &#x1f3a5;系列专栏&#xff1a; <<数据结构与算法>> << 算法入门>> << C项目>> &#x1f3a5; 当前专栏: << 算法入门>> 专题 : 帮助小白快速入门算法竞赛 &#x1f44d…

机器学习西瓜书笔记(十四) 第十四章概率图模型

第十四章 概率图模型14.1 隐马尔可夫模型14.1.1 小结 14.2 马尔可夫随机场小结 14.3 条件随机场14.3.1 小结 14.4 学习与推断14.4.1 变量消去14.4.2 信念传播小结 14.5 近似推断14.5.1 MCMC采样14.5.2 变分推断小结 14.6 话题模型14.6.1 小结 总结 概率图模型 14.1 隐马尔可夫…

31 基于51单片机的水位监测系统仿真

目录 一、主要功能 二、硬件资源 三、程序编程 四、实现现象 一、主要功能 基于51单片机&#xff0c;DHT11温湿度检测&#xff0c;水位检测&#xff0c;通过LCD1602显示&#xff0c;超过阈值报警&#xff0c;继电器驱动电机转动。通过矩阵按键切换选择设置各项参数阈值。 …

LabVIEW程序怎么解决 Bug?

在LabVIEW开发过程中&#xff0c;发现和解决程序中的Bug是确保系统稳定运行的关键环节。由于LabVIEW采用图形化编程方式&#xff0c;Bug的排查和处理与传统编程语言略有不同。以下是解决LabVIEW程序中Bug的常见方法和技巧&#xff0c;涵盖从问题发现到解决的多个步骤和角度&…

vue3学习:axios输入城市名称查询该城市天气

说来惭愧&#xff0c;接触前端也有很长一段时间了&#xff0c;最近才学习axios与后端的交互。今天学习了一个查询城市天气的案例&#xff0c;只需输入城市名称&#xff0c;点击“查询”按钮便可以进行查询。运行效果如下&#xff1a; 案例只实现了基本的查询功能&#xff0c;没…

中断系统的原理

一、介绍 中断是为使单片机具有对外部或内部随机发生的事件实时处理而设置的。中断是指‌CPU在正常运行程序时&#xff0c;由于内部或外部事件的发生&#xff0c;导致CPU中断当前运行的程序&#xff0c;转而去执行其他程序的过程。‌ 中断可以是硬件产生的&#xff0c;也可以是…

【重学 MySQL】四十八、DCL 中的 commit 和 rollback

【重学 MySQL】四十八、DCL 中的 commit 和 rollback commit的定义与作用rollback的定义与作用使用场景相关示例注意事项DDL 和 DML 的说明 在MySQL中&#xff0c;DCL&#xff08;Data Control Language&#xff0c;数据控制语言&#xff09;用于管理数据库用户和控制数据的访问…

集师专属知识付费小程序搭建 心理咨询小程序搭建

一、产品简介 集师SaaS知识付费软件&#xff0c;为知识创业者或商家提供一站式内容交付解决方案&#xff0c;助力商家搭建集品牌传播、商业变现和用户运营于一体的线上知识服务系统&#xff0c;覆盖全渠道经营场景&#xff0c;占据每个流量入口&#xff0c;使流量变现快速高效…

集智书童 | 用于时态动作检测的预测反馈 DETR !

本文来源公众号“集智书童”&#xff0c;仅用于学术分享&#xff0c;侵权删&#xff0c;干货满满。 原文链接&#xff1a;用于时态动作检测的预测反馈 DETR ! 视频中的时间动作检测&#xff08;TAD&#xff09;是现实世界中的一个基本且具有挑战性的任务。得益于 Transformer …

什么是 HTTP Get + Preflight 请求

当在 Chrome 开发者工具的 Network 面板中看到 GET Preflight 的 HTTP 请求方法时&#xff0c;意味着该请求涉及跨域资源共享 (CORS)&#xff0c;并且该请求被预检了。理解这种请求的背景&#xff0c;主要在于 CORS 的工作机制和现代浏览器对安全性的管理。 下面是在 Chrome …

Linux: network: 典型网络延迟图,CPU导致;

接上回说&#xff0c;https://mzhan017.blog.csdn.net/article/details/142689870&#xff1b; 其中在debug的过程中&#xff0c;看到下面这个IO图&#xff0c;这个图比较经典&#xff0c;是一个典型的网络延迟图&#xff0c;可用作为分析问题的一个参考。 如下图&#xff1a;黑…