女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

基于OpenHarmony NAPI框架控制板端LED

電子發燒友開源社區 ? 來源:未知 ? 2022-11-01 09:25 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

前言: 自己一直是板端開發也就是南向開發,對于北向應用端開發一直是個短板,九聯提供的開發板對南北向開發過程提供了樣例,非常感興趣這一部分,如何實現,下面就自己根據樣例實現開發板上使用APP控制板端接口來學習。下面根據Openharmony NAPI框架實現GPIO接口。

一、開發環境

  • 搭載OpenHarmony-3.2-Beat2版本的九聯開發板。

  • Ubuntu20.04虛擬機。

  • USB_Burning_Tool燒錄工具。

  • 自己準備LED燈及接口線。

以上除4部分,其他都在前面的帖子中搭建完成。第4部分自己準備幾根杜邦線和幾個LED燈。

二、NAPI框架簡介

NAPI(Native API)是OpenHarmony標準系統的一種JS API實現機制,適合封裝IO、CPU密集型、OS底層等能力并對外暴露JS接口,實現JS與C/C++代碼互相訪問。

a7832782-5983-11ed-a3b6-dac502259ad0.png

三、實現NAPI擴展庫

1、創建NAPI擴展庫

新增子系統napisubsys在OpenHarmony源碼目錄下創建一個目錄napisubsys作為子系統目錄(子系統可以在OpenHarmony源碼目錄任意位置),目前創建在九聯開發板目錄下sample/napi目錄下,具體相對OpenHarmony目錄為vendor/unionman/unionpi_tiger/sample/napi/napisubsys,在創建的目錄下新建ohos.build文件,構建時會先讀取這個文件。將新增子系統配置到OpenHarmony目錄下的build/subsystem_config.json文件中參與編譯。subsystem_config.json增加如下代碼:

"napisubsys": {
"path": "vendor/unionman/unionpi_tiger/sample/napi/napisubsys",
"name": "napisubsys"
},

(左右移動查看全部內容)

2、新增gpioled_part組件

在子系統napisubsys目錄下創建一個子組件目錄gpioled_part,打開napisubsys目錄下的ohos.build文件,在"parts":中添加下列語句:

"gpioled_part": {
  "variants": [
    "phone"
  ],
  "module_list": [    "http://vendor/unionman/unionpi_tiger/sample/napi/napisubsys/gpioled_part/gpioled_demo:gpioled"
  ]
}

(左右移動查看全部內容)

3、新增擴展動態庫

在組件目錄gpioled_part下面新建gpioled_demo目錄,作為NAPI擴展庫的代碼目錄。在gpioled_demo目錄下創建gpioled.cpp和BUILD.gn文件,編寫構建配置也即BUILD.gn文件內容如下:

import("http://build/ohos.gni")
ohos_shared_library("gpioled") {
include_dirs = [ "http://foundation/ace/napi/interfaces/kits" ]
sources = [
"gpioled.cpp",
"um_gpio.c",
]
deps = [
"http://foundation/ace/napi:ace_napi",
"http://utils/native/base:utils",
]
external_deps = [ "hiviewdfx_hilog_native:libhilog" ]
relative_install_dir = "module"
subsystem_name = "napisubsys"
part_name = "gpioled_part"
}

(左右移動查看全部內容)

4、將組件添加到產品定義中

打開vendor/unionman/unionpi_tiger/config.json文件,在“subsystems”:中添加如下語句:

{
"subsystem": "napisubsys",
    "components": [
       {
        "component": "gpioled_part",
        "features": []
       }
   ]
},

(左右移動查看全部內容)

四、NAPI接口開發

模塊注冊

1)添加NAPI框架頭文件,引入框架提供的方法。

#include "napi/native_api.h"
#include "napi/native_node_api.h"

(左右移動查看全部內容)

2)定義模塊。

3)注冊模塊,加載動態庫時自動調用注冊。

/*
* 模塊定義
 */


static napi_module gpioled_demoModule = {
.nm_version = 1,
.nm_flags = 0,
.nm_filename = nullptr,
.nm_register_func = registerGpioLed_DemoApis,
.nm_modname = "gpioled_demo", //模塊名
.nm_priv = ((void *) 0),
.reserved = {0},
};


/*


* 注冊模塊
 */
 extern "C" __attribute__((constructor)) void RegisterGpioLed_DemoModule(void) {
 napi_module_register(&gpioled_demoModule); //接口注冊函數
 }

(左右移動查看全部內容)

