首页 > 其他分享 >#冲刺创作新星#【FFH】Bearpi-Micro深入解析通过JS应用控制LED灯

#冲刺创作新星#【FFH】Bearpi-Micro深入解析通过JS应用控制LED灯

时间:2022-11-09 10:32:16浏览次数:71  
标签:LED Bearpi JSI JS HILOG 北向 reply data

(目录)

一、前言

最近跑了一遍Bearpi-Micro编写点亮LED灯程序的Demo,深入了解了如何在开发板上运行一个控制LED灯的程序,达到能关闭灯、开启灯以及翻转灯的状态,南向如何编写JS API接口提供驱动服务给北向应用使用。突发奇想,发现了官方给出的点灯应用中的一个不足,并进行优化。 参考文章:编写通过JS应用控制LED灯

二、(南向)深入解析通过JS应用控制LED灯

1.前提

请确保已经完成编写一个点亮LED灯程序实验,因为本实验将依赖编写一个点亮LED灯程序实验中开发的驱动,以下教程篇幅较长,请耐心仔细阅读。

2.JS API接口开发

注:以下代码为主要代码的剖析,详细完整的代码可查看参考文章编写通过JS应用控制LED灯

(1)添加控制LED灯的JS API接口

修改foundation\ace\ace_engine_lite\frameworks\src\core\modules\app_module.h,加入toggleLed JS API,

static JSIValue ToggleLed(const JSIValue thisVal, const JSIValue* args, uint8_t argsNum);

("##start##"和"##end##"仅用来标识位置,添加完配置后删除这两行)。

void InitAppModule(JSIValue exports)
{
    JSI::SetModuleAPI(exports, "getInfo", AppModule::GetInfo);
    JSI::SetModuleAPI(exports, "terminate", AppModule::Terminate);
##start##
    JSI::SetModuleAPI(exports, "ledcontrol", AppModule::ToggleLed);
##end##
#ifdef FEATURE_SCREEN_ON_VISIBLE
    JSI::SetModuleAPI(exports, "screenOnVisible", AppModule::ScreenOnVisible);
#endif
}

解析:在头文件中封装好JS API接口函数。 提供给北向的接口名为:==ledcontrol== ,南向业务代码函数为==ToggleLed== 。

(2)编写控制LED灯c++ 业务代码

在foundation\ace\ace_engine_lite\frameworks\src\core\modules\app_module.cpp中加入控制LED灯c++ 业务代码 注:以下代码仅为部分重要代码

                 主函数ToggleLed将会调用的GpioWriteRead函数

标签:LED,Bearpi,JSI,JS,HILOG,北向,reply,data
From: https://blog.51cto.com/harmonyos/5835503

相关文章

  • linux 安卓 node.js
    如果是宝塔面板直接下载版本管理器安装即可 linux:推荐版本 Node.jsv14.17.3. 2022年11月9日下载:https://registry.npmmirror.com/binary.html?path=node/ 上......
  • js高级之函数高级部分
    基于尚硅谷的尚硅谷JavaScript高级教程提供笔记撰写,加入一些个人理解github源码博客下载原型与原型链prototype:显式原型属性,它默认指向一个Object空对象(即称为:......
  • js高级之对象高级部分
    基于尚硅谷的尚硅谷JavaScript高级教程提供笔记撰写,加入一些个人理解github源码博客下载对象的创建模式Object构造函数模式套路:先创建空Object对象,再动态添加属......
  • 从6个方面净化你的Js代码
    记录一下怎样写出整洁规范的代码,用于共勉进步。对于什么是整洁的代码,书中给出了大师们的总结:BjarneStroustrup:优雅且高效;直截了当;减少依赖;只做好一件事Gradybooch:简单直接......
  • js提交数据
    一、from表单提交<formaction=""method="post"enctype="multipart/form-data"><inputtype="submit"class="btnbtn-info">属性:action:是form表单提交数据的......
  • 使用jwt鉴权(jsonwebtoken)
    1.下载jsonwebtokennpmi-Sjsonwebtoken2.引用constjwt=require('jsonwebtoken');3.需要设置秘钥constsecretKey='3.14159263528542852651268541';4.设......
  • 前端零配置打包工具 parceljs 体验
    参考https://www.parceljs.cn/getting_started.htmlparceljs中文官网https://www.parceljs.cn/getting_started.htmlParcel1版本的中文文档https://v2.parceljs.cn......
  • js小知识点
    01.thisthis的指向完全由函数在哪里调用决定。在ES5中,this永远指向调用它的那个对象;在ES6的箭头函数中没有this绑定,this指向箭头函数定义时作用域中的this;判断this的......
  • 谈谈js中this的理解
    this一、this的理解第一准则:this永远指向函数运行时所在的对象,而不是函数被创建时所在的对象【不包含箭头函数】二、this的集中指向:window对象如:console.log......
  • js对象属性继承的方式都有哪些
    对象属性继承原型继承-实现方式:将子类构造函数的原型指向父类构造函数的实例对象+改变了子类构造函数的原型指向实现继承+则子类构造函数实例对象的原型指向......