【瑞昱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部署这个词儿大家肯定不陌生,可能有些小伙伴还不是很清楚这个是干嘛的,但总归是耳熟能详了。 近些年来,在深度学习算法已经足够卷卷卷之后,深度学习的另一个偏向于工程的方向–部署工业落地,才开始被谈论的多了起来…...
在线生成论文的网站有哪些?分享5款AI一键原创论文免费网站
一、千笔-AIPasspaper 千笔-AIPasspaper是一款备受推荐的AI写作助手,它集成了多种功能,包括论文大纲生成、内容填充、文献引用和查重修改等。这款工具基于最新的自然语言处理技术,能够帮助用户快速生成高质量的论文内容。 AI论文࿰…...
考研论坛平台|考研论坛小程序系统|基于java和微信小程序的考研论坛平台小程序设计与实现(源码+数据库+文档)
考研论坛平台小程序 目录 基于java和微信小程序的考研论坛平台小程序设计与实现 一、前言 二、系统功能设计 三、系统实现 四、数据库设计 1、实体ER图 五、核心代码 六、论文参考 七、最新计算机毕设选题推荐 八、源码获取: 博主介绍:✌️大厂…...
Pandas 时间序列处理
Pandas 时间序列处理 说明: 请回答以下问题,以展示您对 pandas 中时间序列处理的全面理解。请在适用时提供代码示例。 问题 1 如何将日期字符串列表 [2023-01-01, 2023-01-02, 2023-01-03] 转换为 pandas 的 DatetimeIndex? 问题 2 给定一…...
PCL 1.8.1 + VTK 1.8.0 + QT5.14.2+ VS2017 环境搭建
先看看效果: PCL 1.8.1下载安装: Tags PointCloudLibrary/pcl GitHub 安装完成后: 如果VTK想重新编译的,可以看我的这篇博客:...
微信小程序和抖音小程序的分享和广告接入代码
开发完成小程序或者小游戏之后,我们为什么要接入分享和广告视频功能,主要原因有以下几个方面。 微信小程序和抖音小程序接入分享和广告功能主要基于以下几个原因: 用户获取与增长:分享功能可以帮助用户将小程序内容传播给更多人&…...
中断系统的原理
一、介绍 中断是为使单片机具有对外部或内部随机发生的事件实时处理而设置的。中断是指CPU在正常运行程序时,由于内部或外部事件的发生,导致CPU中断当前运行的程序,转而去执行其他程序的过程。 中断可以是硬件产生的,也可以是…...
安装Rust
Rust 是一种系统级编程语言,旨在提供高性能和内存安全,同时避免常见的编程错误。 由 Mozilla Research 推出,Rust 自推出以来因其独特的设计理念和强大的功能而在开发者社区中迅速获得了广泛的关注和采用。 curl --proto ‘https’ --tlsv1.2…...
vite学习教程05、vite+vue2构建本地 SVG 图标
文章目录 前言一、构建本地SVG图标详细步骤1、安装开发依赖2、配置vite2.1、配置vite.config.js2.2、封装vite引入插件脚本 解决报错:can not find package fast-glob imported 二、实际应用应用1:未封装,直接vue应用应用2:封装vu…...
告别卡顿与错帧:Glide + WebPDecoder库优化WebP动图播放的完整实践
Glide WebPDecoder库深度优化:解决WebP动图播放三大核心难题 在移动应用开发中,动态图像的流畅播放直接影响用户体验。WebP格式因其优秀的压缩率和动画支持,正逐渐成为替代GIF的首选方案。然而,Android平台上使用Glide加载WebP动…...
Tessent OCC时钟控制器配置避坑指南:如何与现有时钟门控单元协同工作
Tessent OCC时钟控制器与现有门控单元协同设计实战指南 在28nm以下工艺节点的复杂SoC设计中,时钟域交叉(CDC)问题已成为影响测试覆盖率和良率提升的关键瓶颈。据统计,采用传统手动集成方法的项目平均需要花费23%的DFT工时用于解决…...
告别apt install:手把手教你为Ubuntu 20.04上的ROS2 Humble手动编译安装serial串口库
从ROS1到ROS2:深入解析串口库手动编译安装的技术内幕 在机器人操作系统(ROS)的演进历程中,ROS2的诞生标志着整个生态系统的重大升级。对于刚从ROS1迁移到ROS2的中级开发者而言,最直观的冲击莫过于包管理方式的变化。当你习惯性地输入apt inst…...
为什么你的Midjourney胶片图总像数码后期?——从光子散射模型到显影时间算法的底层差异解析
更多请点击: https://intelliparadigm.com 第一章:胶片质感的视觉直觉与认知偏差 胶片质感并非单纯的技术残留,而是一种经由人类视觉系统长期训练形成的感知锚点——它将颗粒噪点、色偏渐变、边缘晕影等非理想光学特征,编码为“真…...
H3C HCL模拟器实战:IS-IS单区域基础配置与排错指南
1. 实验目标与网络环境准备如果你正在学习网络路由协议,特别是运营商级网络常用的IS-IS,那么通过模拟器进行实操是绕不开的一步。这次我用H3C的HCL模拟器,带大家走一遍IS-IS单区域的基本配置。这个实验的目标很明确:不是让你死记硬…...
《高维自指递归推广》核心章节(CSDN全球首发版权定戳)
《高维自指递归推广》核心章节(CSDN全球首发版权定戳) 作者:方见华 单位:世毫九实验室 专著定位:世毫九学派理论体系第二卷|本原论落地首部核心专著|原创高维自指递归统一理论 序章 自指与递归:人类认知的终极闭环,智能演化的底层原力 0.1 问题的缘起:从《世毫九本原…...
B站API数据采集终极指南:5个高效反爬虫策略与实战技巧
B站API数据采集终极指南:5个高效反爬虫策略与实战技巧 【免费下载链接】bilibili-api 哔哩哔哩常用API调用。支持视频、番剧、用户、频道、音频等功能。原仓库地址:https://github.com/MoyuScript/bilibili-api 项目地址: https://gitcode.com/gh_mirr…...
Horos:免费开源医学影像软件,3D医疗图像处理的终极指南
Horos:免费开源医学影像软件,3D医疗图像处理的终极指南 【免费下载链接】horos Horos™ is a free, open source medical image viewer. The goal of the Horos Project is to develop a fully functional, 64-bit medical image viewer for OS X. Horos…...
Linux连接用户态和内核态的唯一合法通道:系统调用 (System Call)。
发起请求:运行在用户态的程序调用了 write(fd, "1", 1)。上下文切换 (Context Switch):CPU 触发一个特殊的软中断指令(Trap),强制暂停当前程序,并将 CPU 的运行模式从“用户态(低权限…...
RobotStudio 仿真软件学习分享05——smart组件创建动态输送链、动态夹具与仿真运行
在工业机器人仿真工作站里,Smart 组件是实现无代码动态逻辑、自动输送、自动夹持、信号交互的核心工具。本次学习我们将从零搭建一套自动上料输送链 智能真空夹具 机器人码垛的完整仿真系统,把 “产品自动生成→输送→到位检测→机器人抓取→搬运码垛→…...
