国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

[FFH]標(biāo)準(zhǔn)系統(tǒng)HDF平臺(tái)驅(qū)動(dòng)(三)——ADC應(yīng)用實(shí)現(xiàn)

系統(tǒng) OpenHarmony
結(jié)合之前學(xué)的一些知識(shí),設(shè)計(jì)一個(gè)基于NAPI框架和HDF框架讀取溫度傳感器數(shù)據(jù)的程序應(yīng)用。

??想了解更多關(guān)于開(kāi)源的內(nèi)容,請(qǐng)?jiān)L問(wèn):??

??51CTO 開(kāi)源基礎(chǔ)軟件社區(qū)??

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

前言

前面兩篇文章已經(jīng)實(shí)現(xiàn)了ADC的HDF框架接入,現(xiàn)在已經(jīng)可以正常調(diào)用HDF提供的ADC統(tǒng)一驅(qū)動(dòng)接口進(jìn)行應(yīng)用開(kāi)發(fā)。結(jié)合之前學(xué)的一些知識(shí),設(shè)計(jì)一個(gè)基于NAPI框架和HDF框架讀取溫度傳感器數(shù)據(jù)的程序應(yīng)用。

#創(chuàng)作者激勵(lì)# [FFH]標(biāo)準(zhǔn)系統(tǒng)HDF平臺(tái)驅(qū)動(dòng)(三)——ADC應(yīng)用實(shí)現(xiàn)-開(kāi)源基礎(chǔ)軟件社區(qū)

參考

??平臺(tái)驅(qū)動(dòng)使用??標(biāo)準(zhǔn)系統(tǒng)HDF平臺(tái)驅(qū)動(dòng)(一)——ADC驅(qū)動(dòng)適配
標(biāo)準(zhǔn)系統(tǒng)HDF平臺(tái)驅(qū)動(dòng)(二)——ADC平臺(tái)驅(qū)動(dòng)使用

環(huán)境

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

概述

開(kāi)發(fā)步驟

一、編譯構(gòu)建實(shí)現(xiàn)

添加子系統(tǒng)。

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

添加組件,打開(kāi)unionpi_tiger/sample/napi/napisubsys/ohos.build文件,在"parts":中添加下列語(yǔ)句。

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

添加產(chǎn)品定義,打開(kāi)vendor/unionman/unionpi_tiger/config.json文件,在"subsystems":中添加下列語(yǔ)句。

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

二、NAPI接口設(shè)計(jì)及NAPI框架生成

編寫(xiě)ts文件,新建文件@ohos.adc_hdf.d.ts于vendor/unionman/unionpi_tiger/sample/napi/napisubsys/adc_hdf目錄下,聲明應(yīng)用接口函數(shù)get_adc_value,傳入?yún)?shù)為通道號(hào),返回值為ADC采樣值,北向應(yīng)用通過(guò)調(diào)用該接口獲取的ADC采樣值計(jì)算溫度。

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

export default adc_hdf;

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

生成框架路徑也選擇當(dāng)前路徑,number類型選擇uint32_t。

三、NAPI接口實(shí)現(xiàn)

實(shí)現(xiàn)adc_hdf.cpp接口,文件生成結(jié)束后,我們定義的北向應(yīng)用接口需要在adc_hdf.cpp中實(shí)現(xiàn),具體代碼如下:

#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;

/* 打開(kāi)ADC設(shè)備 */
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;
}
/* 結(jié)果返回值 */
out = (NUMBER_TYPE_2)read_val;
printf("ADC read:%d\r\n",read_val);
/* 訪問(wèn)完畢關(guān)閉ADC設(shè)備 */
AdcClose(adcHandle);
return true;
}
}

修改BUILD.gn文件,主要添加了ADC平臺(tái)驅(qū)動(dòng)所需依賴及頭文件路徑,并且修改目標(biāo)子系統(tǒng)及所屬部件,編譯后會(huì)生成相應(yīng)的.so共享庫(kù)文件,存放在/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"
}

四、編譯打包燒錄

進(jìn)入源碼根目錄,執(zhí)行如下命令進(jìn)行編譯:

./build.sh --product-name unionpi_tiger

編譯完成后需要打包成可以給開(kāi)發(fā)板燒錄的鏡像,執(zhí)行一下命令:

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

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

打開(kāi)燒錄工具,連接PC與開(kāi)發(fā)板OTG口并接通電源,導(dǎo)入燒錄包進(jìn)行燒錄。

#創(chuàng)作者激勵(lì)# [FFH]標(biāo)準(zhǔn)系統(tǒng)HDF平臺(tái)驅(qū)動(dòng)(三)——ADC應(yīng)用實(shí)現(xiàn)-開(kāi)源基礎(chǔ)軟件社區(qū)

或者使用hdc_std工具:

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

五、NAPI應(yīng)用實(shí)現(xiàn)

新建OpenHarmony工程(stage+ArkTs)。

