AWTK 串口屏开发(2) - 数据绑定高级用法

AWTK 串口屏 智能家居示例

1. 功能

这个例子稍微复杂一点,界面这里直接使用了 立功科技 ZDP1440 HMI 显示驱动芯片 例子中的 UI 文件和资源,重点关注数据绑定。在这里例子中,模型(也就是数据)里包括一台空调和一台咖啡机:

变量名数据类型功能说明
空调_开关布尔空调开关
空调_模式整数空调模式 (0: 制冷;1: 制热;2: 送风;2: 除湿;4: 自动)
空调_风速整数0-4 共五档
空调_垂直风向整数垂直风向 (0: 自动;1:上;2:中;3:下)
空调_水平风向整数水平风向(0:自动;1:左;2:中;3:右)
空调_温度整数温度(0-40)
咖啡_开关布尔咖啡开关
咖啡_类型整数类型 (0: 卡布奇诺;1: 拿铁;2: 美式;3: 意式)
咖啡_温度整数温度(0-100)
咖啡_口味整数口味 (0: 浓郁;1: 丝滑;2: 清淡;3: 平衡;4: 温和)
咖啡_热奶整数热奶 (0: 少量;1: 较少;2: 较多;3: 大量)
咖啡_奶泡整数奶泡 (0: 少量;1: 较少;2: 较多;3: 大量)
咖啡_水量整数水量 (50-350ml)
咖啡_剩余时间整数制作时间(格式:分钟:秒)
咖啡_开始制作布尔开始制作

2. 创建项目

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

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

3. 制作界面

界面和资源就直接用 立功科技 ZDP1440 HMI 显示驱动芯片 例子了:

  • 主界面

在这里插入图片描述

  • 空调界面

在这里插入图片描述

  • 咖啡机界面

在这里插入图片描述

3. 添加绑定规则

里面的控件太多,为了不至于太累赘,不同类型的绑定只举一个例子:

完整示例可以参考 hmi/demo_home2

3.1 温度设置

这种两个按钮带一个静态文本的组合很常见。

在这里插入图片描述

  • 中间的静态文本
绑定属性绑定规则说明
v-data:value{空调_温度+‘℃’}
  • 右边的按钮(增加)
绑定属性绑定规则说明
v-on:click{fscript, Args=set(空调_温度,min(空调_温度+1, 40))}这里用函数 set 将变量空调_温度增加 1 度。min 函数保证变量的值不会超出 40。
  • 左边的按钮(减少)
绑定属性绑定规则说明
v-on:click{fscript, Args=set(空调_温度,max(空调_温度-1, 40))}这里用函数 set 将变量空调_温度减少 1 度。max 函数保证变量的值不会小于 0。

v-on:click 是一个常见的事件,最好记住,可以提高效率。

3.2 模式选择

这个用一组单选按钮实现,将多个单选按钮放到 group_box 里(将多个单选按钮放到 view 里也可以,只是需要为每个单选按钮编写绑定规则)。

在这里插入图片描述

  • 如果绑定规则写到 group_box 上。这样写即可:
绑定属性绑定规则说明
v-data:value{空调_模式}
  • 如果使用 view 作为容器,则麻烦一点。需要为每个单选按钮编写两条绑定规则:
绑定属性绑定规则说明
v-data:value{空调_模式 == 0}这里的 0 是单选按钮的序数,根据实际情况调整
v-on:click{fscript, Args=set(空调_模式,0)}这里的 0 是单选按钮的序数,根据实际情况调整

这种方式虽然麻烦,但是可以处理变量的值不是从 0 开始或者不连续的情况。

3.3 模式显示

模式用一个静态文本显示。问题在于,模式在内部用一个正整数表示,而显示的是一个用户可以理解的字符串。所以需要一个转换函数 one_of:

在这里插入图片描述

绑定属性绑定规则说明
v-data:valuev-data:value="{one_of(‘制冷;制热;送风;除湿;自动’, 空调_模式)}这里的 one_of 的功能是从指定的字符串数组中取出对应的子串。

3.4 剩余时间

剩余时间用一个静态文本显示。问题在于,剩余时间在内部用一个正整数表示(秒数),而显示的是“分钟:秒”。所以需要一个转换表达式:

在这里插入图片描述

绑定属性绑定规则说明
v-data:valueint(咖啡_剩余时间/60) + ‘:’ + 咖啡_剩余时间%60}表达是按浮点数计算的,这里的 int 将结果转换为正数。

5.5 隐藏视图

