色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

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

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

3天內不再提示

觸覺智能RK3568使用體驗:NAPI 類對象導出及其生命周期管理(上)

電子發燒友開源社區 ? 來源:未知 ? 2023-02-17 09:10 ? 次閱讀

寫在開頭:

OpenHarmony 中的 N-API組件定義了由ArkTS (JS/ETS)語言編寫的代碼和 native 代碼(使用 C/C++ 編寫)交互的方式,由 Node.js Node-API 框架擴展而來。

什么是Node.js Node-API 框架


Node.js Node-API為開發者提供了一套C/C++ API用于開發Node.js的Native擴展模塊。從Node.js 8.0.0開始,Node-API以實驗性特性作為Node.js本身的一部分被引入,并且從Node.js 10.0.0開始正式全面支持Node-API。

本文以OpenHarmony 3.2beta3源碼中的node.js三方庫為例,從third_party/node/README.OpenSource中可得知3.2beta3移植的node版本為14.19.1,因此可參考的Node.js N-API鏈接為14.19.1版本,如下:https://nodejs.org/docs/latest-v14.x/api/n-api.html

  • 接口名方面,OpenHarmony 中的 N-API 組件提供的接口名與三方庫Node.js一致,目前支持部分接口,詳情見libnapi.ndk.json文件。

本篇是該系列文章的第5篇上半部分。有離北況歸的地方就一定會有樣例源碼,本文提供了一個IDE開發的NAPI工程用來學習本篇知識點,下半部分將對源碼進行解析。通過本文您將熟悉:

  • NAPI 導出類對象

  • NAPI 對象生命周期管理

1.NAPI 類對象導出

  • OpenHarmony NAPI提供了一種“包裝”C ++類和實例的方法,以便JS應用可以調用類的構造函數和方法。

  • Node.js Node-API中關于導出類對象的內容,參考鏈接 : https://nodejs.org/docs/latest-v14.x/api/n-api.html#n_api_object_wrap

1.1. NAPI導出類對象流程

  • 通過napi_define_class定義一個JS類

    • 它包含了與 C++ 類對應的構造函數、靜態屬性、方法、實例屬性和方法。

  • 通過napi_wrap將 C++ 實例綁定在 JS對象中

    • 當 JS代碼調用構造函數時,構造函數回調會使用napi_wrap將一個新的 C++ 實例綁定在 JS對象中,然后返回綁定的C++ 實例。

  • 通過napi_unwrap獲取作為調用目標的C++ 實例

    • 當 JS調用C++ 類 的方法或屬性時,會調用相應的napi_callback C++ 函數。對于實例回調,napi_unwrap獲取作為調用目標的 C++ 實例 。

這里的napi_callback C++ 函數是指被 Node.js Node-API調用的C++ 函數

348998de-ae5f-11ed-bfe3-dac502259ad0.png

2. NAPI 對象生命周期

34a90ed0-ae5f-11ed-bfe3-dac502259ad0.png

以下是Node-API 中關于對象生命周期的解釋:

  • 程序的生命周期是指程序從啟動,運行到結束的整個過程。

  • NAPI 對象的生命周期代表著從對象創建到釋放的整個過程,如下圖所示:

    • 在ArkTS應用啟動時會加載NAPI模塊,而在NAPI模塊加載過程中會創建一個對象A提供給應用使用,在應用退出或者主動釋放A對象前,A對象必須一直保持"活躍"狀態。從A對象創建到釋放的整個過程也代表著A對象的生命周期。

    • 當調用Node-API時,底層虛擬機在堆中對象的句柄可能以napi_values的形式返回。這些句柄必須保持對象“活動”,直到本地代碼不再需要它們。參考鏈接//nodejs.org/docs/latest-v14.x/api/n-api.html#n_api_object_lifetime_management

句柄是一個標識符,是用來標識對象的。

NAPI 環境生命周期API的內容參考鏈接如下:https://nodejs.org/docs/latest-v14.x/api/n-api.html#n_api_environment_life_cycle_apis

3. 關于本文提供的樣例工程

本文提供了一個IDE開發的NAPI工程用來學習NAPI 類對象導出對象生命周期管理

  • 筆者運行環境:

    • 觸覺智能 IDO-EVB3568-V1 開發板

    • OpenHarmony 3.2Beta2

    • DevEco Studio 3.1.0.100

3.1 觸覺智能 IDO-EVB3568-V1 開發板

觸覺智能的這個rk3568開發板是筆者去年8月份網上沖浪購買的,4GB+32GB開發板 + 一塊10.1英寸的MIPI屏幕 + 電源適配器+usb調試器(搞開源鴻蒙用不上) 一共 739米 。筆者認為是性價比無敵的開源鴻蒙標準系統開發板。

