BearPi-HM Micro 鸿蒙应用开发体验

2023-11-12

这是在去年小熊派开发的一款开发板(核心STM32MP157),我之前也花了一些时间来学习开发了一个应用。包含南向各种外设驱动的开发和北向hap APP的开发,最终实现了自己的构想。(之前没有时间记录,今天简单记录总结)

请添加图片描述
在这里插入图片描述

南向开发功能如下

  • 板载陀螺仪驱动(实现开发板倾斜角检测)
  • E53IA1 温湿度传感器驱动
  • E53IA1 光照传感器驱动
  • E53IA1 电机控制

北向开发Hap应用实现的功能
动画实现、温湿度数据显示,传感器状态实时更新,包含了动画、定时器、布局的使用以及触摸对应传感器实现手势切换状态(上下左右划动等)。

由于华为openharmony3.0对于智慧视觉设备支持的API非常有限,所以目前并没有实现我期待的最完美的效果。其中南向的开发我最初想用陀螺仪实现屏幕倾斜检测,然后自动旋转屏幕和UI,结果,鸿蒙嵌入式设备不支持竖屏,就这么尴尬。

功能演示如下:

把鸿蒙3.0的应用装进折叠开发板

在这里插入图片描述

南向开发总结

南向的开发还是有一些复杂的,需要遵循鸿蒙的一套驱动开发框架(HDF框架),HDF框架以组件化的驱动模型作为核心设计思路,为开发者提供更精细化的驱动管理,让驱动开发和部署更加规范。HDF框架将一类设备驱动放在同一个host里面,开发者也可以将驱动功能分层独立开发和部署,支持一个驱动多个node,HDF驱动模型如下图所示:
在这里插入图片描述
我这边也是根据官方文档循序渐进开发了所需要的的驱动,并最终将E53外设板的所有外设整合为一个驱动,同时用一个数据将传感器数据一次传输到应用层,且包含bool型的传感器状态,感觉还是很方便的。这样北向的应用就可以调一次接口来实现所有传感器状态的查询了。具体的HDF框架中的理论知识,不再赘述,可自行查看文末的文档。
在这里插入图片描述
还有一点是北向与南向的交互是调用的JS接口来实现的,但是鸿蒙官方提供的接口非常少,应该只有两个(搞不懂,,),所以所有的与外设交互的接口,都需要自己实现,例如:小熊派例程中的操作LED的接口。这也是我为什么把E53的传感器融合为一个接口的原因,这样调用一次即可查询多个数据。

北向开发总结

北向应用的开发,反而更简单一些,因为开发方式与微信小程序几乎是一模一样的,但是也抵挡不住里面的坑多,,,还是刚刚所说的,API接口太少了,尤其是UI和动画方面。

  • 智慧视觉产品支持的UI非常少
  • 动画只支持XY轴的平移,且不能混合
  • 布局没有相对布局
  • 简单的旋转,UI控件也是不支持的,只有图片能旋转
  • 很多控件的参数都不能动态更新
  • 等等

所以能做的UI是非常有限的,我期间想做一个类似于鸿蒙超级终端的动画,来实现气泡的动态效果,即点击对应气泡,则对应传感器工作,功能实现了但是动画和UI折腾了很久,不尽人意(动画只能线性运动无法达到比较自然的动态效果)。
在这里插入图片描述
CSDN图片大小的无奈

期间我还尝试做了帧动画,来实现鸿蒙开机动画的效果,在虚拟机上面是可以正常工作的而且很流畅,但是在板子里面播放及其卡顿,目前原因未知。
在这里插入图片描述

由于个别接口,我并未遵循鸿蒙的协议,所以并未直接提交PR给小熊派,而是自己克隆的仓库自己来维护。在开发过程中我与小熊派的老王一起联调填了很多的坑。特此记录,后续待小熊派的WIFI和网络驱动开发完毕,我会再开发更多有意思的物联网应用,敬请期待!

小熊派仓库:https://gitee.com/bearpi/bearpi-hm_micro_small
我的南向仓库:https://gitee.com/wenzhengclub/bearpi-hm_micro_small
我的北向仓库(将不断丰富):https://gitee.com/wenzhengclub/openharmony_app

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