在点击开关按钮时,会自动显示或隐藏右边的设置视图。这是通过将视图的可见性(visible)绑定到开关的状态实现的:

绑定属性绑定规则说明
v-data:visible{空调_开关}

5.6 指定窗口的模型为 default

这是最简单也是最关键的一步:

绑定属性绑定规则说明
v-modeldefault

严格的意义上说,绑定规则也是一种代码,不过相比于 C 语言,它有下面的优势:

  • 无需编译,直接运行
  • 简单,通常只有一行。
  • 易懂,声明式的语法。

4. 初始化数据

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

{"空调_开关" : false,"空调_模式" : 3,"空调_风速" : 3,"空调_垂直风向" : 1,"空调_水平风向" : 1,"空调_温度": 25,"咖啡_开关" : false,"咖啡_类型" : 1,"咖啡_温度" : 60,"咖啡_口味" : 1,"咖啡_热奶" : 1,"咖啡_奶泡" : 1,"咖啡_水量" : 150,"咖啡_剩余时间" : 200,"咖啡_开始制作" : false
}

注意:

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

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

5. 编译运行

运行 bin 目录下的 demo 程序。

在这里插入图片描述

6. 使用 MCU 模拟器与之进行交互

运行 mcu/simulator 目录下的 mcu_sim 程序,连接到 Localhost:2233。

  • 在界面上修改参数,会看到模拟器上收到了对应的事件:

在这里插入图片描述

  • 在模拟器中设置变量 咖啡_类型 的数据,HMI 端的界面也会自动更新。

在这里插入图片描述

7. 注意

  • 完整示例可以参考 hmi/demo_home2

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

  • 本项目中的界面和资源来自 立功科技 ZDP1440 HMI 显示驱动芯片 例子,仅用于演示,不可用于商业用途。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

俄罗斯军方计划用 Astra Linux 取代 Windows!

网络安全正在改变全球化的面貌,各国政府为了防范外国的间谍和破坏活动,正积极发展自己的技术。在这一趋势下,俄罗斯军方已经开始用 Linux 发行版 Astra Linux 替换 Windows 系统。 如何提高Linux系统安全性?提升Linux安全的关键策…

ChatGPT 成为 Nature 年度十大人物,首个非人类实体

文章目录 一、前言二、主要内容三、总结 🍉 CSDN 叶庭云:https://yetingyun.blog.csdn.net/ 一、前言 2023 年即将结束,现在是时候回顾今年的重要科学进展了。12 月 13 日,著名科学期刊《Nature》刚刚发布了 2023 年度的十大人物&…

Amazon CodeWhisperer 开箱初体验

文章作者:Coder9527 科技的进步日新月异,正当人工智能发展如火如荼的时候,各大厂商在“解放”码农的道路上不断创造出各种 Coding 利器,今天在下就带大家开箱体验一个 Coding 利器: Amazon CodeWhisperer。 亚马逊云科…

十五 动手学深度学习v2计算机视觉 ——全连接神经网络FCN

文章目录 FCN FCN 全卷积网络先使用卷积神经网络抽取图像特征,然后通过卷积层将通道数变换为类别个数,最后通过转置卷积层将特征图的高和宽变换为输入图像的尺寸。 因此,模型输出与输入图像的高和宽相同,且最终输出通道包含了该空…

Ubuntu 22.04源码安装yasm 1.3.0

sudo lsb_release -r看到操作系统的版本是22.04,sudo uname -r可以看到内核版本是5.15.0-86-generic,sudo gcc --version可以看到版本是11.2.0,sudo make --version可以看到版本是GNU Make 4.3。 下载yasm http://yasm.tortall.net/Downlo…

【Cisco Packet Tracer】路由器实验 静态路由/RIP/OSPF/BGP

本教程讲解路由器的静态IP配置、RIP、OSPF、BGP等实验内容。 一、基本设置 绘制以下拓扑结构: PC0设置: PC1设置: Router0端口0设置: Router0端口1设置: Router1端口0设置: Router1端口1设置&#xff1a…

大型软件编程实际应用实例:个体诊所电子处方系统,使用配方模板功能输入症状就可开出处方软件操作教程

一、前言: 在开电子处方的时候,如果能够输入症状就可以一键导入配方,则在很大程度上可以节省很多时间。而且这个配方可以根据自己的经验自己设置,下面以 佳易王诊所电子处方软件为例说明。 二、具体一键导入配方详细操作教程 点击…

云服务配置docker镜像容器以及常用操作命令