34c20d4a-ae5f-11ed-bfe3-dac502259ad0.png

觸覺智能一直在給 IDO-EVB3568-V1 開發板適配最新的OpenHarmony版本。例如2月1號發布Beta5,作為消費者的筆者立馬收到了適配了IDO-EVB3568-V1的Beta5鏡像包,有MIPI版本的和HDMI版本。購買后的體驗是非常不錯的。

35053228-ae5f-11ed-bfe3-dac502259ad0.jpg
351a2afc-ae5f-11ed-bfe3-dac502259ad0.jpg

3.2. 樣例工程運行

1、樣例安裝運行后,觸覺智能 IDO-EVB3568-V1開發板顯示如下

354436a8-ae5f-11ed-bfe3-dac502259ad0.png

以下圖片通過OpenHarmony預置的屏幕截圖功能獲取。截圖文件放在下面這四個文件夾下
/data/service/el2/100/hmdfs/account/files/Pictures/Screenshots/
/storage/media/100/local/files/Pictures/Screenshots/
/mnt/hmdfs/100/account/device_view/local/files/Pictures/Screenshots/
/mnt/hmdfs/100/account/merge_view/files/Pictures/Screenshots/
然后通過hdc工具導出到PC端。

2、再點擊中間的"導出對象"后,PC端DevEco Studio工具的Log窗口查看到對應的調試信息

系統的調試信息也在Hilog窗口顯示,且信息量大,不方便查看自己的調試信息,可以在log窗口設置過濾信息,讓窗口只顯示我們過濾關鍵字NapiTest的信息。

356c5cfa-ae5f-11ed-bfe3-dac502259ad0.jpg

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

調試信息如下:

08-05 11:09:03.413 1802-1802/com.example.objectwraptest I A0fefe/JsApp: [NapiTest] Test NAPI 2 + 3 = 5
08-05 11:09:03.414 1802-1802/com.example.objectwraptest I A0fefe/JsApp: [NapiTest] Test NAPI add(2, 3) 1
08-05 1103.414 1802-1802/com.example.objectwraptest I A0fefe/JsApp: [NapiTest] Test NAPI add(2, 3) 2
08-05 1103.415 1802-1802/com.example.objectwraptest I A0fefe/JsApp: [NapiTest] Test NAPI add(2, 3) 3
08-05 1103.415 1802-1802/com.example.objectwraptest I A0fefe/JsApp: [NapiTest]Test NAPI 2+3 = 5
08-05 11:09:52.123 1802-1802/com.example.objectwraptest I A0fefe/JsApp: [NapiTest] Test NAPI 2 + 3 = 5
08-05 11:09:52.123 1802-1802/com.example.objectwraptest I A0fefe/JsApp: [NapiTest] Test NAPI add(0, 0) 1
08-05 1152.123 1802-1802/com.example.objectwraptest I A0fefe/JsApp: [NapiTest] Test NAPI add(0, 0) 2
08-05 1152.124 1802-1802/com.example.objectwraptest I A0fefe/JsApp: [NapiTest] Test NAPI add(0, 0) 3
08-05 1152.124 1802-1802/com.example.objectwraptest I A0fefe/JsApp: [NapiTest]Test NAPI 4+5 = 0

	

3、再在index.ets中取消下面這四行代碼的注釋。

35952a54-ae5f-11ed-bfe3-dac502259ad0.jpg

Hilog窗口打印調試信息如下:

35bc42c4-ae5f-11ed-bfe3-dac502259ad0.png

08-05 09:03:38.156 1911-1911/com.example.objectwraptest I A0fefe/JsApp: [NapiTest] Test NAPI 2 + 3 = 5
08-05 09:03:38.157 1911-1911/com.example.objectwraptest I A0fefe/JsApp: [NapiTest]Test NAPI error{}
08-05 09:03:38.157 1911-1911/com.example.objectwraptest I A0fefe/JsApp: [NapiTest]Test NAPI hello NapiTest = undefined

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

以上HiLog窗口打印信息中的com.example.objectwraptest是樣例工程的包名,在樣例應用工程AppScopeapp.json5文件中定義。AppScopeapp.json5中還可以定義樣例應用hap的其他屬性。

entrysrcmainmodule.json5中startWindowBackground字段可以查看應用開啟時過渡動畫的顏色,但是在指向的同級目錄下具體的文件中設置


