在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

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

3天內(nèi)不再提示

基于OpenHarmony NAPI框架控制板端LED

電子發(fā)燒友開源社區(qū) ? 來源:未知 ? 2022-11-01 09:25 ? 次閱讀

前言: 自己一直是板端開發(fā)也就是南向開發(fā),對于北向應(yīng)用端開發(fā)一直是個短板,九聯(lián)提供的開發(fā)板對南北向開發(fā)過程提供了樣例,非常感興趣這一部分,如何實現(xiàn),下面就自己根據(jù)樣例實現(xiàn)開發(fā)板上使用APP控制板端接口來學(xué)習(xí)。下面根據(jù)Openharmony NAPI框架實現(xiàn)GPIO接口。

一、開發(fā)環(huán)境

  • 搭載OpenHarmony-3.2-Beat2版本的九聯(lián)開發(fā)板。

  • Ubuntu20.04虛擬機。

  • USB_Burning_Tool燒錄工具。

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

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

二、NAPI框架簡介

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

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

三、實現(xiàn)NAPI擴展庫

1、創(chuàng)建NAPI擴展庫

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

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

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

2、新增gpioled_part組件

在子系統(tǒng)napisubsys目錄下創(chuàng)建一個子組件目錄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"
  ]
}

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

3、新增擴展動態(tài)庫

在組件目錄gpioled_part下面新建gpioled_demo目錄,作為NAPI擴展庫的代碼目錄。在gpioled_demo目錄下創(chuàng)建gpioled.cpp和BUILD.gn文件,編寫構(gòu)建配置也即BUILD.gn文件內(nèi)容如下:

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"
}

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

4、將組件添加到產(chǎn)品定義中

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

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

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

四、NAPI接口開發(fā)

模塊注冊

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

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

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

2)定義模塊。

3)注冊模塊,加載動態(tài)庫時自動調(diào)用注冊。

/*
* 模塊定義
 */


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); //接口注冊函數(shù)
 }

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

使用DECLARE_NAPI_FUNCTION("js函數(shù)名", c++實現(xiàn)函數(shù)名)定義接口函數(shù)、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;
}

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

具體實現(xiàn)代碼可去代碼倉庫進行下載學(xué)習(xí)。

修改deviceoardunionmanunionpi_tigerconfiginitarminit.A311D.cfg 文件,在cmds中添加相關(guān)命令

"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"

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

五、Ubuntu下進行編譯NAPI

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

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

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

編譯完成如下圖所示:

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

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

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

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

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

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

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

六、應(yīng)用程序編譯

打開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

設(shè)置自動簽名,如圖所示:

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

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

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

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

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

七、板端安裝應(yīng)用控制LED燈

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

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

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

bm install -p 包名.hap

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

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效果,可以看調(diào)試信息,一口兩用。

提示:本文由電子發(fā)燒友社區(qū)發(fā)布,轉(zhuǎn)載請注明以上來源。如需社區(qū)合作及入群交流,請?zhí)砑游⑿臙EFans0806,或者發(fā)郵箱liuyong@huaqiu.com。

更多熱點文章閱讀

END

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

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


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

文章出處:【微信公眾號:電子發(fā)燒友開源社區(qū)】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • led
    led
    +關(guān)注

    關(guān)注

    242

    文章

    23312

    瀏覽量

    661640
  • NAPIT
    +關(guān)注

    關(guān)注

    0

    文章

    2

    瀏覽量

    2141
  • OpenHarmony
    +關(guān)注

    關(guān)注

    25

    文章

    3729

    瀏覽量

    16405

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