使用DECLARE_NAPI_FUNCTION("js函數名", c++實現函數名)定義接口函數、DECLARE_NAPI_PROPERTY、 DECLARE_NAPI_STATIC_PROPERTY等定義屬性,再通過napi_define_properties賦給exports對象,最后返回exports對象。

/*
* 注冊接口
 */


static napi_value registerGpioLed_DemoApis(napi_env env, napi_value exports) {
napi_value gpioValHigh = gpioValHigh;
napi_value gpioValLow = nullptr;
napi_create_int32(env, UM_GPIO_HIGH_LEVE, &gpioValHig);
napi_create_int32(env, UM_GPIO_LOW_LEVE, &gpioValLow);
napi_property_descriptor desc[] = {
DECLARE_NAPI_FUNCTION("setLedStatusWithCallback", setLedStatusWithCallback),
DECLARE_NAPI_FUNCTION("getLedStatusWithCallback", getLedStatusWithCallback),
DECLARE_NAPI_FUNCTION("setLedStatusWithPromise", setLedStatusWithPromise),
DECLARE_NAPI_FUNCTION("getLedStatusWithPromise", getLedStatusWithPromise),
DECLARE_NAPI_FUNCTION("setLedStatus", setLedStatus),
DECLARE_NAPI_FUNCTION("getLedStatus", getLedStatus),
DECLARE_NAPI_STATIC_PROPERTY("LED_ON", gpioValHigh),
DECLARE_NAPI_STATIC_PROPERTY("LED_OFF", gpioValLow),
};
NAPI_CALL(env, napi_define_properties(env, exports, sizeof(desc) / sizeof(desc[0]), desc));
return exports;
}

(左右移動查看全部內容)

具體實現代碼可去代碼倉庫進行下載學習。

修改deviceoardunionmanunionpi_tigerconfiginitarminit.A311D.cfg 文件,在cmds中添加相關命令

"write /sys/class/gpio/export 380",
"write /sys/class/gpio/export 381",
"write /sys/class/gpio/export 382",
"write /sys/class/gpio/export 383",
"write /sys/class/gpio/export 384",
"write /sys/class/gpio/export 385",
"write /sys/class/gpio/export 386",
"write /sys/class/gpio/export 387",
"write /sys/class/gpio/export 388",
"write /sys/class/gpio/export 389",
"chmod 666 /sys/class/gpio/gpio380/direction",
"chmod 666 /sys/class/gpio/gpio381/direction",
"chmod 666 /sys/class/gpio/gpio382/direction",
"chmod 666 /sys/class/gpio/gpio383/direction",
"chmod 666 /sys/class/gpio/gpio384/direction",
"chmod 666 /sys/class/gpio/gpio385/direction",
"chmod 666 /sys/class/gpio/gpio386/direction",
"chmod 666 /sys/class/gpio/gpio387/direction",
"chmod 666 /sys/class/gpio/gpio388/direction",
"chmod 666 /sys/class/gpio/gpio389/direction",
"chmod 666 /sys/class/gpio/gpio380/value",
"chmod 666 /sys/class/gpio/gpio381/value",
"chmod 666 /sys/class/gpio/gpio382/value",
"chmod 666 /sys/class/gpio/gpio383/value",
"chmod 666 /sys/class/gpio/gpio384/value",
"chmod 666 /sys/class/gpio/gpio385/value",
"chmod 666 /sys/class/gpio/gpio386/value",
"chmod 666 /sys/class/gpio/gpio387/value",
"chmod 666 /sys/class/gpio/gpio388/value",
"chmod 666 /sys/class/gpio/gpio389/value"

(左右移動查看全部內容)

五、Ubuntu下進行編譯NAPI

將以上文件修改完成后,編譯鏡像文件,前面帖子中已有編譯方法,自行查閱,如有問題帖子留言,我會進行回答。進入到Ubuntu下進行編譯,編譯指令如下:

./build.sh --product-name unionpi_tiger –ccache

(左右移動查看全部內容)

編譯完成如下圖所示:

a79cb5bc-5983-11ed-a3b6-dac502259ad0.png

編譯完成后需要,進行對鏡像進行打包,然后進行燒寫。執行以下命令固件打包

./device/board/unionman/unionpi_tiger/common/tools/packer-unionpi.sh

(左右移動查看全部內容)

打包完成如下圖所示,打包最終燒錄程序目錄為out/unionpi_tiger/packages/phone/images/OpenHarmony.img

a7c371a2-5983-11ed-a3b6-dac502259ad0.png

