迪文科技论坛

 找回密码
 立即注册
搜索
查看: 97|回复: 1

【分享】T5L 迪文屏 C51 开发之触控控件深度解析

[复制链接]

4

主题

4

回帖

51

积分

注册会员

Rank: 2

积分
51
发表于 2024-12-19 21:09:15 | 显示全部楼层 |阅读模式
T5L 迪文屏 C51 开发之触控控件深度解析
[color=var(--md-box-samantha-normal-text-color) !important]迪文屏的 DGUS Tool 软件将控件分为显示控件和触控控件两大类。显示控件主要负责信息的可视化呈现,而触控控件则专注于接收用户的触摸操作并触发相应的响应。触控控件的种类丰富多样,每一种都具备独特的功能特性,共同构建起迪文屏强大的交互体系。然而,由于其数量众多,在有限的篇幅内难以逐一详述,因此我们选取 “按键返回” 控件作为典型代表进行深入探究。
二、“按键返回” 控件重要属性解析(一)音乐播放属性
[color=var(--md-box-samantha-normal-text-color) !important]该属性用于控制点击 “按键返回” 控件时是否显示按下时的效果,通过指定一张具有按钮按下效果的背景图片来实现。这一特性在提升用户界面交互的可视化反馈方面具有重要意义。当用户触摸按钮时,界面能够即时呈现出按钮被按下的视觉变化,让用户清晰地感知到操作的发生。例如,在手机应用的界面设计中,按钮按下时的颜色变化或形状改变就是类似的设计理念,它能够增强用户对操作的确定性和掌控感,避免因无视觉反馈而导致用户重复操作或误判操作是否成功。
(三)界面切换属性
[color=var(--md-box-samantha-normal-text-color) !important]当点击 “按键返回” 控件时,会自动把此键值写入到指定的 “变量地址” 上。这里的变量地址实际上就是 DGUS 存储器上的地址,并且还可以指定写入的方式。这一属性为 C51 代码与迪文屏之间的数据交互提供了重要途径。在实际开发中,我们可以根据键值的写入情况来判断用户的操作意图,并在 C51 代码中进行相应的逻辑处理。例如,通过不同的键值来区分不同的按钮功能,然后在代码中针对不同键值执行不同的任务,如数据处理、界面更新等。
三、例程设计详解(一)功能简介
[color=var(--md-box-samantha-normal-text-color) !important]在 C51 代码与迪文屏的交互过程中,DGUS 存储器地址的映射是至关重要的。无论是 “按键返回控件” 的键值读取地址、数据变量显示控件的显示数据地址,还是其他涉及数据交互的地址设置,都必须准确无误。一旦地址映射出现错误,可能导致数据读取错误、写入失败或界面显示异常等问题。因此,在开发过程中,需要仔细核对地址的设置,确保其与 GUI 界面设计中的控件属性以及 C51 代码中的数据操作逻辑相匹配。
(二)触控响应的及时性与稳定性
[color=var(--md-box-samantha-normal-text-color) !important]T5L 迪文屏的资源是有限的,在开发过程中需要合理管理和优化资源的使用。这包括内存资源、CPU 资源以及 DGUS 存储器资源等。例如,在音频播放功能的实现中,如果音频文件过大或音频播放处理算法过于复杂,可能会占用大量的内存和 CPU 资源,导致系统运行缓慢甚至出现卡顿现象。因此,在选择音频文件时,应尽量选择合适的音频格式和编码参数,以减小文件大小,并优化音频播放算法,提高资源利用率。同样,在 C51 代码的编写过程中,也应避免不必要的内存分配和资源浪费,及时释放不再使用的资源,以确保系统的稳定运行和高效性能。

综上所述,T5L 迪文屏 C51 开发中的触控控件具有丰富的功能和强大的交互能力。通过深入理解 “按键返回” 控件等典型触控控件的属性,并结合精心设计的例程以及在开发过程中注意关键要点和问题,开发者能够构建出更加友好、高效的用户界面和交互逻辑,为各类基于 T5L 迪文屏的应用开发奠定坚实的基础,推动迪文屏在智能家居、工业控制、消费电子等众多领域的广泛应用和创新发展。无论是对于初涉迪文屏 C51 开发的新手,还是有一定经验的开发者,深入研究触控控件都是提升开发技能和项目质量的重要途径。


关键代码:
  1. #include "sys.h"


  2. #define START_WIN_BTN_ADDR                0x1000
  3. #define START_WIN_NUM_ADDR                0x2000

  4. void main(void)
  5. {   
  6.         u16 num;
  7.         u16 btn_val;
  8.         
  9.         sys_init();//系统初始化
  10.         
  11.         num = 0;
  12.         while(1)
  13.         {   
  14.                 sys_read_vp(START_WIN_BTN_ADDR,(u8*)&btn_val,1);
  15.                 if(btn_val==1)//说明按钮按下了
  16.                 {
  17.                         //将num值增1,然后显示到界面上
  18.                         num++;
  19.                         sys_write_vp(START_WIN_NUM_ADDR,(u8*)&num,1);
  20.                         
  21.                         //清除按键值
  22.                         btn_val = 0;
  23.                         sys_write_vp(START_WIN_BTN_ADDR,(u8*)&btn_val,1);
  24.                 }
  25.         }
  26. }
复制代码


回复

使用道具 举报

4

主题

4

回帖

51

积分

注册会员

Rank: 2

积分
51
 楼主| 发表于 2024-12-19 21:16:13 | 显示全部楼层
代码开源

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|迪文科技论坛 ( 京ICP备05033781号-1 )

GMT+8, 2025-5-16 04:57 , Processed in 0.043630 second(s), 24 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表