文章出處:【微信號:HarmonyOS_Community,微信公眾號:電子發(fā)燒友開源社區(qū)】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    使用NAPI實現(xiàn)openharmony APP網(wǎng)絡(luò)開發(fā)的接口

    1.設(shè)計背景當前openharmony標準系統(tǒng)通過 JS、eTS 開發(fā)貌似還沒支持網(wǎng)絡(luò)開發(fā)的接口,故JS、eTS方式開發(fā)只能通過NAPI調(diào)用C/C++才能使用到網(wǎng)絡(luò),本次我就使用NAPI開發(fā)
    發(fā)表于 04-02 09:56

    如何通過OpenHarmony系統(tǒng)中集成的ffmpeg庫和NAPI機制,實現(xiàn)更多的多媒體功能?

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

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

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

    【九聯(lián)科技Unionpi Tiger開發(fā)試用體驗】基于OpenHarmony NAPI框架控制板LED

    前言: 自己一直是開發(fā)也就是南向開發(fā),對于北向應(yīng)用開發(fā)一直是個短板,九聯(lián)提供的開發(fā)對南北向開發(fā)過程提供了樣例,非常感興趣這一部分,如何實現(xiàn),下面就自己根據(jù)樣例實現(xiàn)開發(fā)
    發(fā)表于 10-28 18:46

    OpenHarmonyNAPI框架介紹

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

    遙控LED數(shù)碼顯示屏控制板的應(yīng)用制作

    目錄 通用遙控LED數(shù)碼顯示屏控制板的應(yīng)用制作 通用遙控LED數(shù)碼顯示屏控制板的結(jié)構(gòu)和功能 主控制板原理 應(yīng)用示例 遙控大屏幕電子鐘 遙控大
    發(fā)表于 04-17 16:46 ?175次下載

    控制板的分類

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

    控制板是什么

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

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

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

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

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

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

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

    教程分享!OpenHarmonyNAPI框架介紹

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

    鴻蒙OpenHarmony NAPI技術(shù)-基礎(chǔ)學(xué)習(xí)

    NAPI(Native API)是OpenHarmony系統(tǒng)中的一套原生模塊擴展開發(fā)框架,它基于Node.js N-API規(guī)范開發(fā),為開發(fā)者提供了JavaScript與C/C++模塊之間相互調(diào)用的交互能力。可以在NodeJs官網(wǎng)
    的頭像 發(fā)表于 01-19 16:57 ?994次閱讀
    鴻蒙<b class='flag-5'>OpenHarmony</b> <b class='flag-5'>NAPI</b>技術(shù)-基礎(chǔ)學(xué)習(xí)

    OpenHarmonyNAPI 框架介紹

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

    【鴻蒙】NAPI 框架生成工具實現(xiàn)流程

    NAPI 框架生成工具 可以根據(jù)用戶指定路徑下的 ts(typescript)接口文件一鍵生成 NAPI 框架代碼、業(yè)務(wù)代碼框架、GN 文件
    的頭像 發(fā)表于 02-28 17:00 ?703次閱讀
    【鴻蒙】<b class='flag-5'>NAPI</b> <b class='flag-5'>框架</b>生成工具實現(xiàn)流程
    主站蜘蛛池模板: 中文字幕天天干| 亚洲免费mv| 男人的天堂97| 黄色三级视频在线观看| 黄色小视频日本| bt天堂磁力搜索| 羞羞影院男女午夜爽爽影视| 天天狠天天透| 黑粗硬大欧美视频| 涩综合| 色吧色吧色吧网| 在线观看你懂的视频| 亚洲欧美一区二区三区麻豆| 天天色图片| 欧美成人精品一级高清片| 久久久久免费精品国产小说| 国产婷婷综合丁香亚洲欧洲 | 日本a级精品一区二区三区| 男女免费视频| 午色| 免费看很黄很色裸乳视频| 国产乱码一区二区三区四川人| 又长又大又粗又硬3p免费视| 美女喷白浆| 中文字幕视频一区| 亚洲a影院| 美国激情ap毛片| 中文免费观看视频网站| 激情视频综合网| 亚洲欧美视频二区| 午夜色片| 久久精品9| 天天在线看片| 日韩毛片免费线上观看| 最新激情网| 欧美videosex性欧美成人| 999毛片| 插插插天天| 一区二区三区伦理高清| 免费四影虎ww4hu10| 新版天堂中文资源8在线|