BearPi-HM Micro 鸿蒙应用开发体验 的相关文章

  • 嵌入式(TCP编程)

    TCP编程API 1 socket 函数 参数 2 bind 函数 如果是IPV6的编程 要使用 struct sockddr in6结构体 man 7 ipv6 通常更通用的方法可以通过struct sockaddr storage来编程
  • VulnHub渗透实战Billu_b0x

    简介 VulnHub是一个面向所有人开放的安全靶场 里面有很多安全环境 只要下载相关镜像 在相关虚拟机上面运行就可以练习相关靶场了 里面设计了好多关 如果有耐心一定可以到达峰顶 许多考oscp人员 也会利用vulnhub靶场进行刷题 我们下
  • pycharm缩进快捷键

    1 pycharm使多行代码同时右移缩进 鼠标选中多行代码后 按下Tab键 一次缩进四个字符 2 pycharm使多行代码同时左移 鼠标选中多行代码后 同时按住shift Tab键 一次左移四个字符
  • python函数和模块有什么特性_python-函数包和模块

    python函数的作用 在Python代码段中如果有一段几十行的代码 需要多次重复使用这几十行代码时 为了提高代码的可用性 将代码段放进函数体内 以后在使用中直接调用该函数模块即可 函数是一个独立的函数体或是一段独立的功能体 最主要的作用是
  • 头脑风暴会议的注意事项

    在组织内会经常召开头脑风暴的讨论会 如何举办一个成功的讨论会议呢 请看如下的30个要点 头脑风暴会议的注意事项 序号 分类 要点 1 会前 明确会议目的 议程 时间 地点 交通方式等 并确保通知到与会人员 以便参与者有充分准备 2 准备必要
  • 智能系统设计开发 java_一种基于java语言的智能系统设计与开发.doc

    一种基于java语言的智能系统设计与开发 doc 还剩 36页未读 继续阅读 下载文档到电脑 马上远离加班熬夜 亲 很抱歉 此页已超出免费预览范围啦 如果喜欢就下载吧 价低环保 内容要点 兰州交通大学毕业设计 论文 32参考文献 1 郭今吕