35e9e10c-ae5f-11ed-bfe3-dac502259ad0.jpg

    • 在樣例應用工程entrysrcmain esourcesaseelementstring.json中可以查看 應用名稱

    • 樣例圖標修改entrysrcmain esourcesasemediaicon.png,大小是114*114像素

知識點附送

OpenHarmony截屏命令:

# 進入sdk版本號	oolchain輸入cmd打開命令行
hdc_std shell
snapshot_display
# 截圖默認保存在/data/目錄下
exit
hdc_std file recv OpenHarmony設備端截圖文件路徑 PC端路徑

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

36056c9c-ae5f-11ed-bfe3-dac502259ad0.png


更多熱點文章閱讀
  • 重磅官宣,OpenHarmony技術峰會來啦
  • 基于小凌派RK2206的智能垃圾桶設計
  • 開源硬件系列05期:HDLgen—IC設計自動化利器
  • ArkUI新能力,助力應用開發更便捷
  • 30張開放原子開源基金會OpenHarmony技術峰會門票免費送!

提示:本文由電子發燒友論壇發布,轉載請注明來源。如需社區合作及入群交流,請添加微信EEFans0806,或者發郵箱liuyong@huaqiu.com。


原文標題:觸覺智能RK3568使用體驗:NAPI 類對象導出及其生命周期管理(上)

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


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

    關注

    33

    文章

    556

    瀏覽量

    33066
  • 開源社區
    +關注

    關注

    0

    文章

    94

    瀏覽量

    471

原文標題:觸覺智能RK3568使用體驗:NAPI 類對象導出及其生命周期管理(上)

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

