迪文屏图标控件保姆级教程

news2024/9/29 21:22:43

要主图的去末尾,末尾福利图在等着你~~~

文章目录

前言

开发环境

二、使用步骤

1.添加图标控件

2.设置图标属性

3.图标库ICL文件生成

4.单片机程序编写

容易踩得坑


一、前言

本篇文章主要介绍了在DGBUS平台上使用图标变量的步骤。首先需要在DGBUS中添加一个图标变量控件,并设置图标的属性,包括大小和图标文件的引用。然后生成图标库ICL文件,选择要生成的图标文件并命名ICL文件,将生成的ICL文件引用到图标变量属性中。最后,在单片机程序中编写显示图标的函数,并在主循环中调用该函数即可实现图标的切换显示。文章还提到了一些容易踩到的坑,建议参考者注意避免。


开发环境

迪文屏型号DMG80480T070_09WTC
DGUS版本DGUS_V7646
单片机        GD32F407

一、迪文屏图标变量是什么?

在屏幕上指定区域生成一个控件,可以由程序控制切换显示不同的图标。

二、使用步骤

1.添加图标控件

先在DGBUS中拖拽添加一个图标变量到页面。

2.设置图标属性

右侧属性框可以设置图标的大小,这个大小需要和咱原来的图标文件的像素大小一致,否则会出错,不能像QT那样指定显示区域大小后自动压缩放大显示。

 图标文件引用的是ICL格式的,关于ICL文件的生成方式和页面背景底图的生成方式一样,这里我不厌其烦~  哈哈哈   再稍微重复一下。放在末尾那一章节了。

3.图标库ICL文件生成

背景底图和图标ICL文件生成方式:

第一步,把冰箱门打卡~

 下面蹦出来这个界面,这里面大部分都是默认就可以,注意你屏幕的内核类型

注意支持的文件类型:

支持文件类型:ICO,JPG,BMP,GIF,PNG
图片数量:不能超过64K张图片

 全选你要生成的图标文件,所有被选中的图标文件会生成一个.icl图标库文件

注意文件名越简单越好,做好就是数字名,不然容易报错。

 然后点击生成,

 然后跳出来的界面输入文件名,后缀要默认为icl,  命名像我这样,  50_ICON.icl 

50这个数字ID是可以自定义的,但是不要和背景图库,字库还有迪文屏系统默认的文件重复,规则如下,还要考虑生成的大小是否超限。

数字ID范围0-63  其中0-14  22 这几个系统使用了,其他的自己分配,每个ID号是256KB,根据文件的大小确定要占用多少个ID号,例如32.ICL是460KB,那就要占用32  33   2个ID号,下一个文件命名从34开始。

好,接下来再回到,图标变量属性配置,这个步骤。

选中我们刚才生成的用来引用的图标库文件。

图标的上限和下限对应生成的ICL图标库中文件的编号

例如,我刚才生成的,4和5图标。   我这个案例中的应用,就是让这个图标显示  开或者关两个图标,并且能来回切换。

那么图标下限就是4  上限就是5

 然后点击上限、下限旁边的  小加号

 选中上限和下限对应的图标,点击确认。

 可以看到DGUS界面上的预览效果已经出来了

这就整好了   然后三连~~

 下载到SD卡里,升级看看效果。

4.单片机程序编写

/*****************************************************************************************************
函数名称: DisplayIcon(T5L_ADDR+u16 addr,char *data,uint16_t len)
参    数: addr 地址;data要显示的图标编号
作    用: 
******************************************************************************************************/
void DisplayVarIcon(uint16_t addr,uint16_t icon_index)
{
    DiwenSendBuf[0]=DIWEN_HEAD_0;
    DiwenSendBuf[1]=DIWEN_HEAD_1;
    DiwenSendBuf[3]=0x82;
    DiwenSendBuf[4]=(addr>>8)&0xff;
    DiwenSendBuf[5]=addr&0xff;
		
    DiwenSendBuf[6]=(icon_index>>8)&0xff;
    DiwenSendBuf[7]=icon_index&0xff;

    DiwenSendBuf[2]=5;
		
		DIWEN_FOR_putn((uint8_t *)DiwenSendBuf,DiwenSendBuf[2]+3);			 
//    HAL_UART_Transmit(&huart5,(uint8_t *)DiwenSendBuf,DiwenSendBuf[2]+3,0xFF);
 }
