AWTK 开源串口屏开发(7) - 屏幕保护

现代屏幕其实并不需要屏幕保护,不过屏幕保护程序会衍生一些其它用途。比如:

  • 保护隐私。长时间不操作,通过动画或者其它方式隐藏屏幕内容。
  • 数据安全。长时间不操作,需要输入密码才能恢复。
  • 美观/广告。长时间不操作,显示动画或者播放视频广告。

本文介绍一下在 AWTK 串口屏中,是如何实现屏幕保护的。基本工作原理是这样的:

  • 长时间没有用户输入事件,触发屏幕保护事件。
  • 在屏幕保护事件中,打开名为 screen_saver 的窗口。
  • screen_saver 窗口中,显示屏保内容,如果收到输入事件,关闭该窗口(或要求输入密码)。

1. 功能

在这里例子中,模型(也就是数据)里只有一个 screen_saver_time 变量:

变量名数据类型功能说明
screen_saver_time整数单位为毫秒

screen_saver_time 是 默认模型 中一个内置属性。

2. 创建项目

从模板创建项目,将 hmi/template_app 拷贝 hmi/screen_saver 即可。

第一个项目最好不要放到其它目录,因为放到其它目录需要修改配置文件中的路径,等熟悉之后再考虑放到其它目录。路径中也不要中文和空格,避免不必要的麻烦。

3. 制作界面

3.1 主窗口

用 AWStudio 打开上面 screen_saver 目录下的 project.json 文件。里面有一个空的窗口,在上面加入下面的控件:

  • 静态文本
  • 编辑器

做出类似下面的界面。

在这里插入图片描述

3.2 屏保窗口

在这个窗口中,我们通过一个定时器来改变窗口的背景颜色,创建一个空白窗口,将其改名为 screen_saver 即可。

4. 添加绑定规则

4.1 主窗口

  • 编辑器 绑定到 screen_saver_time 变量。添加自定义的属性 v-data:value,将值设置为 {screen_saver_time}
绑定属性绑定规则说明
v-data:value{screen_saver_time}变量要用英文大括号括起来。
  • 同样指定窗口的模型为 default。
绑定属性绑定规则说明
v-modeldefaultdefault 不需要用大括号括起来。

4.2 屏保窗口

  • 启动 按钮的 点击 事件启动定时器。
绑定属性绑定规则说明
v-on:window_open{fscript, Args=start_timer(3000);set(计数,0)}启动定时器
v-on:timer{fscript, Args=set(计数,计数+1)}增加计数
v-data:style:normal:bg_color{one_of(‘red;blue;green;gold;orange;white;black’, 计数%7)}根据计数改变背景颜色
v-on:pointer_move{nothing, CloseWindow=true}关闭窗口
v-on:pointer_up{nothing, CloseWindow=true}关闭窗口
v-on:key_up{nothing, CloseWindow=true}关闭窗口

这里只是用了一个窗口内局部的变量“计数”,不需要指定模型,系统会自动创建一个 dummy 模型。

4. 初始化数据

修改资源文件 design/default/data/default_model.json, 将其内容改为:

{
  "screen_saver_time": 180000
}

注意:

  • 如果文件内容有中文(非 ASCII 字符),一定要保存为 UTF-8 格式。

  • 重新打包资源才能生效。

5. 数据持久化

为了保存屏保时间,修改资源文件 design/default/data/settings.json, 将其内容改为:

{
    "name":"hmi_screen_saver",
    "persistent" : {
      "screen_saver_time": true
    }
}

6. 编译运行

运行 bin 目录下的 demo 程序,设置屏幕时间为一个较短的值,等待屏保启动。

在这里插入图片描述

7. 注意

  • 本项目并没有编写界面相关的代码,AWStudio 在 src/pages 目录下生成了一些代码框架,这些代码并没有用到,可以删除也可以不用管它,但是不能加入编译。

  • 完整示例请参考:demo_screen_saver

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

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

相关文章

Linux的IO文件操作和文件系统

前要:本次我想给您带来关于 IO 和文件的知识,而文件在本系列中分为内存上的文件和磁盘上的文件。 1.文件概念 1.1.文件读写 在谈及系统接口之前,我们先来从 C 语言的角度来谈及一些前要知识,以辅助我们后续来理解系统 IO。 我们…

如何优化SQL查询性能?解开你的数据库瓶颈之谜!

目录 1、前言 2、创建索引 2.1 确保表的主键和外键都有索引 2.2 根据查询条件创建适当的索引 2.3 避免在索引列上进行类型转换或函数操作 3、合理设计数据库架构 3.1 表的拆分和归并,避免不必要的数据冗余 3.2 使用适当的数据类型和字段长度&#xff0…

JMeter实操入门之登录

JMeter实操入门之登录 前言初级-无变量的登录线程组取样器-HTTP请求 进阶-定义变量的登录用户定义的变量获取JSON返回的数据-tokentoken设置全局变量 前言 安装及环境配置教程可移步:JMeter安装与配置环境 本篇文章针对小白进一步的认识及运用JMeter,围绕…

Microsoft Visual C++ RunTime怎么下载?

64位下载链接 下载好程序后双击,勾选“我同意许可条款和条件”,然后点击“安装” 安装完成后点击“关闭”即可 感谢您的阅读与关注,服务器大本营助您成为更专业的服务器管理员!

一文了解【完全合作关系】下的【多智能体强化学习】

处于完全合作关系的多智能体的利益一致,获得的奖励相同,有共同的目标。比如多个工业机器人协同装配汽车,他们的目标是相同的,都希望把汽车装好。 在多智能体系统中,一个智能体未必能观测到全局状态 S。设第 i 号智能体…

