精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

[FFH]標準系統HDF平臺驅動(三)——ADC應用實現

系統 OpenHarmony
結合之前學的一些知識,設計一個基于NAPI框架和HDF框架讀取溫度傳感器數據的程序應用。

??想了解更多關于開源的內容,請訪問:??

??51CTO 開源基礎軟件社區??

??https://ost.51cto.com??

前言

前面兩篇文章已經實現了ADC的HDF框架接入,現在已經可以正常調用HDF提供的ADC統一驅動接口進行應用開發。結合之前學的一些知識,設計一個基于NAPI框架和HDF框架讀取溫度傳感器數據的程序應用。

#創作者激勵# [FFH]標準系統HDF平臺驅動(三)——ADC應用實現-開源基礎軟件社區

參考

??平臺驅動使用??標準系統HDF平臺驅動(一)——ADC驅動適配
標準系統HDF平臺驅動(二)——ADC平臺驅動使用

環境

  • OpenHarmony-3.2-Beta5
  • 九聯UnionPi-Tiger開發板
  • Visual Studio Code(版本需1.62.0及以上)
  • USB_Burning_Tool燒錄工具
  • napi_generator工具可執行文件或vs code插件
  • Deveco Studio(API 9 )
  • LM35線性模擬溫度傳感器

概述

開發步驟

一、編譯構建實現

添加子系統。

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

添加組件,打開unionpi_tiger/sample/napi/napisubsys/ohos.build文件,在"parts":中添加下列語句。

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

添加產品定義,打開vendor/unionman/unionpi_tiger/config.json文件,在"subsystems":中添加下列語句。

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

二、NAPI接口設計及NAPI框架生成

編寫ts文件,新建文件@ohos.adc_hdf.d.ts于vendor/unionman/unionpi_tiger/sample/napi/napisubsys/adc_hdf目錄下,聲明應用接口函數get_adc_value,傳入參數為通道號,返回值為ADC采樣值,北向應用通過調用該接口獲取的ADC采樣值計算溫度。

declare namespace adc_hdf {
function get_adc_value(channel: number): number;
}

export default adc_hdf;

生成NAPI框架,使用napi_generator可執行程序或者vscode插件生成NAPI框架。

生成框架路徑也選擇當前路徑,number類型選擇uint32_t。

三、NAPI接口實現

實現adc_hdf.cpp接口,文件生成結束后,我們定義的北向應用接口需要在adc_hdf.cpp中實現,具體代碼如下:

#include "adc_hdf.h"
#include "adc_if.h"
#include "hdf_log.h"
#include <cstdio>

namespace adc_hdf {
bool get_adc_value(NUMBER_TYPE_1& channel, NUMBER_TYPE_2& out)
{
int32_t ret;
DevHandle adcHandle = NULL;
uint32_t read_val = 0;

/* 打開ADC設備 */
adcHandle = AdcOpen(ADC_DEVICE_NUM);
if (adcHandle == NULL) {
printf("%s: Open ADC%u fail!", __func__, ADC_DEVICE_NUM);
return false;
}
/* 讀取ADC采樣值 */
ret = AdcRead(adcHandle, (uint32_t)channel, &read_val);
if (ret != HDF_SUCCESS) {
printf("%s: ADC read fail!:%d", __func__, ret);
AdcClose(adcHandle);
return false;
}
/* 結果返回值 */
out = (NUMBER_TYPE_2)read_val;
printf("ADC read:%d\r\n",read_val);
/* 訪問完畢關閉ADC設備 */
AdcClose(adcHandle);
return true;
}
}

修改BUILD.gn文件,主要添加了ADC平臺驅動所需依賴及頭文件路徑,并且修改目標子系統及所屬部件,編譯后會生成相應的.so共享庫文件,存放在/system/lib/module目錄下。

import("http://build/ohos.gni")

