自学内容网 自学内容网

【BQ3568HM开发板】适配LED点灯程序

目录

引言

示例程序工作原理

适配修改

测试

结语


引言

前一篇博文提到,官方提供的bq_led.hap软件包在安装到BQ3568HM开发板时会遇到“failed to install bundle. code:9568347 error: install parse native so failed.”错误,这是因为hap包里面的库文件是64位的,而默认镜像是32位的,所以导致不兼容。下面就说说如何修改程序进行适配。

示例程序工作原理

该实例程序的源码在百度网盘的“软件资料→开源鸿蒙南北向打通应用开发教学资料”目录中的代码资料中,其中的“2、开源鸿蒙GPIO控制应用开发”就是这个例子的源码。

index.ets代码如下:

import testNapi from 'libentry.so'

@Entry
@Component
struct Index {
  @State message: string = '点亮一个LED灯';
  @State result: number = 0;
  ledPath: string = "/sys/class/leds/pilot_lamp/brightness";

  build() {
    Row() {
      Column() {
        Text(this.message)
          .fontSize(50)
          .fontWeight(FontWeight.Bold)

        Text("LED_Gre")
          .fontSize(30)
          .fontWeight(FontWeight.Bold)

        Toggle({type: ToggleType.Switch, isOn: false})
          .size({height: 40, width: 100})
          .onChange((isOn)=>{
            if(isOn){
              console.info("this toggle is On.")
              let res: string = testNapi.gpio_on(this.ledPath)
              console.info(res);
            }else {
              console.info("this.toggle is Off.")
              let res: string = testNapi.gpio_off(this.ledPath)
              console.info(res);
            }
          })
      }
      .width('100%')
    }
    .height('100%')
  }
}

从中可以看出,它调用了NAPI库,然后在NAPI库中操作“/sys/class/leds/pilot_lamp/brightness”,以实现开关灯的操作。

适配修改

适配的修改也比较简单,就是让工程同时编译出64位和32位的库,这样HAP包就可以在不同的配置下运行了。

修改entry\build-profile.json5文件,在其中加入AbiFilters属性。代码如下:

  "apiType": "stageMode",
  "buildOption": {
    "arkOptions": {
      // "apPath": "./modules.ap"  /* Profile used for profile-guided optimization (PGO), a compiler optimization technique to improve app runtime performance. */
    },
    "externalNativeOptions": {
      "path": "./src/main/cpp/CMakeLists.txt",
      "arguments": "",
      "cppFlags": "",
      "abiFilters": ["arm64-v8a", "armeabi-v7a"]
    }

再次编译程序就可以了。 

测试

再次部署程序到开发板,运行效果如下图所示。提供控制屏幕上的开关按钮,在电源灯下面有个绿灯会开关(图中画圆的部分)。

结语

至此,完成了程序的适配工作。


原文地址:https://blog.csdn.net/bit_mike/article/details/145287860

免责声明:本站文章内容转载自网络资源,如侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!