文心一言 VS 讯飞星火 VS chatgpt (183)-- 算法导论13.4 7题

七、用go语言,假设用 RB-INSERT 将一个结点 x 插入一棵红黑树,紧接着又用 RB-DELETE 将它从树中删除。结果的红黑树与初始的红黑树是否一样?证明你的答案。 文心一言: 首先,我们需要明确RB-INSERT和RB-DELETE的基本操…

阿里云国外服务器多少钱一个月?24元/月

阿里云国外服务器优惠活动「全球云服务器精选特惠」,国外服务器租用价格24元一个月起,免备案适合搭建网站,部署独立站等业务场景,阿里云服务器网aliyunfuwuqi.com分享阿里云国外服务器优惠活动: 全球云服务器精选特惠…

云服务器定价_云服务器价格_云主机计费模式_腾讯云

腾讯云服务器租用价格表:轻量应用服务器2核2G3M价格62元一年、2核2G4M价格118元一年,540元三年、2核4G5M带宽218元一年,2核4G5M带宽756元三年、轻量4核8G12M服务器446元一年、646元15个月,云服务器CVM S5实例2核2G配置280.8元一年…

UE5 - Polycam扫描文件导入插件

Polycam是利用Gaussian Splatting进行3D重建的3D扫描相关软件,其对应有UE引擎的插件(Plugin_XV3dGS)可以把相关格式的文件导入到引擎; 首先Polycam的官网为:My Captures | Polycam 可以下载各种用户扫描文件&#xff…

java数据结构与算法刷题-----LeetCode485. 最大连续 1 的个数

java数据结构与算法刷题目录(剑指Offer、LeetCode、ACM)-----主目录-----持续更新(进不去说明我没写完):https://blog.csdn.net/grd_java/article/details/123063846 文章目录 1. 法一,双指针2. 法二:变量计数 1. 法一…

【开源】基于JAVA语言的CRM客户管理系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块三、系统设计3.1 用例设计3.2 E-R 图设计3.3 数据库设计3.3.1 客户表3.3.2 商品表3.3.3 客户跟踪表3.3.4 客户消费表3.3.5 系统角色表 四、系统展示五、核心代码5.1 查询客户5.2 新增客户跟踪记录5.3 新增客户消费订单5.4 查…

JVM(上)

目录 一、JVM概述 一、JVM作用 二、JVM整体组成部分 二、JVM结构-类加载 一、类加载子系统概述 二、类加载过程 1.加载 2.链接 3.初始化(类加载过程中的初始化) 三、类加载器分类 大致分两类: 细致分类: 四、双亲委派机制 五、打…

【记录一下】【年底清洗抽油烟机---被套路了540块钱!!!】年底了,注意各种套路【警惕,不然钱没没!!!】

■事情结果 被骗(啊,不是被骗,是被套路)了360块钱 13050558273(诈骗者,啊不能算是诈骗,是下套的清洗油烟机的吴某的电话) 4008731099(这个电话不是方太的客服电话&…

数据操作——Column 对象

Column 对象 1. 什么是Column对象 Column 表示了 Dataset 中的一个列, 并且可以持有一个表达式, 这个表达式作用于每一条数据, 对每条数据都生成一个值 2.Column对象如何创建 ’ 单引号 ’ 在 Scala 中是一个特殊的符号, 通过 ’ 会生成一个 Symbol 对象, Symbol 对象可以理…

优先级队列(堆) PriorityQueue

🎥 个人主页:Dikz12📕格言:那些在暗处执拗生长的花,终有一日会馥郁传香欢迎大家👍点赞✍评论⭐收藏 目录 1.优先级队列 2.优先级队列的模拟实现 2.1 堆的概念 2.2 堆的创建 2.3 堆的插入和删除 2.…

数据结构——二叉树

目录 一、前言 1.1 树 1.2 树的相关概念 二、二叉树 2.1 定义 2.2 特殊类型 2.3 二叉树的性质 2.4 二叉树的存储结构 (1)顺序存储 (2)链式存储 三、二叉树相关操作 3.1 创建一颗二叉树 3.2 二叉树的遍历 &#xff…

构建STM32MP133的Buildroot环境

意法半导体ST在坚持用 Yocto构建他们的OpenSTLinux MP1系列MCU,编译费劲,而且我们的应用不需要Yocto的环境,所以基于Buildroot的最小Linux系统更适合我们。 STM32MP133微处理器基于单Arm Cortex-A7内核,运行频率可达1 GHz&#x…

JVM对象创建与内存回收机制

对象的创建过程有如下步骤: 1.类加载检查: 虚拟机遇到一个new指令时,首先将去检查这个指令的参数是否能在常量池中定位到一个类的符号引用,并且检查这个符号引用代表的类是否已被加载、解析和初始化过,如果没…

带POE网络变压器与2.5G/5G/10G网络变压器产品特点介绍

Hqst华轩盛(石门盈盛)电子导读:一起来了解带POE网络变压器与2.5G/5G/10G网络变压器产品特点? 一﹑带POE网络变压器与2.5G/5G/10G网络变压器产品特点介绍 首先、POE网络变压器产品与常规不带POE产品的区别: 带POE网络变压器主要要求是耐电流等…

mycat实现mysql读写分离

一. mycat集群HaproxyKeepalived mycat集群HaproxyKeepalivedmysql1主2从 环境规划 centos7.9 1主2从,读写分离 名称ip端口mysql-master192.168.1.2203306mysql-slave1192.168.1.2213306mysql-slave2192.168.1.2223306mycat-1192.168.1.2218066mycat-2192.168.1.…
最新文章