打開燒錄工具,使用Micro USB數據線連接PC與開發板OTG口并接通電源,導入燒錄包后開始燒錄即可(可關閉校驗IMG)。具體如何燒錄可參考我的其他博文。

六、應用程序編譯

打開DevEco Studio 3.0.0.993版本的軟件,打開vendor_unionman/unionpi_tiger/sample/app/gpioled_app/gpioled-javascript目錄,如下圖所示程序代碼。

a81df35c-5983-11ed-a3b6-dac502259ad0.png

將目錄vendor_unionman/unionpi_tiger/sample/napi/napisubsys下的@ohos.gpioled.d.ts文件拷貝到OpenHarmony的SDK下面,如圖所示具體路徑:

a8325e0a-5983-11ed-a3b6-dac502259ad0.png

設置自動簽名,如圖所示:

a8591414-5983-11ed-a3b6-dac502259ad0.png

編譯Hap文件,如下圖所示:

a86c344a-5983-11ed-a3b6-dac502259ad0.png

將編譯后的hap文件拷貝到USB中,因SDK中的hdc_std.exe不運行,用USB安裝應用程序了,文件如下圖所示,可自行修改文件名。

a88ea4bc-5983-11ed-a3b6-dac502259ad0.png

七、板端安裝應用控制LED燈

將USB插入USB3.0接口,串口端顯示如下所示:

a8c0bc4a-5983-11ed-a3b6-dac502259ad0.png

掛載/dev/block/sda1到/mnt/usb目錄,如果沒有/mnt/usb目錄進行自建,運行如下命令進行安裝hap,如圖所示:

bm install -p 包名.hap

(左右移動查看全部內容)

a8d5b94c-5983-11ed-a3b6-dac502259ad0.png

安裝后屏幕界面如圖所示:

a9216f5e-5983-11ed-a3b6-dac502259ad0.png

連接GPIO_05到LED的正極,如下圖所示:

a94adf24-5983-11ed-a3b6-dac502259ad0.png

打開gpioled的app運行如視頻所示。

弄了hdc_std.exe,但它不運行,有問題。正在查找問題。有了hdc,直接連接板子OTG將hap運行到板子上看app效果,可以看調試信息,一口兩用。

提示:本文由電子發燒友社區發布,轉載請注明以上來源。如需社區合作及入群交流,請添加微信EEFans0806,或者發郵箱[email protected]。

更多熱點文章閱讀

END

想了解更多開源技術?后臺留言,立刻安排!

就喜歡獎勵一個“”和“在看”唄~


原文標題:基于OpenHarmony NAPI框架控制板端LED

文章出處:【微信公眾號:電子發燒友開源社區】歡迎添加關注!文章轉載請注明出處。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • led
    led
    +關注

    關注

    242

    文章

    23847

    瀏覽量

    674101
  • NAPIT
    +關注

    關注

    0

    文章

    2

    瀏覽量

    2193
  • OpenHarmony
    +關注

    關注

    29

    文章

    3854

    瀏覽量

    18611

原文標題:基于OpenHarmony NAPI框架控制板端LED