首先通过ssh进入云服务器。如何ssh进入云服务器。 简单讲解一下docker中镜像和容器,打个比方,镜像相当于印钱的那个模板,容器相当于从模板上拓下来的钱,不同的模板可以印出不同的钱。但容器被修改后也可以变成新的镜像&#xff0…

卷积神经网络(CNN)中感受野的计算问题

感受野 在卷积神经网络中,感受野(Receptive Field)的定义是卷积神经网络每一层输出的特征图(feature map)上每个像素点在原始图像上映射的区域大小,这里的原始图像是指网络的输入图像,是经过预处…

php入门、安装wampserver教程

php声称是全世界最好的语言,今天这篇文章就带大家入门学习php,php和python、javasript一样,是一种弱类型的脚本语言。 一、php开发环境搭建 作为初学者,学习php建议安装wampserver,wampserver是包含了apache、php和mys…

设计原则 | 接口隔离原则

一、接口隔离原则 1、原理 客户端不应该依赖它不需要的接口,即一个类对另一个类的依赖应该建立在最小的接口上。如果强迫客户端依赖于那些它们不使用的接口,那么客户端就面临着这个未使用的接口的改变所带来的变更,这无意间导致了客户程序之…

智能优化算法应用:基于平衡优化器算法3D无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用:基于平衡优化器算法3D无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用:基于平衡优化器算法3D无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.平衡优化器算法4.实验参数设定5.算法…

3D渲染和动画制作软件KeyShot Pro mac附加功能

KeyShot 11 mac是一款专业化实时3D渲染工具,使用它可以简化3d渲染和动画制作流程,并且提供最准确的材质及光线,渲染效果更加真实,KeyShot为您提供了使用 CPU 或 NVIDIA GPU 进行渲染的能力和选择,并能够线性扩展以获得…

【深度学习】强化学习(二)马尔可夫决策过程

文章目录 一、强化学习问题1、交互的对象2、强化学习的基本要素3、策略(Policy)4、马尔可夫决策过程1. 基本元素2. 交互过程的表示3. 马尔可夫过程(Markov Process)4. 马尔可夫决策过程(MDP)5. 轨迹的概率计…

在windows系统搭建LVGL模拟器(codeblock工程)

1.codeblock准备 下载codeblock(mingw),安装。可参考网上教程。 2.pc_simulator_win_codeblocks 工程获取 仓库地址:lvgl/lv_port_win_codeblocks: Windows PC simulator project for LVGL embedded GUI Library (github.com) 拉取代码到本地硬盘&…

Rust语言GUI库之gtk安装

文章目录 工具链安装管理软件vcpkgvcpkg介绍安装vcpkg 安装gtk遇到的问题Rust其他依赖package-confg 工具链安装管理软件vcpkg vcpkg介绍 在使用C/C编写项目时, 引用第三方库是很麻烦的事, 需要手动下载源码然后编译最后再添加到项目里,配置头文件、lib、dll&…

采埃孚4D成像雷达拆解

1 基本信息 品牌:海外Tier1采埃孚 • 应用:上汽飞凡中高端纯电平台 • 数量:单车2个,安装在前后保内部 • 最远探测距离:350米 拆解来看,4D雷达主要可以分为4个部分,分别为数字接口板及结构件…

Altair推出 Altair RapidMiner 2023 平台,提供生成式 AI 功能

Altair推出 Altair RapidMiner 2023 平台,提供生成式 AI 功能 更新包括自动聚类、扩展 SAS、Python 和 R 编程功能等 近日,Altair(纳斯达克股票代码:ALTR)近日宣布其数据分析和 AI 平台 Altair RapidMiner 取得了一系…

【ChatGLM3】第三代大语言模型多GPU部署指南

关于ChatGLM3 ChatGLM3是智谱AI与清华大学KEG实验室联合发布的新一代对话预训练模型。在第二代ChatGLM的基础之上, 更强大的基础模型: ChatGLM3-6B 的基础模型 ChatGLM3-6B-Base 采用了更多样的训练数据、更充分的训练步数和更合理的训练策略。在语义、…

深拷贝、浅拷贝 react的“不可变值”

知识获取源–晨哥(现实中的人 嘿嘿) react中如果你想让一个值始终不变 或者说其他操作不影响该值 它只是作用初始化的时候 使用了浅拷贝–改变了初始值 会改变初始值(selectList1) 因为使用浅拷贝都指向同一个地址 const selectList1 { title: 大大, …