AWTK 开源串口屏开发(4) - 采用数据

AWTK 开源串口屏开发 - 数据采集

1. 功能

数据采集是一个常用的功能,MCU 定时采集数据(如环保设备定时采样空气中的污染物),并发送采样数据到串口屏,串口屏可以显示采样数据,也可以对采样数据进行管理(保存或清除)。

在这里插入图片描述

基本工作原理:

  • 1.MCU 端设置属性名为 history_data,数据类型为字符串,数据格式为用 | 分隔的多个字段的数据。

  • 2.串口屏收到数据后,会把采样数据放到一个名为 history_data 的模型(数据)中。

  • 3.界面通过绑定规则将 history_data 模型中的数据关联到控件上。

在这里插入图片描述

时间为 epoch 时间,方便内部存储和查询。

下面演示一下具体的实现方法。

2. 创建项目

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

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

3. 制作界面

用 AWStudio 打开上面 history_data 目录下的 project.json 文件。里面有一个空的窗口,在上面设计类似下面的界面:

在这里插入图片描述

中间是一个列表视图列表视图中放一个列表项列表项中放 6 个文本控件,分别用来显示序数、时间、一氧化碳、二氧化氮、悬浮颗粒物、二氧化硫。

3. 添加绑定规则

第一次用到列表视图,有几点需要特别说明一下:

列表视图中的滚动视图需要指定 v-for-items 属性:

属性说明
v-for-itemstrue它保证其下的列表项,会根据数据自动生成|

3.0.1 几个特殊的变量

  • index 特指序数。
  • item 特指当前的数据。比如在这里 ‘item.time’ 表示时间,‘item.一氧化碳’ 表示一氧化碳,‘item.二氧化氮’ 表示二氧化氮,‘item.悬浮颗粒物’ 表示悬浮颗粒物。
  • selected_index 表示当前选中的序数(可在列表视图之外绑定)。
  • items 表示当前列表视图中的数据个数(可在列表视图之外绑定)。

3.0.2 几个特殊的命令

  • set_selected 设置当前选中的序数(在列表项中使用)。
  • save 保存数据到文件(在列表视图之外的按钮上绑定)。
  • reload 重新加载数据(在列表视图之外的按钮上绑定)。
  • clear 清除所有数据(在列表视图之外的按钮上绑定)。
  • remove 删除指定序数的数据(在列表视图之外的按钮上绑定)。

3.1 序数

绑定属性绑定规则说明
v-data:value{index}index 特指序数。

3.2 时间

时间是整数(秒数),可以通过 item.time 来获取。

绑定属性绑定规则说明
v-data:value{date_time_format(item.time, ‘Y-M-D hⓂ️s’)}需要用date_time_format将 epoch 时间转换成人类可读的时间。

3.3 一氧化碳

可以通过 item.一氧化碳 来获取。

绑定属性绑定规则说明
v-data:value{item.一氧化碳}

3.4 二氧化氮

可以通过 item.二氧化氮 来获取

绑定属性绑定规则说明
v-data:value{item.二氧化氮}

3.5 悬浮颗粒物

可以通过 item.悬浮颗粒物 来获取

绑定属性绑定规则说明
v-data:value{item.悬浮颗粒物}

3.6 二氧化硫

可以通过 item.二氧化硫 来获取

绑定属性绑定规则说明
v-data:value{item.二氧化硫}

3.7 列表项

为了配合删除选中的采样数据,需要在列表项加两个绑定规则。

绑定属性绑定规则说明
v-on:click{set_selected}点击时将当前项目设置为选中
v-data:focused{index==selected_index}当前项目选中时高亮

3.8 删除当前选择的采样数据

绑定属性绑定规则说明
v-on:click{remove, Args=selected_index}selected_index 表示当前选中的项目

3.9 清除所有采样数据

绑定属性绑定规则说明
v-on:click{clear}

3.10 保存采样数据

绑定属性绑定规则说明
v-on:click{save}

3.11 重新加载采样数据

绑定属性绑定规则说明
v-on:click{reload}

3.12 退出应用程序

绑定属性绑定规则说明
v-on:click{nothing, QuitApp=true}

3.12 指定窗口的模型

  • 指定窗口的模型为 history_data

在这里插入图片描述

4. 启用数据采样

修改 design/default/data/settings.json 文件,启用数据采样:

{"name": "hmi_histroy_data1","history_data": {"enable": true, /*是否启用数据采集*/"fields": {"time": {}, /*时间必须用 'time',放在第一位*/"一氧化碳" : {"min": 0,"max": 100,"unit": "mg/m³"},"二氧化氮" : {"min": 0,"max": 110,"unit": "mg/m³"},"悬浮颗粒物" : {"min": 0,"max": 120,"unit": "mg/m³"},"二氧化硫": {"min": 0,"max": 130,"unit": "mg/m³"}},"fields_seperator": "|", /*字段之间的分隔符*/"max_rows": 1000 /*数据采集最大行数*/,"auto_save_interval": 60000}
}

5. 编译运行

运行 bin 目录下的 demo 程序。

在这里插入图片描述

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

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

  • 通过模拟器发送数据,可以看到串口屏界面,自动添加采样数据。

在这里插入图片描述

测试数据:

1702032398|3.1|3.2|3.3|3.4

7. 注意

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

  • 实际使用时,在 demo_history_data1/design/default/ui/home_page.xml 基础上进行调整即可,无需重复上面的过程,但是最好了解其中的原理。

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

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

相关文章

超维空间S2无人机使用说明书——52、初级版——使用PID算法进行基于yolo的目标跟踪

引言:在实际工程项目中,为了提高系统的响应速度和稳定性,往往需要采用一定的控制算法进行目标跟踪。这里抛砖引玉,仅采用简单的PID算法进行目标的跟随控制,目标的识别依然采用yolo。对系统要求更高的,可以对…

Unity中裁剪空间推导(使用FOV来调节)

文章目录 前言一、使用FOV代替之前使用的Size(h)1、我们可以把矩阵中使用到 h(高) 和 w(宽) 的部分使用比值替换掉。2、替换后 前言 在之前的文章中,我们控制透视相机使用的是SIze。但是,在透视相机中,我们使用的是FO…

118基于matlab的二级倒立摆的数学建模

基于matlab的二级倒立摆的数学建模,引入二次型最优控制率,对系统进行仿真分析,得出摆杆及小车位置变化曲线。程序已调通,可直接运行。

【MySQL】事务Transaction

1. 事务的概念 事务是什么 在业务逻辑中使用sql,面对一些较复杂的场景,是需要多个sql语句组合起来实现的。如:银行的转账业务,若客户A要转账100元给客户B,就要两条sql:A余额减100,B余额加100&a…

[Angular] 笔记 24:ngContainer vs. ngTemplate vs. ngContent

请说明 Angular 中 ngContainer, ngTemplate 和 ngContent 这三者之间的区别。 chatgpt 回答: 这三个在 Angular 中的概念是关于处理和组织视图的。 1. ngContainer: ngContainer 是一个虚拟的 HTML 容器,它本身不会在最终渲染…

【Spark精讲】一文讲透SparkSQL聚合过程以及UDAF开发

SparkSQL聚合过程 这里的 Partial 方式表示聚合函数的模式,能够支持预先局部聚合,这方面的内容会在下一节详细介绍。 对应实例中的聚合语句,因为 count 函数支持 Partial 方式,因此调用的是 planAggregateWithoutDistinct 方法&a…

【AIGC科技展望】预测AIGC2025年的机会与挑战

2025年,AIGC的机会与挑战 在未来的五年里,AIGC(AI Generated Content)将会成为一个越来越重要的领域。但是,伴随着机会而来的是挑战。在这篇文章中,我们将一起探讨AIGC的机会与挑战,并预测2025…

SSH -L:安全、便捷、无边界的网络通行证

欢迎来到我的博客,代码的世界里,每一行都是一个故事 SSH -L:安全、便捷、无边界的网络通行证 前言1. SSH -L基础概念SSH -L 的基本语法:端口转发的原理和作用: 2. SSH -L的基本用法远程访问本地示例:访问本…

项目中使用Java中List.subList()的注意事项

使用介绍 在Java中&#xff0c;subList是List接口的一个方法&#xff0c;用于获取原始列表的子列表 方法的声明如下 List<E> subList(int fromIndex, int toIndex);fromIndex&#xff1a;起始索引&#xff08;包括&#xff09;toIndex&#xff1a;结束索引&#xff08…

深入浅出理解TensorFlow的padding填充算法