導(dǎo)入外部接口,adc_hdf為上述定義NAPI接口生成的動(dòng)態(tài)庫(kù)文件名字一致,直接導(dǎo)入會(huì)報(bào)找不到包,忽略即可,prompt為彈窗組件接口。

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

ADC通道選擇組件(使用Swiper滑塊視圖容器實(shí)現(xiàn))。新建滑塊視圖數(shù)據(jù)類。

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滑塊視圖容器組件,滑動(dòng)或點(diǎn)擊可以切換ADC通道,點(diǎn)擊select進(jìn)行數(shù)據(jù)采集。

//通道選擇組件實(shí)現(xiàn)
@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
//導(dǎo)入輪播內(nèi)容
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)
}
}

溫度計(jì)算及首頁(yè)內(nèi)容組件,程序啟動(dòng)時(shí)開(kāi)啟定時(shí)器,每隔1s獲取一次ADC溫度值。

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

//獲取溫度傳感器ADC采樣值并計(jì)算溫度
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: "獲取失敗,請(qǐng)檢查連線", // 顯示文本
duration: 1000, // 顯示時(shí)長(zhǎng)
})
}
}

//程序運(yùn)行時(shí)開(kāi)啟定時(shí)器Interval,每隔一秒調(diào)用get_adc_value更新溫度值
aboutToAppear(): void {
this.timerId = setInterval(() => {
this.get_adc_value()
}, 1000)
}
//銷毀定時(shí)器
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)
}
}

應(yīng)用簽名。

安裝應(yīng)用到開(kāi)發(fā)板。

結(jié)果演示

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

文章相關(guān)附件可以點(diǎn)擊下面的原文鏈接前往下載:

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

??想了解更多關(guān)于開(kāi)源的內(nèi)容,請(qǐng)?jiān)L問(wèn):??

??51CTO 開(kāi)源基礎(chǔ)軟件社區(qū)??

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

責(zé)任編輯:jianghua 來(lái)源: 51CTO 開(kāi)源基礎(chǔ)軟件社區(qū)
相關(guān)推薦

2023-03-20 16:21:26

ADC數(shù)字轉(zhuǎn)換器

2023-03-21 18:06:49

ADC數(shù)字轉(zhuǎn)換器

2022-09-13 16:10:15

鴻蒙操作系統(tǒng)

2023-09-14 15:49:42

PWM鴻蒙

2021-12-15 10:02:25

鴻蒙HarmonyOS應(yīng)用

2022-10-12 15:14:08

開(kāi)機(jī)動(dòng)畫(huà)鴻蒙

2023-09-06 15:27:22

ADC鴻蒙

2022-09-15 14:56:12

GDB調(diào)試鴻蒙

2021-11-30 14:52:41

鴻蒙HarmonyOS應(yīng)用

2022-04-02 20:45:04

Hi3516開(kāi)發(fā)板操作系統(tǒng)鴻蒙

2022-12-28 09:30:07

鴻聯(lián)系統(tǒng)開(kāi)發(fā)

2021-11-08 07:19:45

鴻蒙HarmonyOS應(yīng)用

2021-09-16 15:04:28

鴻蒙HarmonyOS應(yīng)用

2022-08-08 19:35:37

HDF驅(qū)動(dòng)開(kāi)發(fā)鴻蒙

2023-09-13 15:33:57

I2C鴻蒙

2022-06-10 14:37:24

鴻蒙操作系統(tǒng)

2021-01-21 13:27:37

鴻蒙HarmonyOS應(yīng)用開(kāi)發(fā)

2022-09-07 15:08:58

操作系統(tǒng)鴻蒙

2022-09-16 15:01:37

操作系統(tǒng)技術(shù)鴻蒙

2022-09-06 15:46:52

speexdsp鴻蒙
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