ohos_shared_library("adc_hdf")
{
sources = [
"adc_hdf_middle.cpp",
"adc_hdf.cpp",
"tool_utility.cpp",
]
include_dirs = [
".",
"http://third_party/node/src",
"http://drivers/hdf_core/framework/include/platform"
]
deps=[
"http://foundation/arkui/napi:ace_napi",
"http://drivers/hdf_core/adapter/uhdf2/platform:libhdf_platform"
]
external_deps = [
"hdf_core:libhdf_utils",
"hiviewdfx_hilog_native:libhilog",
]

remove_configs = [ "http://build/config/compiler:no_rtti" ]
cflags=[
]
cflags_cc=[
"-frtti",
]
ldflags = [
]

relative_install_dir = "module"
part_name = "adc_hdf"
subsystem_name = "napisubsys"
}

四、編譯打包燒錄

進入源碼根目錄,執行如下命令進行編譯:

./build.sh --product-name unionpi_tiger

編譯完成后需要打包成可以給開發板燒錄的鏡像,執行一下命令:

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

固件打包完成,生成路徑為編譯根目錄下的out/unionpi_tiger/packages/phone/images/OpenHarmony.img,下載或映射到Windows上進行燒錄。

打開燒錄工具,連接PC與開發板OTG口并接通電源,導入燒錄包進行燒錄。

#創作者激勵# [FFH]標準系統HDF平臺驅動(三)——ADC應用實現-開源基礎軟件社區

或者使用hdc_std工具:

hdc_std shell mount -o remount,rw /
hdc_std file send libadc_hdf.z.so /system/lib/module/

五、NAPI應用實現

新建OpenHarmony工程(stage+ArkTs)。

導入外部接口,adc_hdf為上述定義NAPI接口生成的動態庫文件名字一致,直接導入會報找不到包,忽略即可,prompt為彈窗組件接口。

// @ts-ignore
import adc_hdf from '@ohos.adc_hdf';
import prompt from '@system.prompt'

ADC通道選擇組件(使用Swiper滑塊視圖容器實現)。新建滑塊視圖數據類。

class MyDataSource implements IDataSource {
private list: string[] = []
private listener: DataChangeListener

constructor(list: string[]) {
this.list = list
}

totalCount(): number {
return this.list.length
}

getData(index: number): any {
return this.list[index]
}

registerDataChangeListener(listener: DataChangeListener): void {
this.listener = listener
}

unregisterDataChangeListener() {
}
}

Swiper滑塊視圖容器組件,滑動或點擊可以切換ADC通道,點擊select進行數據采集。

//通道選擇組件實現
@Component
struct channel_chose {
private swiperController: SwiperController = new SwiperController()
private data: MyDataSource = new MyDataSource([])
private channelNum: number = 2
private tmp: number = 1
@Link channel: number
//導入輪播內容
aboutToAppear(): void {
let list = []
for (var i = 1; i <= this.channelNum; i++) {
list.push('ADC_' + i.toString());
}
this.data = new MyDataSource(list)
}

build() {
Column({ space: 5 }) {
Swiper(this.swiperController) {
LazyForEach(this.data, (item: string) => {
Text(item)
.borderRadius(10)
.width('80%')
.height(70)
.fontColor('#ff1a5ea4')
.fontWeight(FontWeight.Bolder)
.textAlign(TextAlign.Center)
.fontSize(30)
}, item => item)
}
.cachedCount(2)
.interval(4000)
.indicator(false)
.duration(1000)
.itemSpace(10)
.vertical(true)
.curve(Curve.Linear)
.onChange((index: number) => {
this.tmp = index + 1
})

Row({ space: 12 }) {
Button('Change').backgroundColor('#ff366fb1').fontSize(20).height(50).width(120)
.onClick(() => {
this.swiperController.showNext()
})
Button('Select').backgroundColor('#ff366fb1').fontSize(20).height(50).width(120)
.onClick(() => {
this.channel = this.tmp;
prompt.showToast({ message: 'Select data From ADC_'+this.channel.toString() })
console.info('Select data From Channel_'+this.channel.toString())
})
}.margin(20)
}.width('50%')
}
}

文本組件顯示溫度值。