随机推荐

  • STM32 定时器的简单应用 1ms中断代码

    引言 利用定时器TIM8产生1ms中断 每中断一次 全局变量 1 计数到10即10ms 使得输出引脚翻转一次 芯片采用STM32F103VCT6 系统输入时钟12MHz 完成代码并用示波器输出 根据要求 本项目涉及系统时钟配置 中断源配置
  • 数据结构---冒泡排序

    冒泡排序 算法思想 代码实现 优化冒泡排序1 优化冒泡排序2 算法思想 把相邻的元素两两比较 当一个元素大于右侧相邻元素时 交换它们的位置 当一个元素小于或等于右侧相邻元素时 位置不变 每次冒泡 就把当前最大的元素弄出来了 冒泡排序是一种稳
  • Python 下载的 11 种姿势

    1 使用requests 你可以使用requests模块从一个URL下载文件 考虑以下代码 你只需使用requests模块的get方法获取URL 并将结果存储到一个名为 myfile 的变量中 然后 将这个变量的内容写入文件 2 使用wge
  • ES报错Native controller process has stopped - no new native processes can be started

    一 问题描述 在Linux中启动ES发现如下错误 Native controller process has stopped no new native processes can be started 问题如下所示 问题代码 2022 0
  • OS X Mavericks Server使用教程:安装设置

    2014年1月2日 51CTO外电头条 OS X Server 10 9增加了多项新服务 同时也通过调整让旧有服务更加易于使用 Mavericks运行Server app 3 0版本 OS X Server以更为友善的面貌亲近用户 OS X
  • springboot 事务回滚(*)

    springboot 事务回滚 springboot 事务使用 1 只有在开启事务的方法中出现异常 才会自动回滚 需要在service的public方法上面加上 Transactional rollbackFor Exception cla
  • iLogtail专题六:实际场景采集模拟

    公司一直使用的Filebeat进行日志采集 由于Filebeat采集组件一些问题 现需要使用iLogtail进行代替 现记录下iLogtail介绍和实际使用过程 这是iLogtail系列的第六篇文章 背景 由于平时日志采集存在堆栈信息日志情
  • python 学习笔记06: dict(字典)类型的操作

    usr bin env python3 coding utf 8 Created on Mon Mar 25 22 04 09 2019 author sungang 今天学习python中用数据类型 dict 字典 学习一个类型 最好的办
  • LeetCode 136.只出现一次的数字

    题目描述 给定一个非空整数数组 除了某个元素只出现一次以外 其余每个元素均出现两次 找出那个只出现了一次的元素 说明 你的算法应该具有线性时间复杂度 你可以不使用额外空间来实现吗 示例 1 输入 2 2 1 输出 1 示例 2 输入 4 1
  • 杀毒软件会从哪些方面对计算机进行保护作用(360杀毒软件)

    360杀毒软件介绍 360杀毒软件介绍 360杀毒是360安全中心出品的一款免费的云安全杀毒软件 它创新性地整合了五大领先查杀引擎 包括国际知名的BitDefender病毒查杀引擎 Avira 小红伞 病毒查杀引擎 360云查杀引擎 360
  • 《因果科学周刊》第5期:OOD 泛化

    为了帮助大家更好地了解因果科学的最新科研进展和资讯 我们因果科学社区团队本周整理了第5期 因果科学周刊 推送近期因果科学值得关注的论文和资讯信息 本期的主题是 OOD 泛化 另外在 近期社区活动 专栏 我们将介绍清华副教授崔鹏在 NeurI
  • 借助人工智能,产品文章直接生成字幕视频

    const name 产品文章生成视频 console log name 拍视频不是我的强项 但我发现现在只需要通过AI就可以直接把产品文字变成短视频 省去了剪辑的烦恼 我们来看看文本生成的视频效果预览 为了方便在页面上展示 下面显示的视频
  • 编写程序,输出100以内能够整除7,但不能整除5的数。要求每一行输出6项数据。

    from math import n 0 for i in range 1 101 if i 7 0 and i 5 0 print gt 2d format i end n n 1 if n 6 0 print
  • 反射与注解(详细)

    文章目录 一 注解Annotation 1 什么是注解 2 内置注解 3 元注解 4 自定义注解 二 反射机制 1 静态vs动态语言 动态语言 静态语言 2 java反射机制概述 3 java反射机制研究及应用 反射机制提供的功能 优点 缺
  • 如何判断1024!末尾有多少个0

    分析 方法一 暴力法 简单的方法就是就算出1024 的值 然后判断末尾有多少个0 但是这种方法有两个非常大的缺点 第一算法效率非常低下 第二 当这个数字比较大的时候直接计算阶乘可能会导致数据溢出 从而导致计算结果出现偏差 因此 下面给出另外
  • mysql 按时间降序排序、时间为空的排在前面

    SELECT FROM t task info ORDER BY IF ISNULL end at 0 1 end at ASC
  • web安全--文件上传漏洞实例操作

    1 进入owasp靶机测试环境 进入dvwa login登录名和密码都为admin2 2 进入DVWA Security选择安全级别 首先选择低安全级别 3 进入upload 可以选择右下角的view resource 查看后端源码可以上传
  • SpringBoot入门学习—— 三、项目属性配置

    三 项目属性配置 第一种 application properties 访问http 127 0 0 1 8081 girl hello 第二种 application yml 填写属性需要空格 idea中颜色会变 访问网址 http 12
  • 打不开github

    https blog csdn net qq 41176055 article details 128496628
  • BearPi-HM Micro 鸿蒙应用开发体验

    这是在去年小熊派开发的一款开发板 核心STM32MP157 我之前也花了一些时间来学习开发了一个应用 包含南向各种外设驱动的开发和北向hap APP的开发 最终实现了自己的构想 之前没有时间记录 今天简单记录总结 南向开发功能如下 板载陀螺