а√在线中文在线新版| 午夜在线精品偷拍| 欧美美女黄视频| 免费免费啪视频在线观看| 波多野结衣视频一区| 亚洲国产精品久久久久婷婷老年 | 成人免费小视频| 国产性xxxx18免费观看视频| 黄一区二区三区| 欧美国产视频在线观看| 伊人青青综合网| 亚洲va国产va天堂va久久| 精品国产一区探花在线观看| 日本精品免费观看| 婷婷综合福利| 国产精品扒开腿做爽爽爽视频| 国产99精品| 国产精品丝袜久久久久久不卡| 日本欧美韩国国产| 2020久久国产精品| 91国内精品| 国产91精品在线播放| 国产在线观看91一区二区三区| 国产精品一区二区三区成人| 亚洲资源网站| 国产精品久久精品| 你懂的网址国产 欧美| 国产精品swag| 99伊人成综合| 亚洲成人自拍视频| 国产乱人伦精品一区二区在线观看| 在线观看欧美一区| 成人18视频日本| 91插插插插插插插插| 一区二区三区在线视频观看58| 久艹在线视频| 欧美精品第1页| 国产羞羞视频在线播放| 色哟哟亚洲精品一区二区| 亚洲高清999| 91青草视频久久| 石原莉奈在线亚洲三区| 91黄色在线看| 中文字幕一区二区三区精华液| 最新中文字幕在线| 欧美日韩视频不卡| 在线观看涩涩| 性色av香蕉一区二区| 欧美好骚综合网| 五月天色一区| 91在线视频免费观看| 在线视频专区| 日韩小视频在线观看专区| 国产福利一区二区三区在线播放| 欧美亚洲国产日本| 午夜在线一区二区| 成人免费aaa| 午夜精品福利久久久| free性护士videos欧美| 九九九热精品免费视频观看网站| 亚洲澳门在线| 日韩欧美猛交xxxxx无码| 亚洲综合精品自拍| 麻豆mv在线看| 国产精品久久久久久久9999| 免费观看在线综合| 国产夫妻视频| 日韩精品视频在线观看免费| 九一精品国产| 大桥未久一区二区| 午夜精品久久久久久久久| 中文字幕乱码中文乱码51精品 | 黑人巨大精品| 国产精品69久久久久| 久久国产麻豆精品| 国产国产国产国产国产国产| 日韩三级中文字幕| 亚洲国产欧美日韩在线观看第一区| 欧美婷婷久久| 亚洲女子a中天字幕| а√在线中文网新版地址在线| 欧美一区二区影院| 久久精品国产一区二区三区免费看| 五月综合激情在线| 日韩电影中文字幕av| 欧美少妇xxxx| 国产av国片精品| 欧美在线影院一区二区| www一区二区三区| 美女视频久久| 亚洲福利一区二区| 91成人短视频在线观看| 欧美日韩成人一区二区三区 | 欧美自拍视频| 国产日产欧美一区二区| 黑人极品videos精品欧美裸| 亚洲综合伊人| 亚洲资源在线网| 在线观看免费一区| 国产精品免费大片| 男人操女人免费| 亚洲国产高清高潮精品美女| 女生裸体视频一区二区三区| 亚洲国产精品三区| 亚洲人成电影在线观看天堂色| 最新国产拍偷乱拍精品| h精品动漫在线观看| 久久国产精品久久国产精品| 久久精品国产一区二区| 日本激情视频在线观看| 日本精品性网站在线观看| av在线不卡电影| 午夜久久中文| 水蜜桃一区二区| 88在线观看91蜜桃国自产| 97人人精品| 日日噜噜噜夜夜爽爽狠狠| 欧美国产日韩免费| 99久久精品免费看国产免费软件| 岛国片av在线| 日韩中文字幕一区二区| 9191久久久久久久久久久| 亚洲欧美亚洲| 在线观看免费网站| 国产精品一区二区女厕厕| 亚洲精品视频免费看| 全国精品免费看| 免费成人看片| 欧美诱惑福利视频| 国产精品欧美极品| 激情av综合| 国产小黄视频| 国产不卡视频在线| 亚洲图片激情小说| 国产精品嫩草影院在线看| 成年网站免费| 国产精品999| 午夜精品一区二区三区电影天堂| 国产一区二区三区站长工具| 黄页网站在线播放| 99理论电影网| 欧美一区二区视频在线观看2020| 日韩和欧美的一区| 涩涩涩视频在线观看| 黄色一级片av| 久久精品国产久精国产思思| 久久久亚洲精品一区二区三区| 精品国产亚洲一区二区在线观看 | 成人免费网址在线| 国产精品av在线| 亚洲成av人片一区二区三区| 国内精品伊人久久久| 亚洲字幕成人中文在线观看| 黑人巨大精品欧美一区二区小视频| 91精品国产福利| 国产福利一区二区三区视频在线| 黄色日韩网站| av天在线播放| 操一操视频一区| 日韩一区二区高清| 国产成人综合在线播放| 日韩一区二区三区精品视频第3页| 成人黄色电影网址| 91香蕉国产在线观看| 日韩欧美一级二级三级久久久 | 久久精品国产一区二区三区日韩| 亚洲第一网站免费视频| 91美女片黄在线| 91综合久久| 2021中文字幕在线| 天天色综合天天色| 114国产精品久久免费观看| 日韩视频免费观看高清完整版在线观看 | 婷婷六月综合| av人人综合网| 日韩欧美国产片| 99免费在线观看视频| 亚洲精选在线观看| 17c精品麻豆一区二区免费| 欧美午夜视频| 国产精品黄色片| 日本24小时在线高清视频| 日韩精品久久久| 久久久久久香蕉网| 欧美日韩国产一级二级| 91在线视频观看| 欧美在线三区| 欧美videos粗暴| 噜噜噜噜噜在线视频| 热99这里只有精品| dy888夜精品国产专区| 中文字幕亚洲欧美日韩在线不卡| 亚洲激情六月丁香| 久久精品国产秦先生| 国产精品一线天粉嫩av| av在线加勒比| 满满都是荷尔蒙韩剧在线观看| 四虎4hu永久免费入口| 成人精品福利视频| 久久精品视频导航|