@Component
struct show_temperature{
@Link temperature: Number
build(){
Text(this.temperature.toFixed(1)+'°C')
.width('50%')
.fontSize(60)
.fontColor(Color.White)
.fontStyle(FontStyle.Italic)
.textAlign(TextAlign.Center)
.fontWeight(FontWeight.Bold)
}
}

溫度計算及首頁內容組件,程序啟動時開啟定時器,每隔1s獲取一次ADC溫度值。

@Entry
@Component
struct Index {
@State channel: number = 1
@State adc_val: number = 0
@State temperature: number = 0
private timerId: number = -1

//獲取溫度傳感器ADC采樣值并計算溫度
private get_adc_value() {
let get_value = adc_hdf.get_adc_value(this.channel-1);
if (get_value <= 1500) {
this.adc_val = get_value;
this.temperature = (this.adc_val / 4096) * 1.8 * 100;
}
else {
this.temperature = 0
prompt.showToast({
message: "獲取失敗,請檢查連線", // 顯示文本
duration: 1000, // 顯示時長
})
}
}

//程序運行時開啟定時器Interval,每隔一秒調用get_adc_value更新溫度值
aboutToAppear(): void {
this.timerId = setInterval(() => {
this.get_adc_value()
}, 1000)
}
//銷毀定時器
aboutToDisappear() {
if (this.timerId > 0) {
clearTimeout(this.timerId)
this.timerId = -1
}
}

build() {
Row() {
show_temperature({temperature: $temperature})
Column({space:0}){
channel_chose({channel:$channel})
}.height('80%')
}.height('100%')
.backgroundImage($r('app.media.bg')).backgroundImageSize(ImageSize.Cover)
}
}

應用簽名。

安裝應用到開發板。

結果演示

https://ost.51cto.com/show/22186

文章相關附件可以點擊下面的原文鏈接前往下載:

https://ost.51cto.com/resource/2661

??想了解更多關于開源的內容,請訪問:??

??51CTO 開源基礎軟件社區??

??https://ost.51cto.com??

責任編輯:jianghua 來源: 51CTO 開源基礎軟件社區
相關推薦

2023-03-20 16:21:26

ADC數字轉換器

2023-03-21 18:06:49

ADC數字轉換器

2022-09-13 16:10:15

鴻蒙操作系統

2023-09-14 15:49:42

PWM鴻蒙

2021-12-15 10:02:25

鴻蒙HarmonyOS應用

2022-10-12 15:14:08

開機動畫鴻蒙

2023-09-06 15:27:22

ADC鴻蒙

2021-11-30 14:52:41

鴻蒙HarmonyOS應用

2022-09-15 14:56:12

GDB調試鴻蒙

2022-04-02 20:45:04

Hi3516開發板操作系統鴻蒙

2022-12-28 09:30:07

鴻聯系統開發

2022-08-08 19:35:37

HDF驅動開發鴻蒙

2021-11-08 07:19:45

鴻蒙HarmonyOS應用

2021-09-16 15:04:28

鴻蒙HarmonyOS應用

2023-09-13 15:33:57

I2C鴻蒙

2022-06-10 14:37:24

鴻蒙操作系統

2021-01-21 13:27:37

鴻蒙HarmonyOS應用開發

2022-09-06 15:46:52

speexdsp鴻蒙

2022-09-16 15:01:37

操作系統技術鴻蒙

2022-09-07 15:08:58

操作系統鴻蒙
點贊
收藏

51CTO技術棧公眾號