一、参考资料 notes_on_padding_2 二、TensorFlow的padding算法 本文以TensorFlow v2.14.0版本为例&#xff0c;介绍TensorFlow的padding算法。 1. 引言 tf.nn.conv2d and tf.nn.max_pool2d 函数都有padding参数&#xff0c;在执行函数之前&#xff0c;都需要进行填充padd…

系列六、Consul

一、Consul 1.1、概述 Consul是一套开源的分布式服务发现和配置管理系统&#xff0c;由HashiCorp公司用Go语言开发。他提供了微服务系统中的服务治理、配置中心、控制总线等功能。这些功能中的每一个功能都可以单独使用&#xff0c;也可以一起使用以构建全方位的服务网格&…

AI模型训练【偏差/方差】与【欠拟合/过拟合】

在我们拿到一个数据集&#xff0c;高高兴兴准备训练一个模型时&#xff0c;会遇到欠拟合或过拟合的问题&#xff0c;业内也喜欢用偏差和方差这两指标去定义它们&#xff0c;那这些词什么意思呢&#xff1f;有什么方法能避免/解决 欠拟合和过拟合呢&#xff1f; 这其实是非常非常…

将本地工作空间robot_ws上传到gitee仓库

git config --global user.name "geniusChinaHN" git config --global user.email "12705243geniuschinahnuser.noreply.gitee.com" cd ~/robot_ws #git init#创建原始仓库时候用 git add . git commit -m "上传文件内容描述" #git remote add r…

day9--java高级编程:多线程

1 Day16–多线程01 1.1 程序概念 程序(program)&#xff1a;是为完成特定任务、用某种语言编写的一组指令的集合。即指一段静态的代码&#xff0c;静态对象。 1.2 进程 1.2.1 概念 进程(process)&#xff1a;是程序的一次执行过程&#xff0c;或是正在运行的一个程序。是一…

『番外篇七』SwiftUI 获取视图全局位置在 NavigationStack 中失效的解决方法

概览 在 番外篇六』SwiftUI 取得任意视图全局位置的三种方法 这篇博文里,我们详细讨论了在 SwiftUI 中获取任意视图全局坐标的几种方法。 不过,我们也从中提到了某些方法无法适用于 NavigationStack 视图,本篇博文由此应运而生。 在本篇博文种,您将学到如下内容: 概览1.…

git是什么,git入门常用基本命令

文章目录 git是什么1 .git init--初始化2.git status--检测当前文件夹下面文件状态3. git add--要管理的文件4.git add . --管理当前文件夹下的所有文件5.git commit -m--生成第一个版本6.git log--查看版本的记录 git是什么 分布式&#xff0c;版本控制&#xff0c;软件 版本…

通信原理课设(gec6818) 007:语音识别

目录 1、去科大讯飞官网下载对应的sdk 2、科大讯飞文件夹的意思 3、配置ARM的录音环境 4、编程实现语音识别 我们的需求是将一个语音文件从客户端传到服务器&#xff0c;因此我们最好是选用tcp 现在市面上面常用的语音识别解决方案为&#xff1a;科大讯飞c和百度c 离…

zookeeper之集群搭建

1. 集群角色 zookeeper集群下&#xff0c;有3种角色&#xff0c;分别是领导者(Leader)、跟随着(Follower)、观察者(Observer)。接下来我们分别看一下这三种角色的作用。 领导者(Leader)&#xff1a; 事务请求&#xff08;写操作&#xff09;的唯一调度者和处理者&#xff0c;保…

【C语言】一篇文章深入解析联合体和枚举且和结构体的区别

文章目录 &#x1f4dd;前言&#x1f320; 联合体类型的声明&#x1f309;联合体的特点 &#x1f320;相同成员的结构体和联合体对⽐&#x1f309;联合体⼤⼩的计算 &#x1f320;联合体应用&#x1f309;枚举类型的声明 &#x1f320;枚举类型的优点&#x1f309; 枚举类型的使…

MacBook查看本机IP

嘚吧嘚 其实这也不是什么困难的问题&#xff0c;但是今年刚刚入坑Mac&#xff0c;外加用的频率不是很高&#xff0c;每次使用的时候都查&#xff0c;用完就忘&#xff0c;下次用的时候再查&#x1f92e;。真的把自己恶心坏了&#x1f648;。 所以写篇文章记录一下&#x1f92…