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

【瑞昱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,纵向目标位置;

相关文章:

【瑞昱RTL8763E】刷屏

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

【黑马点评】使用RabbitMQ实现消息队列——3.使用Jmeter压力测试,导入批量token,测试异步秒杀下单

3 批量获取用户token,使用jmeter压力测试 3 批量获取用户token,使用jmeter压力测试3.1 需求3.2 实现3.2.1 环境配置3.2.2 修改登录接口UserController和实现类3.2.3 测试类 3.3 使用jmeter进行测试3.4 测试结果3.5 将用户登录逻辑修改回去 3 批量获取用户…...

第 21 章 一条记录的多幅面孔——事务的隔离级别与 MVCC

21.1 事前准备 CREATE TABLE hero ( number INT, NAME VARCHAR ( 100 ), country VARCHAR ( 100 ), PRIMARY KEY ( number ) ) ENGINE INNODB CHARSET utf8;INSERT INTO hero VALUES ( 1, 刘备, 蜀 );21.2 事务隔离级别 在保证事务隔离性的前提下,使用不同的隔…...

javaScript操作dom的事件(3个案例+代码+效果图)

目录 1.焦点事件 案例:登录表单的验证 1.代码 2.效果 3.解释 2.鼠标事件 案例:单击鼠标使小球跳跃 1.代码 2.效果 3.解释 3.键盘事件 案例:使用左右键控制小球左右移动 1.代码 2.效果 ​编辑 3.解释 1.焦点事件 focus 当获得焦点时出发(不会冒泡)blur 当失去焦点时出发(不会…...

国庆期间的问题,如何在老家访问杭州办公室的网络呢

背景:国庆期间的问题,如何在老家访问杭州办公室的网络呢 实现方案:异地组网 实现语言:Java 环境:三个网络,一台拥有公网IP的服务器、一台杭州本地机房内服务器、你老家所在网络中的一台电脑(…...

动态规划算法——三步问题

1.题目解析 2.算法原理 本题可以近似看做泰波那契数列,即小孩到第一个台阶需要一步,到第二个台阶则是到第一个台阶的步数加上第一阶到第二阶的步数,同理第三阶就是第二阶的步数加上第二阶到第三阶的步数,由于小孩只能走三步&#…...

【鸿蒙学习】深入解析鸿蒙应用与元服务:含义、区别、应用场景及创建方法

文章目录 鸿蒙应用(HarmonyOS App)含义用于干什么优缺点 元服务(Atomic Service)含义用于干什么优缺点 鸿蒙应用与元服务的区别创建方法鸿蒙应用的创建元服务的创建 总结 随着科技的不断进步,操作系统也在不断迭代更新…...

React学习01 jsx、组件与组件的三大属性

文章目录 jsx的介绍与语法1.真实DOM和虚拟DOM2.jsx语法 模块与模块化,组件与组件化模块与模块化组件与组件化 React组件React事件绑定函数式组件类式组件组件属性state组件属性props组件属性ref 尚硅谷react教程官方文档学习记录笔记01 jsx的介绍与语法 1.真实DOM和…...

项目——超级马里奥——Day(3)

一、游戏开发思路: 1.Frame--->BackGround--->Obstacle---->BufferedImage,人物等 2.BackGround的构造函数: 只要记住窗口里边的每一个场景,只要游戏一开始就已经出现在屏幕里边的,都是在构造函数里边 3.绘…...

测试-BUG篇

文章目录 软件测试的生命周期BUGbug的概念描述bug的要素bug级别bug的生命周期 与开发产生争执怎么办(高频考题) 软件测试的生命周期 软件测试贯穿于软件的整个生命周期 BUG bug的概念 是指计算机程序中存在的一个错误(error)、缺陷(flaw)、疏忽(mista…...

vue2中 vue-count-to组件让数字从某个数字动态的显示到某个数字(后附vue3的用法)

1、首先安装 npm install vue-count-to2、使用 2.1、先导入组件 import countTo from ‘vue-count-to’2.2、注册组件 components: { countTo },2.3、使用组件 <countTo> <template><div class"home"><countTo class"count-to&qu…...

AI模型部署初认识

AI部署这个词儿大家肯定不陌生&#xff0c;可能有些小伙伴还不是很清楚这个是干嘛的&#xff0c;但总归是耳熟能详了。 近些年来&#xff0c;在深度学习算法已经足够卷卷卷之后&#xff0c;深度学习的另一个偏向于工程的方向–部署工业落地&#xff0c;才开始被谈论的多了起来…...

在线生成论文的网站有哪些?分享5款AI一键原创论文免费网站

一、千笔-AIPasspaper 千笔-AIPasspaper是一款备受推荐的AI写作助手&#xff0c;它集成了多种功能&#xff0c;包括论文大纲生成、内容填充、文献引用和查重修改等。这款工具基于最新的自然语言处理技术&#xff0c;能够帮助用户快速生成高质量的论文内容。 AI论文&#xff0…...

考研论坛平台|考研论坛小程序系统|基于java和微信小程序的考研论坛平台小程序设计与实现(源码+数据库+文档)

考研论坛平台小程序 目录 基于java和微信小程序的考研论坛平台小程序设计与实现 一、前言 二、系统功能设计 三、系统实现 四、数据库设计 1、实体ER图 五、核心代码 六、论文参考 七、最新计算机毕设选题推荐 八、源码获取&#xff1a; 博主介绍&#xff1a;✌️大厂…...

Pandas 时间序列处理

Pandas 时间序列处理 说明&#xff1a; 请回答以下问题&#xff0c;以展示您对 pandas 中时间序列处理的全面理解。请在适用时提供代码示例。 问题 1 如何将日期字符串列表 [2023-01-01, 2023-01-02, 2023-01-03] 转换为 pandas 的 DatetimeIndex&#xff1f; 问题 2 给定一…...

PCL 1.8.1 + VTK 1.8.0 + QT5.14.2+ VS2017 环境搭建

先看看效果: PCL 1.8.1下载安装: Tags PointCloudLibrary/pcl GitHub 安装完成后: 如果VTK想重新编译的,可以看我的这篇博客:...

微信小程序和抖音小程序的分享和广告接入代码

开发完成小程序或者小游戏之后&#xff0c;我们为什么要接入分享和广告视频功能&#xff0c;主要原因有以下几个方面。 微信小程序和抖音小程序接入分享和广告功能主要基于以下几个原因&#xff1a; 用户获取与增长&#xff1a;分享功能可以帮助用户将小程序内容传播给更多人&…...

中断系统的原理

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

安装Rust

Rust 是一种系统级编程语言&#xff0c;旨在提供高性能和内存安全&#xff0c;同时避免常见的编程错误。 由 Mozilla Research 推出&#xff0c;Rust 自推出以来因其独特的设计理念和强大的功能而在开发者社区中迅速获得了广泛的关注和采用。 curl --proto ‘https’ --tlsv1.2…...

vite学习教程05、vite+vue2构建本地 SVG 图标

文章目录 前言一、构建本地SVG图标详细步骤1、安装开发依赖2、配置vite2.1、配置vite.config.js2.2、封装vite引入插件脚本 解决报错&#xff1a;can not find package fast-glob imported 二、实际应用应用1&#xff1a;未封装&#xff0c;直接vue应用应用2&#xff1a;封装vu…...

Web AR开发全指南:从技术原理到实战应用

Web AR开发全指南&#xff1a;从技术原理到实战应用 【免费下载链接】AR.js Image tracking, Location Based AR, Marker tracking. All on the Web. 项目地址: https://gitcode.com/gh_mirrors/arj/AR.js 随着增强现实技术的发展&#xff0c;Web AR开发已成为前端领域的…...

《计算机网络》再学习

1.TCP/IP与OSI模型1&#xff09;TCP/IP模型应用层&#xff1a;为程序提供网络服务。协议&#xff1a;HTTP&#xff0c;DNS与FTP等传输层&#xff1a;提供端到端的通信服务&#xff0c;确保数据的可靠传输。协议&#xff1a;TCP与UDP网络层&#xff1a;负责数据包的路由与转发。…...

技术指标——格雷厄姆指数

文章目录1. 格雷厄姆指数是什么&#xff1f;2. 格雷厄姆指数的作用是什么&#xff1f;3. 举例计算例1&#xff1a;牛市顶部&#xff08;2021年2月&#xff09;例2&#xff1a;熊市底部&#xff08;2024年2月&#xff09;例3&#xff1a;中性水平&#xff08;假设某一般时刻&…...

让ai成为你的vue开发搭档,用快马智能优化代码性能与结构

让AI成为你的Vue开发搭档&#xff0c;用快马智能优化代码性能与结构 最近在开发一个Vue3项目时&#xff0c;遇到了几个性能瓶颈问题。作为一个前端开发者&#xff0c;性能优化是绕不开的话题。幸运的是&#xff0c;借助AI辅助开发工具&#xff0c;这些问题都能得到更高效的解决…...

2026考公全攻略:在校生如何选岗、如何备考、如何上岸一次讲清

很多在校生最近都在问&#xff1a;现在开始准备公务员考试&#xff0c;还来得及吗先说结论&#xff1a;来得及&#xff0c;但前提是你要走对路径这几年考公环境已经发生明显变化报考人数持续增加岗位信息越来越透明单纯刷题已经不再有效考公正在从拼努力&#xff0c;变成拼策略…...

OpenClaw技能扩展指南:为百川2-13B添加公众号发布模块

OpenClaw技能扩展指南&#xff1a;为百川2-13B添加公众号发布模块 1. 为什么需要公众号发布技能 上周我正忙着准备一篇技术分享文章&#xff0c;突然意识到一个痛点&#xff1a;每次写完Markdown文档后&#xff0c;手动复制到公众号编辑器、调整格式、上传封面、设置摘要的过…...

示波器安全操作与高压测量实践指南

示波器安全使用指南&#xff1a;从基础操作到高压测量实践1. 示波器使用安全概述示波器作为电子工程师的核心调试工具&#xff0c;其正确使用直接关系到测量结果的准确性和操作人员的人身安全。在实际工程应用中&#xff0c;约35%的测量事故源于不规范的示波器操作&#xff0c;…...

中国AI模型调用量领跑全球:成本与开源优势塑造竞争新范式

当前&#xff0c;全球人工智能&#xff08;AI&#xff09;领域的竞争正经历着深刻变革。据全球最大AI模型API聚合平台OpenRouter的最新监测数据&#xff0c;中国AI大模型的周调用量已连续数周实现对美国的稳定且显著的超越&#xff0c;并在特定时期内包揽了全球调用量排行榜的前…...

BY8X01-16P Arduino音频模块驱动库深度解析

1. 项目概述BY8X01-16P-Arduino 是一款专为 Arduino 生态设计的轻量级、高兼容性音频模块控制库&#xff0c;面向 BY8001-16P 与 BY8301-16P&#xff08;文档中偶见笔误为 BY83001-16P&#xff09;双芯片平台。该库并非简单封装串口指令&#xff0c;而是以嵌入式系统工程视角重…...

ES920 Arduino库深度解析:Sub-1GHz工业无线通信实战指南

1. ES920无线模块Arduino库深度解析&#xff1a;面向工业级Sub-1GHz通信的工程实践指南ES920系列是日本Echostar公司推出的高性能Sub-1GHz无线通信模块&#xff0c;涵盖FSK调制的ES920与LoRa调制的ES920LR两个子型号。该系列模块专为日本920MHz ISM频段&#xff08;920.6–928.…...