你玩过轻量系统软总线应用吗?

项目概述

可能有些同学已经接触过了标准系统上的软总线应用开发,但是你玩过轻量系统上的软总线应用吗?现在它来了。我们利用OpenAtom OpenHarmony 3.1 Release(以下简称“OpenHarmony”)版本的轻量系统软总线能力,将智能燃气检测设备和智能窗户通风设备组成一个轻量级分布式网络,实现设备之间的相互控制。

原理图如下:

当家中的燃气告警时,无需任何操作,直接控制窗户通风系统中的电机工作。

开发说明

从上面的视频中可以看到,相关案例设备的应用界面都可以分成外设交互页面和软总线操作页面两大块。在下面的系统框图中可以看到相关页面和其依赖的相关轻量系统能力。例如外设交互界面通过自定义JSI接口与设备硬件打交道,软总线操作界面则通过轻量系统的设备管理能力、软总线能力来实现设备间的发现、认证、传输等软总线操作。

在下面的内容中我们将以智能燃气告警器设备为例,将相关开发过程分成JS应用端开发、自定义JSI实现、开发板端代码三部分来说明:

JS应用开发

燃气告警器JS应用是基于3.1 release版本,并结合方舟开发框架(ArkUI)、分布式组网等特性,使用JS语言开发的一款分布式安全厨房应用。为了体现了 OpenHarmony轻量级分布式特性,不仅需要考虑页面该如何设计、应用怎样同外设交互,还需要考虑两个轻量级设备间如何进行设备认证,设备间如何进行通讯等问题。

所以在相关应用中设计了操作页面,报警页面以及设备认证页面。其中首页是设置燃气浓度阈值,以及显示当前燃气浓度;报警页面是当首页检测到当前燃气浓度达到或高于我们设置的阈值时,会从首页跳转到报警界面;设备认证页面则是对两台设备进行分布式组网。

代码结构如下图:

外设交互页面开发

相关界面如上图所示,我们将首页页面分成三个部分:顶部标签、燃气浓度显示、设置告警阈值。接下来是具体的解析内容:

1)顶部标签解析

顶部标签中除了相关文本界面,主要是顶部两个按钮,分别用来显示当前Wi-Fi连接状态以及跳转到设备认证页面。

GetKey() {
       com.get({ // 获取wifi状态
           key: 'storage_key',
           success: (data)=> {
               let res = JSON.parse(data)
               if (res.wifi) {
                   if(res.wifi == 'connected') {
                       this.isWifi = true;
                   } else {
                       this.isWifi = false;
                   }
               }
           .....
           },
       });
   },
changePage(operation) {
       router.replace({
           uri:"pages/dm/dm" // 跳转到设备认证页面
       });
   }

2)燃气浓度显示

主要是获取当前燃气浓度,并实时刷新到相关界面上。

onInit() {
         setTimeout(()=>{
            setInterval(()=>this.GetKey(),500) // 每500ms 获取一次
        },3000);
    },
 
 
 GetKey() {
        com.get({
            key: 'storage_key',
            success: (data)=> {
                let res = JSON.parse(data)
 
 
                if (res.CurrentGasCONC) {
                    this.currentValue = res.CurrentGasCONC;
                    this.progressPercent = ((this.currentValue ) /300) * 100
                    if(this.currentValue >this.PresetValue && !this.isChange){
                        this.isChange = true;
                        router.replace({
                            uri:"pages/warn/warn"  // 燃气数值超标后自动跳转告警页面
                        });
                    }
                }
            },
            ......
        });
    }

3)设置报警阈值

首页界面中对于报警阈值的处理,主要包含减小预设阈值和增大预设阈值,都是通过调用相关SetKey操

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值