// ICON_GUN01_ADDR   控件的地址   

// ICON_INDEX_NEED_CARD   要显示的图标编号,比如说 咱的例子里面的  4 或者  5 


// 主循环里  当检测到某个KEY触发后,调用下面的函数即可实现切换图标。
DisplayVarIcon(ICON_GUN01_ADDR,ICON_INDEX_NEED_CARD);  

 老规矩,文末来个福利图养养眼,放松一下  ~~


三、容易踩得坑

1.要先生成图标库

2.生成图标库命令注意生成的文件大小,命名的ID号要注意不能和系统或自定义的其他库地址重复。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【教学类-35-07】正方形折纸上的学号描字帖(15*15CM1份)

背景需求: 尝试将加减法题目打印在手工纸上,写完书写题后,反面绘画,最后折纸。 用同样的思路,在15*15CM正方形手工纸上做一套幼儿学号描字帖 素材准备 WORD模板(纸张长宽15*15CM,边距上下左右0&…

【源码解析】从Conditon角度聊聊AQS原理

前几篇文章,我们详细描述了线程池的原理以及核心代码,以及阻塞队列,ReentrantLock的核心流程,本篇主要介绍下lock锁中的condition 公平锁和非公平锁 public ReentrantLock() {sync new NonfairSync();}public ReentrantLock(boo…

Liunx系统挂载磁盘

1.具体步骤 大概五个步骤 添加磁盘磁盘分区格式化分区挂载分区到指定目录设置开机自动挂载 目标将sdb1分区挂载到/data目录 2.添加磁盘 使用lsblk -f命令可以查看当前系统磁盘情况 lsblk -f 可以看到已经有一个磁盘sda,现在我们给虚拟机增加一个磁盘 添加完成后…

五、Java核心数组篇

1.数组 概念: ​ 指的是一种容器,可以同来存储同种数据类型的多个值。 ​ 但是数组容器在存储数据的时候,需要结合隐式转换考虑。 比如: ​ 定义了一个int类型的数组。那么boolean。double类型的数据是不能存到这个数组中的&…

什么台灯好用不伤眼睛?适合考公使用的台灯推荐

随着时代的发展与进步,不管是办公族还是学生党的压力也越来越大的,不少人在晚上回去之后仍然需要学习、工作,这样的一件试几乎成为了“家常便饭”,而这个过程中必不可少就是台灯。有些人为了保护眼睛会选择护眼台灯,但…

考研护眼台灯怎么选好?2023考研党台灯分享

现在随着生活水平的提升,孩子的教育也越好越好了,不过随之而来的就是繁重的学习压力,和做不完的作业。细心的家长可能已经发现,自从孩子步入高年级之后,晚上回到家完成作业的时间也越来越长了,这不得不让身…

OfficeWeb365 SaveDraw 文件上传漏洞复现

0x01 产品简介 OfficeWeb365 是专注于 Office 文档在线预览及PDF文档在线预览云服务,包括 Microsoft Word 文档在线预览、Excel 表格在线预览、Powerpoint 演示文档在线预览,WPS 文字处理、WPS 表格、WPS 演示及 Adobe PDF 文档在线预览。 0x02 漏洞概述 OfficeWeb365 Sav…

面相对象开发的原则

1、开闭原则 对修改关闭,对扩展打开。 2、里氏替换原则 子类继承父类的方法时,不可重写父类的方法。 如果重写了父类的方法会导致整个继承体系比较差,特别是运用多态比较平凡时,程序运行出错概率较大。 如果出现了违背“里氏替换…

力扣105与106从前序与中序(中序与后序)遍历序列构造二叉树

本题刚接触时比较懵,做出来后就很好理解。之前数据结构的题:给出中序与后序(或前序与中序)画出该树 无从下笔不知如何去画,做完此题后就发现豁然开朗,不过尔尔。本题只讲中序与后序(前序与中序一…

【设计模式--行为型--命令模式】

设计模式--行为型--命令模式 命令模式定义结构案例优缺点使用场景 命令模式 定义 将一个请求封装为一个对象,使发出请求的责任和执行请求的责任分割开。这样两者之间通过命令对象进行沟通,这样方便将命令对象进行存储,传递,调用…

cpp:1:10: fatal error: opencv2/core.hpp: 没有那个文件或目录

前言&#xff1a; 我按照官网方法安装了opencv&#xff0c;运行的也是官网的测试代码&#xff1a; #include <opencv2/core.hpp> #include <opencv2/highgui.hpp> using namespace cv; int main() {printf("hello world")return 0; } 半解决&#xff…

TCP/IP详解——TCP 协议

文章目录 一、传输层协议1. TCP1.1 TCP 的字节流1.2 TCP 端口号1.3 TCP 头部1.4 TCP 选项部分字段1.5 TCP 三次握手1.6 TCP 三次握手不成功1.6.1 TCP 拒绝&#xff08;被RST重置&#xff09;1.6.2 TCP 半连接1.6.3 TCP 连接无响应 1.7 TCP 传输过程及原理1.7.1 TCP 传输过程1.7…

高通开发系列 - 功耗问题之添加CPU Idle和Hotplug的功能

By: fulinux E-mail: fulinux@sina.com Blog: https://blog.csdn.net/fulinus 喜欢的盆友欢迎点赞和订阅! 你的喜欢就是我写作的动力! 返回:专栏总目录 目录 概述CPU IdleCPU TopologyCPU Idle DriverCPU Idle GovernorCPU的hotplug函数

给我说说Redis持久化机制RDB吧

基础 了解过Redis持久化RDB嘛&#xff1f;可不可以解释一下什么是RDB。 答&#xff1a; RDB持久化机制是将内存中的数据生成快照并持久化到磁盘的过程&#xff0c;RDB可以通过手动或者自动的方式实现持久化。 那RDB触发的方式有哪几种方式知道吗&#xff1f; 答: 有两种&am…

【Go】基于GoFiber从零开始搭建一个GoWeb后台管理系统(三)日志管理(登录日志、操作日志)、用户登录模块

第一篇&#xff1a;【Go】基于GoFiber从零开始搭建一个GoWeb后台管理系统&#xff08;一&#xff09;搭建项目 第二篇&#xff1a;【Go】基于GoFiber从零开始搭建一个GoWeb后台管理系统&#xff08;二&#xff09;日志输出中间件、校验token中间件、配置路由、基础工具函数。 …

赛氪为第五届全球校园人工智能算法精英大赛决赛选手保驾护航

12月10日&#xff0c;以“智青春算未来”为主题的2023年第五届全球校园人工智能算法精英大赛全国总决赛在河海大学江宁校区举行。本次大赛由江苏省人工智能学会主办&#xff0c;自9月份启动以来&#xff0c;共吸引了全国近400所高校的3000多支参赛团队参加。经过校赛、省赛选拔…

Linux(统信UOS) 发布.Net Core,并开启Https,绑定证书

实际开发中&#xff0c;有时会需要为小程序或者需要使用https的应用提供API接口服务&#xff0c;这就需要为.Net Core 配置https&#xff0c;配置起来很简单&#xff0c;只需要在配置文件appsettings.json中添加下面的内容即可 "Kestrel": {"Endpoints": …

LeetCode力扣每日一题(Java)66、加一

每日一题在昨天断开了一天&#xff0c;是因为作者沉迷吉他&#xff0c;无法自拔……竟然把每日一题给忘了&#xff0c;所以今天&#xff0c;发两篇每日一题&#xff0c;把昨天的给补上 一、题目 二、解题思路 1、我的思路 其实乍一看这道题还是比较简单的&#xff0c;就是让…

C/C++ 汇总区间-返回恰好覆盖数组中所有数字的最小有序区间范围列表

给定一个无重复元素的有序数数组ums。返回恰好覆盖数组中所有数字的最小有序区间范围列表。 也就是说&#xff0c;nums 的每个元素都恰好被某个区间范围所覆盖&#xff0c;并且不存在属于某个范围但不属于 nums 的数字x。 列表中的每个区间范围 [a,b] 应该按如下格式输出&…

zabbix——实现高效网络监控

在当今的数字化时代&#xff0c;网络和服务器的健康状况对于企业的正常运营至关重要。为了及时发现和解决潜在的问题&#xff0c;许多企业选择使用网络监控工具来追踪服务器的性能和网络参数。其中&#xff0c;Zabbix是一个功能强大且开源的网络监控工具&#xff0c;被广泛应用…