收藏 人收藏

    評論

    相關推薦

    Linux系統更換開機logo方法教程,觸覺智能RK3562開發板演示

    本文介紹Linux系統更換開機logo方法教程,通用RK3566、RK3568、RK3588、RK3576等開發板,觸覺
    的頭像 發表于 01-06 10:53 ?202次閱讀
    Linux系統更換開機logo方法教程,<b class='flag-5'>觸覺</b><b class='flag-5'>智能</b><b class='flag-5'>RK</b>3562開發板演示

    RK3568的顯示問題及其解決方法

    地使用RK3568。本文主要講解RK3568顯示過程中常見問題分析與解決思路,主要對RK3568在顯示過程中遇到的一系列問題及其解決方法進行了詳細說明,包括觸摸功能配置、HDMI屏幕無
    發表于 12-16 09:14

    RK3568內置MCU開發介紹之一

    本文介紹RK3568內置的MCU的開發流程,首先介紹MCU程序的構建方法,然后介紹MCU核心與ARM CORTEX A55 AP核心之間的mailbox通信。 RK3568內置有4*cortex
    的頭像 發表于 12-01 16:09 ?651次閱讀
    <b class='flag-5'>RK3568</b>內置MCU開發介紹之一

    Android11修改攝像頭前后置方法,觸覺智能RK3568開發板演示

    本文介紹在Android11系統下,修改攝像頭前后置屬性的方法。使用觸覺智能EVB3568鴻蒙開發板演示,搭載瑞芯微RK3568,四核A55處理器,主頻2.0Ghz,1T算力NPU;支
    的頭像 發表于 11-28 15:25 ?71次閱讀
    Android11修改攝像頭前后置方法,<b class='flag-5'>觸覺</b><b class='flag-5'>智能</b><b class='flag-5'>RK3568</b>開發板演示

    什么是PLM產品生命周期管理系統?

    在當今競爭激烈的制造業環境中,企業不僅要關注產品的設計和生產,還需要對產品的整個生命周期進行全面管理。這包括了從產品概念構思、設計開發、生產制造、銷售分發,到最終報廢處理的每一個環節。為了高效、系統
    的頭像 發表于 11-23 16:14 ?303次閱讀
    什么是PLM產品<b class='flag-5'>生命周期</b><b class='flag-5'>管理</b>系統?

    瑞芯微RK3568 USB驅動

    瑞芯微RK3568 USB驅動程序
    發表于 11-11 14:18 ?2次下載

    RK3568燒錄工具

    RK3568 燒錄工具
    發表于 11-11 14:16 ?5次下載

    OpenHarmony4.1藍牙芯片如何適配?觸覺智能RK3568主板SBC3568演示

    當打開藍牙后沒有反應時,需要排查藍牙節點是否對應、固件是否加載成功,本文介紹開源鴻蒙OpenHarmony4.1系統下適配藍牙的方法,觸覺智能SBC3568主板演示,搭載了瑞芯微RK3568
    的頭像 發表于 11-08 10:11 ?421次閱讀
    OpenHarmony4.1藍牙芯片如何適配?<b class='flag-5'>觸覺</b><b class='flag-5'>智能</b><b class='flag-5'>RK3568</b>主板SBC<b class='flag-5'>3568</b>演示

    瑞芯微RK3568開發板Linux編譯報錯404怎么辦?觸覺智能教你輕松解決

    本文介紹瑞芯微RK3568主板/開發板SDK編譯流程和編譯報錯404的解決方法,使用觸覺智能EVB3568鴻蒙開發板演示,具有豐富的視頻輸入輸出接口(HDMI/eDP/MIPI/LVD
    的頭像 發表于 11-05 11:02 ?422次閱讀
    瑞芯微<b class='flag-5'>RK3568</b>開發板Linux編譯報錯404怎么辦?<b class='flag-5'>觸覺</b><b class='flag-5'>智能</b>教你輕松解決

    瑞芯微RK3568鴻蒙開發板OpenHarmony系統修改cfg文件權限方法

    本文適用于OpenHarmony開源鴻蒙系統修改cfg文件權限方法,深圳觸覺智能研發的RK3566、RK3568、RK3588等開發板、主板
    的頭像 發表于 09-11 13:26 ?1038次閱讀
    瑞芯微<b class='flag-5'>RK3568</b>鴻蒙開發板OpenHarmony系統修改cfg文件權限方法

    RK3568 賦能數字廣告,推動智能化新時代

    RK3568 賦能數字廣告,推動智能化新時代
    的頭像 發表于 08-05 14:42 ?391次閱讀
    <b class='flag-5'>RK3568</b> 賦能數字廣告,推動<b class='flag-5'>智能</b>化新時代

    RK3568核心板橋梁監測設備接口應用

    RK3568核心板橋梁監測設備接口應用-迅為電子
    的頭像 發表于 07-24 15:18 ?393次閱讀
    <b class='flag-5'>RK3568</b>核心板橋梁監測設備接口應用

    RK3568開發板支持AMP雙系統

    RK3568開發板支持AMP雙系統
    的頭像 發表于 06-04 15:33 ?787次閱讀
    <b class='flag-5'>RK3568</b>開發板支持AMP雙系統

    基于HD-RK3568-CORE設計的HD-RK3568-OPS主板新!

    HD-RK3568-OPS主板基于HD-RK3568-CORE 工業級核心板設計,支持標準OPS接口,具有即插即用、操作簡單的特點,適用于數字標牌、自助終端、教育一體機等應用場景。
    的頭像 發表于 04-19 18:08 ?1100次閱讀
    基于HD-<b class='flag-5'>RK3568</b>-CORE設計的HD-<b class='flag-5'>RK3568</b>-OPS主板<b class='flag-5'>上</b>新!

    支持標準OPS接口,通用型RK3568工控板新!

    HD-RK3568-OPS主板基于HD-RK3568-CORE 工業級核心板設計,搭載1.8GHz主頻的高性能ARM處理器,適用于工業現場應用需求。
    的頭像 發表于 04-17 11:32 ?670次閱讀
    支持標準OPS接口,通用型<b class='flag-5'>RK3568</b>工控板<b class='flag-5'>上</b>新!
    主站蜘蛛池模板: 国产三级影院| 久久精品国产亚洲AV热无遮挡| 鸡鸡插屁股| 午夜国产免费视频亚洲| 成人网18免费韩国| 日本精品卡一卡2卡3卡四卡三卡| 97超碰97资源在线观看| 蜜芽在线影片| 99热这里只有精品88| 女性露出奶头流出精子| 69人体阴展网| 男人j进女人j一进一出| 99re6久久热在线播放| 欧美午夜免费观看福利片| xxx免费观看| 少妇的肉体AA片免费| 国产成人一区二区三中文| 无人在线观看免费高清视频播放| 国产精品一区二区AV97| 亚洲精品123区| 久艾草在线精品视频在线观看| 一一本之道高清手机在线观看 | 伊人国产在线观看| 久久伊人天堂视频网| 4388成人| 日韩成人在线视频| 国产欧美在线亚洲一区刘亦菲| 亚洲成人一区二区| 久久精品无码人妻无码AV蜜臀 | 免费光看午夜请高视频| 99视频免费在线| 日韩一本道无码v| 国产久久精品热99看| 亚洲一区二区三区91| 尿孔 调教 扩张| 高清撒尿hdtube撒尿| 午夜伦理 第1页| 久久久精品久久久久特色影视 | 欧美在线激情| 国产免费高清mv视频在线观看| 亚洲野狼综合网站|