亚洲精品视频中文字幕| 亚洲图片激情小说| 日韩美女免费观看| 美女三级黄色片| 日韩精品一级| 欧美日韩亚洲激情| 日韩一区二区电影在线观看| 99热这里只有精品66| 国产日韩亚洲| 久久精品男人天堂| av无码av天天av天天爽| 视频91a欧美| 精品国产1区2区| 亚洲在线色站| 视频二区在线| 日本女人一区二区三区| 欧美激情亚洲另类| 欧美黄色一级生活片| 1313精品午夜理伦电影| 欧美色网站导航| 黄页免费在线观看视频| 国内外激情在线| 久久精品亚洲麻豆av一区二区| 久久免费精品国产久精品久久久久| 亚洲网在线观看| 免费高清视频在线观看| 色猫猫成人app| 午夜在线电影亚洲一区| 爱爱爱视频网站| 国产在线视频你懂得| www.日本不卡| 97超级在线观看免费高清完整版电视剧| 天天爽夜夜爽人人爽| 激情综合亚洲| 欧美另类高清videos| 四虎影视1304t| 你微笑时很美电视剧整集高清不卡| 日韩午夜精品电影| 久久久九九九热| 久久福利在线| 欧美丝袜丝交足nylons| 日本三级免费观看| 国产高清自产拍av在线| 亚洲精品免费在线观看| 国产精品久久成人免费观看| 波多野结衣在线网站| 91蜜桃视频在线| 好吊色欧美一区二区三区四区| 国产成人三级一区二区在线观看一| 日本欧美一区二区| 国产精品视频自在线| 亚洲永久精品一区| 视频一区欧美日韩| 日韩av电影在线播放| 美日韩一二三区| 国产日韩欧美三级| 欧美亚洲另类制服自拍| 欧美一级视频免费观看| 在线电影一区| 7777精品视频| 亚洲自拍一区在线观看| 久久福利一区| 国产精品久久久久久久久粉嫩av | 国产精品国产三级国产三级人妇| 欧美男人的天堂| 日韩二区三区| 中文字幕精品综合| 中文字幕一区二区中文字幕| 精品自拍一区| 亚洲永久免费av| 无码中文字幕色专区| 欧美色网一区| 欧美日韩卡一卡二| 在线观看av免费观看| 亚洲一区二区三区在线免费| 亚洲国产成人精品一区二区| 香蕉网在线播放| 色爱综合网欧美| 欧美理论电影在线观看| 久久久久久久久影院| 青青草伊人久久| 91视频8mav| 天天摸夜夜添狠狠添婷婷 | 青青草自拍偷拍| 天天射综合网视频| 97高清免费视频| 日韩黄色片网站| 韩国v欧美v日本v亚洲v| 国产伦精品一区二区三区免| 美国成人毛片| 亚洲精品高清在线| 看av免费毛片手机播放| 六九午夜精品视频| 亚洲电影免费观看高清完整版在线观看| 在线观看av中文字幕| 久久蜜桃av| 性欧美在线看片a免费观看| 91丨九色丨海角社区| 国产精品资源在线看| 蜜桃传媒视频麻豆第一区免费观看| 日本中文字幕在线观看| 亚洲777理论| 老司机午夜性大片| 亚洲黄页网站| 精品少妇一区二区30p| 麻豆成人免费视频| 国产成人鲁色资源国产91色综| 欧美黑人xxxxx| 天天色天天射天天综合网| 色偷偷成人一区二区三区91 | 中文字幕+乱码+中文| 成人精品国产一区二区4080| 亚洲精品tv久久久久久久久| 97超碰在线免费| 欧美一区二区在线播放| 在线不卡av电影| 亚洲激情亚洲| 91人成网站www| 97视频在线观看网站| 欧美日韩国产精品一区二区三区四区 | 无码人妻丰满熟妇区毛片| 视频在线一区| 色哟哟入口国产精品| 69视频免费看| 99国产精品国产精品久久| 美女av免费观看| 日韩欧乱色一区二区三区在线 | 黄视频网站在线| 在线观看一区二区精品视频| 亚洲图片综合网| 精品69视频一区二区三区Q| 91免费视频国产| 男人影院在线观看| 欧美日韩三级在线| 谁有免费的黄色网址| 国产一区二区三区久久| 国产精品一区二区三区不卡 | 色综合久久中文综合久久97| 深田咏美中文字幕| 欧美深夜福利| 成人一区二区在线| 国产人妻人伦精品1国产丝袜| 亚州欧美在线| 最新的欧美黄色| 黄色网址中文字幕| 久久久久久久久久看片| 成人在线看视频| 亚洲免费成人av在线| 欧美有码在线观看视频| 婷婷色在线观看| 精品欧美激情精品一区| 日本黄色片在线播放| 国产精品日韩精品欧美精品| 精品一区二区三区视频日产| 三妻四妾的电影电视剧在线观看| 亚洲国产欧美自拍| 一级片视频在线观看| 国产亚洲综合在线| 天天插天天操天天射| 香蕉精品视频在线观看| 92国产精品久久久久首页| a级在线观看| 精品精品欲导航| 久久视频免费在线观看| 99精品国产热久久91蜜凸| 2022亚洲天堂| 成人免费在线播放| 成人在线国产精品| 欧美草逼视频| 亚洲免费一在线| 亚洲综合网av| 一区二区三区欧美视频| 性久久久久久久久久久| 玖玖国产精品视频| 手机成人av在线| 一区二区三区在线免费看| 538国产精品一区二区免费视频| 男女污污视频在线观看| 欧美美女一区二区在线观看| 国产十六处破外女视频| 91丨porny丨国产| 亚洲国产成人va在线观看麻豆| 欧美1区免费| 久久影院理伦片| 午夜不卡一区| 91超碰中文字幕久久精品| 成年人视频在线观看免费| 欧美一级理论性理论a| 国产午夜性春猛交ⅹxxx| 国产精品污污网站在线观看| 国产欧美视频一区| 日本免费新一区视频| 激情成人开心网| gogogo高清在线观看一区二区| 亚洲资源在线看| 日韩pacopacomama| 欧美放荡办公室videos4k| 飘雪影视在线观看免费观看| 91精品视频网| 欧美一区二区三区网站| 一区二区在线看| 黄色片网站免费| 成人免费看黄yyy456| 久久久久久久久久一区二区| 一区二区三区四区五区精品视频 | 国产v亚洲v天堂无码| 免费观看成人性生生活片| 欧美激情欧美狂野欧美精品| av在线第一页| 精品视频在线播放色网色视频| 国产普通话bbwbbwbbw| 一本大道久久a久久精品综合| 青草影院在线观看| 国产精品视频在线看| 亚洲av无码一区二区三区观看| 国产乱码精品一区二区三区忘忧草| 1024精品视频| 亚洲国产高清一区| 日本免费黄色小视频| 成人精品中文字幕| 欧美成人蜜桃| 欧美精品中文| 国产二区不卡| 视频二区欧美| 亚洲综合一区二区不卡| 欧美国产视频| 国产精品免费观看在线| 综合久久2023| 668精品在线视频| sm捆绑调教国产免费网站在线观看| 久久精品免费电影| 毛片av在线| 日韩中文字幕视频在线观看| 东凛在线观看| 在线不卡国产精品| 福利片在线看| 在线精品播放av| av在线天堂| 一区二区国产精品视频| 精品一二三区视频| 亚洲男人av电影| 蜜桃视频在线观看网站| 日韩久久精品电影| 色综合888| 亚洲欧洲一区二区三区在线观看| 日韩在线视频免费| 亚洲激情免费观看| 欧美一区二区少妇| 亚洲网在线观看| 川上优的av在线一区二区| 国产一区二区三区久久精品 | 国产精品久久久久久久久晋中 | 在线 亚洲欧美在线综合一区| 国内自拍中文字幕| 精品1区2区3区4区| 日本毛片在线免费观看| 日韩精品视频网站| 亚洲一级片免费| 黑人巨大精品欧美黑白配亚洲| 99精品视频国产| 国产精品18久久久久| 欧美久久久久久久久久久| 成人国产一区二区三区精品| 最近日本中文字幕| 久久精品在线观看| 国产三级aaa| 一区二区三区中文字幕精品精品 | 精品91久久久久| 无码精品a∨在线观看中文| 久久一区中文字幕| 日本人69视频| 成人av电影在线播放| 粉嫩av蜜桃av蜜臀av| 国产欧美精品一区二区三区四区 | 91香蕉国产在线观看| av日韩在线播放| 欧洲久久久久久| 亚洲第一天堂| 国产精品333| 捆绑调教一区二区三区| 亚洲少妇一区二区| 久久久久久久综合日本| 在线看的片片片免费| 午夜精彩视频在线观看不卡| 日韩黄色片网站| 日韩欧美国产成人一区二区| 日本a一级在线免费播放| 久久久亚洲人| 国产精品区一区二区三| 久久久久久久网站| 美女一区二区三区视频| 国产女人在线视频| 亚洲欧美日韩网| 久久亚洲天堂| 欧美性受xxxx黑人猛交| 欧美一区二区三区婷婷| 国产区欧美区日韩区| 色婷婷一区二区三区| 国产免费一区二区视频| 日韩电影免费一区| 亚洲精品乱码久久久久久蜜桃图片| 91理论电影在线观看| 国产1区2区3区4区| 在线精品视频一区二区| 成人小说亚洲一区二区三区| 这里只有精品丝袜| 99thz桃花论族在线播放| 91精品国产自产在线观看永久| 欧美jizz19性欧美| 黄色a级在线观看| 日韩av一区二区在线影视| 国产视频精品视频| 亚洲色图丝袜美腿| 国产精品免费无遮挡无码永久视频| 欧美mv日韩mv国产网站| 乱人伦中文视频在线| 国产精品久久久久久久久免费| 国产极品模特精品一二| 日本黄xxxxxxxxx100| 日韩成人午夜电影| 我和岳m愉情xxxⅹ视频| 亚洲成a人在线观看| 精品国产伦一区二区三| 中文字幕日韩有码| 日韩视频网站在线观看| 久久精品日产第一区二区三区乱码 | 日韩二区三区四区| 精品无码国产一区二区三区51安| 亚洲欧美另类小说| 亚洲综合精品国产一区二区三区 | 亚洲第一成人网站| 五月天国产精品| 亚洲精品久久久久久无码色欲四季| 日韩亚洲精品电影| 99久久亚洲国产日韩美女| 欧美亚洲丝袜| 亚洲免费中文| 日本少妇色视频| 日韩欧美成人网| 日本私人网站在线观看| 91国内精品久久| 国内精品麻豆美女在线播放视频| a级黄色片免费| 国产999精品久久久久久| 美国黄色小视频| 日韩三级免费观看| 人人澡人人添人人爽一区二区| 91视频国产精品| 午夜久久久久| 亚洲一区二区三区黄色| 精品久久久久久久久中文字幕| 欧日韩在线视频| 7777免费精品视频| 红桃成人av在线播放| 三级在线视频观看| 国产精品高潮久久久久无| 国产精品老熟女视频一区二区| 精品国产网站地址| 天堂av一区| 欧美色图色综合| 国产网红主播福利一区二区| 中文字幕精品一区二区精| 精品国内自产拍在线观看| 精品一区二区三区在线观看视频| 日韩精品一区二区在线视频 | 蜜臀国产一区二区三区在线播放 | 爱久久·www| 成人美女免费网站视频| 欧美日韩一视频区二区| 日韩少妇一区二区| 91九色02白丝porn| 黄色网址在线免费观看| 国产日韩精品推荐| 久久亚洲二区| 黄色录像免费观看| 亚洲国产成人av在线| 韩国三级一区| 国产精品久久成人免费观看| 成人av在线播放网址| 久草视频一区二区| 欧美成人精品在线| 全国精品免费看| 日韩av卡一卡二| 午夜免费久久看| 3p在线观看| 成人在线看片| 日本欧美一区二区三区| 国产亚洲第一页| 国产一区二区三区在线播放免费观看| 国产一区二区三区亚洲综合| 人妻av中文系列| 亚洲日本在线视频观看| 性xxxx搡xxxxx搡欧美| 成人免费看片视频| 久久国产免费| 日本三级午夜理伦三级三| 色噜噜国产精品视频一区二区| 国产精品中文字幕制服诱惑| 免费看国产黄色片| 欧美日韩黄色大片|