文章出處:【微信號:HarmonyOS_Community,微信公眾號:電子發燒友開源社區】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    使用NAPI實現openharmony APP網絡開發的接口

    1.設計背景當前openharmony標準系統通過 JS、eTS 開發貌似還沒支持網絡開發的接口,故JS、eTS方式開發只能通過NAPI調用C/C++才能使用到網絡,本次我就使用NAPI開發
    發表于 04-02 09:56

    如何通過OpenHarmony系統中集成的ffmpeg庫和NAPI機制,實現更多的多媒體功能?

    OpenHarmony社區建設,不斷推動開源事業的發展。身為深開鴻的一名OS框架開發工程師,我在OpenHarmony 開源項目成立伊始便積極加入OpenHarmony 社區建設,負責
    發表于 07-25 16:57

    【潤和軟件DAYU200開發體驗】三方庫移植之NAPI開發[1]—Hello OpenHarmony NAPI

    本文通過一個Hello OpenHarmony NAPI樣例講述了NPAI接口開發基礎知識。開發基于最新的OpenHarmony3.2Beta3版本及其對應SDK。標準系統開發為潤和
    發表于 10-06 22:27

    【九聯科技Unionpi Tiger開發試用體驗】基于OpenHarmony NAPI框架控制板LED

    前言: 自己一直是開發也就是南向開發,對于北向應用開發一直是個短板,九聯提供的開發對南北向開發過程提供了樣例,非常感興趣這一部分,如何實現,下面就自己根據樣例實現開發
    發表于 10-28 18:46

    OpenHarmonyNAPI框架介紹

    NAPI OpenAtom OpenHarmony(以下簡稱“OpenHarmony”)應用層基于 javascript 語言開發,而系統框架層則基于 C++語言。它們之間需要一個
    發表于 11-23 15:36

    遙控LED數碼顯示屏控制板的應用制作

    目錄 通用遙控LED數碼顯示屏控制板的應用制作 通用遙控LED數碼顯示屏控制板的結構和功能 主控制板原理 應用示例 遙控大屏幕電子鐘 遙控大
    發表于 04-17 16:46 ?175次下載

    控制板的分類

    本視頻主要詳細介紹了控制板的分類,分別是工業控制板、電機控制板、家電控制板、醫療器械控制板、汽車電子控制
    的頭像 發表于 01-06 10:15 ?7920次閱讀

    控制板是什么

    控制板也是一種,其運用的范圍雖不如電路來的寬泛,但卻比普通的電路來的智能、自動化。簡單的說,能起到控制作用的電路,才可稱為
    的頭像 發表于 05-08 15:14 ?1w次閱讀

    控制板是什么_控制板的作用是什么

    控制板也是一種電路,其運用的范圍雖不如電路來的寬泛,但卻比普通的電路來的智能、自動化。簡單的說,能起到控制作用的電路
    發表于 05-20 17:09 ?1.7w次閱讀

    FANSEA泛海微單片機MCU芯片LED化妝鏡控制板開發

    FS2722 LED化妝鏡控制板1、LED化妝鏡控制板,FS2722 三擋觸摸調光LED臺燈控制板
    發表于 12-08 18:51 ?6次下載
    FANSEA泛海微單片機MCU芯片<b class='flag-5'>LED</b>化妝鏡<b class='flag-5'>控制板</b>開發

    【潤和軟件DAYU200開發體驗】三方庫移植之NAPI開發[1]—Hello OpenHarmony NAPI

    NAPI樣例講述了NPAI接口開發基礎知識。開發基于最新的OpenHarmony3.2Beta3版本及其對應SDK。標準系統開發為潤和軟件dayu200。(附開發體驗完整視頻,詳
    的頭像 發表于 10-12 10:38 ?2654次閱讀
    【潤和軟件DAYU200開發<b class='flag-5'>板</b>體驗】三方庫移植之<b class='flag-5'>NAPI</b>開發[1]—Hello <b class='flag-5'>OpenHarmony</b> <b class='flag-5'>NAPI</b>

    教程分享!OpenHarmonyNAPI框架介紹

    是 C++語言實現的,這些接口可以幫助 C++代碼創建 JS 變量,或訪問 JavaScript 運行環境中的 JS 變量與方法。 OpenHarmony 中的 NAPI OpenAtom OpenHarmony(以下簡稱“
    的頭像 發表于 11-30 12:15 ?2079次閱讀
    教程分享!<b class='flag-5'>OpenHarmony</b>之<b class='flag-5'>NAPI</b><b class='flag-5'>框架</b>介紹

    鴻蒙OpenHarmony NAPI技術-基礎學習

    NAPI(Native API)是OpenHarmony系統中的一套原生模塊擴展開發框架,它基于Node.js N-API規范開發,為開發者提供了JavaScript與C/C++模塊之間相互調用的交互能力??梢栽贜odeJs官網
    的頭像 發表于 01-19 16:57 ?1508次閱讀
    鴻蒙<b class='flag-5'>OpenHarmony</b> <b class='flag-5'>NAPI</b>技術-基礎學習

    OpenHarmonyNAPI 框架介紹

    環境中的 JS 變量與方法。 OpenHarmony 中的 NAPI OpenAtom OpenHarmony(以下簡稱 “OpenHarmony”)應用層基于 javascript
    的頭像 發表于 02-01 17:34 ?1067次閱讀
    <b class='flag-5'>OpenHarmony</b> 之 <b class='flag-5'>NAPI</b> <b class='flag-5'>框架</b>介紹

    【鴻蒙】NAPI 框架生成工具實現流程

    NAPI 框架生成工具 可以根據用戶指定路徑下的 ts(typescript)接口文件一鍵生成 NAPI 框架代碼、業務代碼框架、GN 文件
    的頭像 發表于 02-28 17:00 ?990次閱讀
    【鴻蒙】<b class='flag-5'>NAPI</b> <b class='flag-5'>框架</b>生成工具實現流程