chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

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

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

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

嘗試輕量系統(tǒng)上的軟總線(xiàn)應(yīng)用

OpenAtom OpenHarmony ? 來(lái)源:OpenAtom OpenHarmony ? 作者:張宇航 ? 2022-07-08 09:54 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

項(xiàng)目概述

可能有些同學(xué)已經(jīng)接觸過(guò)了標(biāo)準(zhǔn)系統(tǒng)上的軟總線(xiàn)應(yīng)用開(kāi)發(fā),但是你玩過(guò)輕量系統(tǒng)上的軟總線(xiàn)應(yīng)用嗎?現(xiàn)在它來(lái)了。我們利用OpenAtom OpenHarmony 3.1 Release(以下簡(jiǎn)稱(chēng)“OpenHarmony”)版本的輕量系統(tǒng)軟總線(xiàn)能力,將智能燃?xì)鈾z測(cè)設(shè)備和智能窗戶(hù)通風(fēng)設(shè)備組成一個(gè)輕量級(jí)分布式網(wǎng)絡(luò),實(shí)現(xiàn)設(shè)備之間的相互控制。 原理圖如下:

8f4aefb2-fdf6-11ec-ba43-dac502259ad0.jpg

以下是實(shí)際操作效果: 當(dāng)家中的燃?xì)飧婢瘯r(shí),無(wú)需任何操作,直接控制窗戶(hù)通風(fēng)系統(tǒng)中的電機(jī)工作。

開(kāi)發(fā)說(shuō)明

從上面的視頻中可以看到,相關(guān)案例設(shè)備的應(yīng)用界面都可以分成外設(shè)交互頁(yè)面和軟總線(xiàn)操作頁(yè)面兩大塊。在下面的系統(tǒng)框圖中可以看到相關(guān)頁(yè)面和其依賴(lài)的相關(guān)輕量系統(tǒng)能力。例如外設(shè)交互界面通過(guò)自定義JSI接口與設(shè)備硬件打交道,軟總線(xiàn)操作界面則通過(guò)輕量系統(tǒng)的設(shè)備管理能力、軟總線(xiàn)能力來(lái)實(shí)現(xiàn)設(shè)備間的發(fā)現(xiàn)、認(rèn)證、傳輸?shù)溶浛偩€(xiàn)操作。

在下面的內(nèi)容中我們將以智能燃?xì)飧婢髟O(shè)備為例,將相關(guān)開(kāi)發(fā)過(guò)程分成JS應(yīng)用端開(kāi)發(fā)、自定義JSI實(shí)現(xiàn)、開(kāi)發(fā)板端代碼三部分來(lái)說(shuō)明:

8f5e4bf2-fdf6-11ec-ba43-dac502259ad0.png

JS應(yīng)用開(kāi)發(fā)

燃?xì)飧婢鱆S應(yīng)用是基于3.1 release版本,并結(jié)合方舟開(kāi)發(fā)框架(ArkUI)、分布式組網(wǎng)等特性,使用JS語(yǔ)言開(kāi)發(fā)的一款分布式安全廚房應(yīng)用。為了體現(xiàn)了 OpenHarmony輕量級(jí)分布式特性,不僅需要考慮頁(yè)面該如何設(shè)計(jì)、應(yīng)用怎樣同外設(shè)交互,還需要考慮兩個(gè)輕量級(jí)設(shè)備間如何進(jìn)行設(shè)備認(rèn)證,設(shè)備間如何進(jìn)行通訊等問(wèn)題。

所以在相關(guān)應(yīng)用中設(shè)計(jì)了操作頁(yè)面,報(bào)警頁(yè)面以及設(shè)備認(rèn)證頁(yè)面。其中首頁(yè)是設(shè)置燃?xì)鉂舛乳撝?,以及顯示當(dāng)前燃?xì)鉂舛?;?bào)警頁(yè)面是當(dāng)首頁(yè)檢測(cè)到當(dāng)前燃?xì)鉂舛冗_(dá)到或高于我們?cè)O(shè)置的閾值時(shí),會(huì)從首頁(yè)跳轉(zhuǎn)到報(bào)警界面;設(shè)備認(rèn)證頁(yè)面則是對(duì)兩臺(tái)設(shè)備進(jìn)行分布式組網(wǎng)。

代碼結(jié)構(gòu)如下圖:

8f71cd80-fdf6-11ec-ba43-dac502259ad0.png

外設(shè)交互頁(yè)面開(kāi)發(fā)

8f80db86-fdf6-11ec-ba43-dac502259ad0.png

相關(guān)界面如上圖所示,我們將首頁(yè)頁(yè)面分成三個(gè)部分:頂部標(biāo)簽、燃?xì)鉂舛蕊@示、設(shè)置告警閾值。接下來(lái)是具體的解析內(nèi)容:

1)頂部標(biāo)簽解析

頂部標(biāo)簽中除了相關(guān)文本界面,主要是頂部?jī)蓚€(gè)按鈕,分別用來(lái)顯示當(dāng)前Wi-Fi連接狀態(tài)以及跳轉(zhuǎn)到設(shè)備認(rèn)證頁(yè)面。

GetKey() { com.get({ // 獲取wifi狀態(tài) key: 'storage_key', success: (data)=> { let res = JSON.parse(data) if (res.wifi) { if(res.wifi == 'connected') { this.isWifi = true; } else { this.isWifi = false; } } ..... }, }); }, changePage(operation) { router.replace({ uri:"pages/dm/dm" // 跳轉(zhuǎn)到設(shè)備認(rèn)證頁(yè)面 });}

2)燃?xì)鉂舛蕊@示

主要是獲取當(dāng)前燃?xì)鉂舛龋?shí)時(shí)刷新到相關(guān)界面上。

onInit() { setTimeout(()=>{ setInterval(()=>this.GetKey(),500) // 每500ms 獲取一次 },3000); }, GetKey() { com.get({ key: 'storage_key', success: (data)=> { let res = JSON.parse(data) if (res.CurrentGasCONC) { this.currentValue = res.CurrentGasCONC; this.progressPercent = ((this.currentValue ) /300) * 100 if(this.currentValue >this.PresetValue && !this.isChange){ this.isChange = true; router.replace({ uri:"pages/warn/warn" // 燃?xì)鈹?shù)值超標(biāo)后自動(dòng)跳轉(zhuǎn)告警頁(yè)面 }); } } }, ...... });},

3)設(shè)置報(bào)警閾值

首頁(yè)界面中對(duì)于報(bào)警閾值的處理,主要包含減小預(yù)設(shè)閾值和增大預(yù)設(shè)閾值,都是通過(guò)調(diào)用相關(guān)SetKey操作完成的。

reduceProgress(){ //減小預(yù)設(shè)閾值 if (this.PresetValue <= 0) { this.PresetValue = 0 }else{ this.PresetValue = parseInt(this.PresetValue) - 20 } this.isChange = false; this.setProgress = ((this.PresetValue ) /300) * 100 this.SetKey( 'GasThreshold', this.PresetValue ); }, addProgress(){ //增大預(yù)設(shè)閾值 if (this.PresetValue >= 300) { this.PresetValue = 300 }else{ this.PresetValue = parseInt(this.PresetValue) + 20 } this.isChange = false; this.setProgress = ((this.PresetValue ) /300) * 100 this.SetKey( 'GasThreshold', this.PresetValue ); }, SetKey(key1, value1) { com.set({ key: key1 + '', value: value1 + '', // success or failed 狀態(tài)打印 });},設(shè)備認(rèn)證頁(yè)面開(kāi)發(fā)

8f9eb606-fdf6-11ec-ba43-dac502259ad0.png

相關(guān)界面如上圖所示,我們將設(shè)備認(rèn)證步驟分成四個(gè)步驟:發(fā)現(xiàn)設(shè)備、發(fā)起認(rèn)證、允許認(rèn)證、輸入PIN碼。接下來(lái)是具體的解析內(nèi)容:

1)發(fā)現(xiàn)設(shè)備解析

設(shè)備認(rèn)證因設(shè)備狀態(tài)不同顯示對(duì)應(yīng)的UI,上圖顯示的UI對(duì)應(yīng)設(shè)備狀態(tài)”status = start“。

startDevice(){ this.subscribeId = Math.floor(Math.random() * 10000 + 1000) var info = { "subscribeId": this.subscribeId, // 特定隨機(jī)的 "mode": 0xAA, // 設(shè)置主動(dòng)發(fā)現(xiàn)模式,除此之外還有被動(dòng)模式DISCOVER_MODE_PASSIVE "medium": 0, // 自動(dòng)選擇發(fā)現(xiàn)介質(zhì),目前用的是coap "freq": 2, // 發(fā)送發(fā)現(xiàn)消息的頻率,目前用的是HIGH 還有LOW/MID/SUPER_HIGH "isSameAccount": false, // 取消同一賬號(hào)下才能發(fā)現(xiàn)的限制 "isWakeRemote": false, // 目前輕量系統(tǒng)沒(méi)有睡眠模式,所以不用睡眠喚醒功能 "capability": 0 // 目前使用DDMP devicemanager.startDeviceDiscovery(info); // 開(kāi)始設(shè)備發(fā)現(xiàn)},2)發(fā)起認(rèn)證解析

AuthenticateDevice(){ // 發(fā)起認(rèn)證 let extraInfo = { targetPkgName: 'test', appName: "Newname", appDescription: "testAPP", business: '0', displayOwner: 0 }; let AuthParam = { authType: 1, // 以PIN 碼方式進(jìn)行認(rèn)證校驗(yàn) appIcon:null, appThumbnail:null, extraInfo: extraInfo }; let _this = this; devicemanager.authenticateDevice(this.statusInfo, AuthParam, { // 省略了相關(guān)success 和fail 回調(diào)處理,完整代碼見(jiàn)參考鏈接},

3)允許認(rèn)證解析

當(dāng)設(shè)備狀態(tài)”status = join-pin“,允許相關(guān)認(rèn)證動(dòng)作并且顯示相關(guān)PIN碼。

joinAuthOk() { this.joinPin() //切換顯示PIN碼界面 this.initStatue() //獲取PIN碼并顯示 devicemanager.setUserOperation(0) }, initStatue() { this.log('initStatue') const data = devicemanager.getAuthenticationParam() // 參數(shù)值轉(zhuǎn)換為 JSON 字符串寫(xiě)入data this.log('getAuthenticationParam:' + JSON.stringify(data)) // Authentication type, 1 for pin code. // ode ==1,pin碼 if (data && data.authType == 1) { // 完整代碼見(jiàn)參考鏈接 }},

4)輸入PIN碼解析

當(dāng)設(shè)備狀態(tài)"status = main-pin",進(jìn)到相關(guān)PIN碼輸入、校驗(yàn)界面。

mainInputPin(s) { // 輸入六位數(shù)字 if (this.pinNumb == 6) return if (this.pinNumb < 6) { this.pin[this.pinNumb] = s ++this.pinNumb } if (this.pinNumb == 6) { console.log("verifyAuthInfo ok") this.verifyAuthInfo(this.pin.join('')) // PIN碼校驗(yàn) }????},?

自定義JSI原理和實(shí)現(xiàn)

JSI是OpenHarmony輕量和小型系統(tǒng)的一種JS API實(shí)現(xiàn)機(jī)制,適合封裝IO、CPU密集型、OS底層等能力給到JS應(yīng)用調(diào)用,通過(guò)JSI可以實(shí)現(xiàn)JS與C/C++代碼互相訪(fǎng)問(wèn)。與OpenHarmony 輕量級(jí)系統(tǒng)中涉及到的 audio、device、sensor 等需要與硬件打交道的JSI 模塊類(lèi)似,CommunicationKit 和DeviceManager模塊同樣首先要加入到相關(guān)的配置文件中。ace_lite_engine 通過(guò)JSI::SetModuleAPI將JS應(yīng)用中使用的關(guān)鍵字映射成C++函數(shù)。具體操作如下:

foundation/ace/ace_engine_lite/frameworks/module_manager/ohos_module_config.h中的OHOS_MODULES新增如下字段:

{"CommunicationKit", InitNativeApiCommunicationKit},{"devicemanager",InitDeviceManagerModule},

加載自定義模塊

如上所示,在JS應(yīng)用外設(shè)控制界面中數(shù)據(jù)讀取和命令下發(fā)時(shí),引入了CommunicationKit模塊,現(xiàn)在我們就看一下相關(guān)具體內(nèi)容:

InitNativeApiCommunicationKit函數(shù)相關(guān)內(nèi)容如下:

vendor/team_x/common/communicationkit/native_utils/src/nativeapi_communication_kit.cppvoid InitNativeApiCommunicationKit(JSIValue exports) { JSI::SetModuleAPI(exports, "get", NativeapiCommunicationKit::Get); // 與JS應(yīng)用中的關(guān)鍵字一致 JSI::SetModuleAPI(exports, "set", NativeapiCommunicationKit::Set);} 相關(guān)C++實(shí)現(xiàn)NativeapiCommunicationKit::Get 和Set 的方式類(lèi)似,我們參考輕量系統(tǒng)源碼中其他模塊的實(shí)現(xiàn),使用ExecuteAsyncWork函數(shù)。根據(jù)給定的參數(shù)創(chuàng)建一個(gè)異步工作,并將其分派給主應(yīng)用程序任務(wù)處理程序。其獲取燃?xì)鉂舛冗壿嬙贓xecuteGet實(shí)現(xiàn),設(shè)置輕量系統(tǒng)燃?xì)飧婢撝涤蒃xecuteSet實(shí)現(xiàn)。函數(shù)args參數(shù)用來(lái)接收J(rèn)S端傳過(guò)來(lái)的參數(shù)(JSIValue數(shù)組),argsNum表示該數(shù)組長(zhǎng)度。

ExecuteAsyncWork(thisVal, args, argsNum, ExecuteGet, false);ExecuteAsyncWork(thisVal,args,argsNum,ExecuteSet,false);

加載設(shè)備管理模塊

與自定義模塊類(lèi)似,JS應(yīng)用使用軟總線(xiàn)接口時(shí),需要在應(yīng)用執(zhí)行前加載設(shè)備管理模塊。設(shè)備管理模塊也是OpenHarmony系統(tǒng)中的重要組成部分,我們?cè)跇?biāo)準(zhǔn)系統(tǒng)中是通過(guò)NAPI的方式來(lái)加載相關(guān)模塊,而在我們輕量系統(tǒng)中,設(shè)備管理模塊是通過(guò)JSI的方式來(lái)加載的。首先看到InitDeviceManagerModule函數(shù)相關(guān)內(nèi)容如下:

foundation/distributedhardware/devicemanager/interfaces/kits/js_mini/src/native_devicemanager_js.cppvoid InitDeviceManagerModule(JSIValue exports) { JSI::SetModuleAPI(exports, "createDeviceManager", DeviceManagerModule::CreateDeviceManager); ...... JSI::SetModuleAPI(exports, "startDeviceDiscovery", DeviceManagerModule::StartDeviceDiscoverSync); JSI::SetModuleAPI(exports, "stopDeviceDiscovery", DeviceManagerModule::StopDeviceDiscoverSync); JSI::SetModuleAPI(exports, "authenticateDevice", DeviceManagerModule::AuthenticateDevice); JSI::SetModuleAPI(exports, "verifyAuthInfo", DeviceManagerModule::VerifyAuthInfo); JSI::SetModuleAPI(exports, "setUserOperation", DeviceManagerModule::SetUserOperationSync); JSI::SetModuleAPI(exports, "getAuthenticationParam", DeviceManagerModule::GetAuthenticationParamSync); ......}

開(kāi)發(fā)板端代碼開(kāi)發(fā)說(shuō)明

如下圖所示,我們從輕量系統(tǒng)軟總線(xiàn)設(shè)備的系統(tǒng)啟動(dòng)流程出發(fā),來(lái)分析軟總線(xiàn)應(yīng)用執(zhí)行的相關(guān)要點(diǎn)。第一步:首先初始化軟總線(xiàn)server;第二步:注冊(cè)與軟總線(xiàn)相關(guān)的服務(wù),例如PRC、設(shè)備管理DeviceManager服務(wù);第三步:JS engine加載DeviceManager接口聲明;第四步:具體的RPC通信操作流程。

8fb5ff28-fdf6-11ec-ba43-dac502259ad0.png

初始化軟總線(xiàn)服務(wù)

輕量系統(tǒng)設(shè)備啟動(dòng)的啟動(dòng)過(guò)程中,會(huì)注冊(cè)相關(guān)初始化軟總線(xiàn)服務(wù)線(xiàn)程。該線(xiàn)程中的主要內(nèi)容就是調(diào)用InitSoftBusServer函數(shù)。該函數(shù)會(huì)初始化與軟總線(xiàn)相關(guān)的配置、發(fā)現(xiàn)、認(rèn)證等相關(guān)操作。

8fc2dbb2-fdf6-11ec-ba43-dac502259ad0.jpg

軟總線(xiàn)相關(guān)服務(wù)注冊(cè)

服務(wù)是OpenHarmony系統(tǒng)中的一個(gè)重要概念,不同的功能模塊,不同線(xiàn)程/進(jìn)程之間的調(diào)用接口,都統(tǒng)一抽象成了服務(wù)。利用服務(wù)機(jī)制,操作系統(tǒng)、驅(qū)動(dòng)框架等提供的能力都能被包裝成服務(wù)提供給到應(yīng)用調(diào)用。下面給大家具體介紹軟總線(xiàn)相關(guān)的服務(wù)注冊(cè)細(xì)節(jié)和要點(diǎn)。

8fd74bec-fdf6-11ec-ba43-dac502259ad0.png

SAMGR:作為中介者,管理Provider提供的能力,同時(shí)幫助Consumer發(fā)現(xiàn)Provider的能力。

Provider:服務(wù)的提供者,為系統(tǒng)提供能力(對(duì)外接口)。

PRC服務(wù)注冊(cè)

RPC:(Remote Procedure Call)用于跨設(shè)備跨進(jìn)程間的通信,在輕量系統(tǒng)軟總線(xiàn)應(yīng)用中,我們利用RPC能力實(shí)現(xiàn)了安全廚房項(xiàng)目中兩個(gè)設(shè)備的關(guān)聯(lián)控制,RPC服務(wù)注冊(cè)的具體內(nèi)容如下:

1.創(chuàng)建相關(guān)的靜態(tài)服務(wù)對(duì)象;

static MiniService g_miniService = { .GetName = GetName, // 相關(guān)服務(wù)名為mini_sa_rpc .Initialize = Initialize, .MessageHandle = MessageHandle, .GetTaskConfig = GetTaskConfig, SERVER_IPROXY_IMPL_BEGIN, .Invoke = FeatureInvoke, // 對(duì)外提供Invoke方法,供RPC相關(guān)client端程序調(diào)用 IPROXY_END,}; 2.注冊(cè)相關(guān)的服務(wù)和缺省對(duì)象;

SAMGR_GetInstance()->RegisterService((Service *)&g_miniService); SAMGR_GetInstance()->RegisterDefaultFeatureApi(MINI_SERVICE,GET_IUNKNOWN(g_miniService));

設(shè)備管理服務(wù)注冊(cè)

如果沒(méi)注冊(cè)設(shè)備管理服務(wù),那么相關(guān)軟總線(xiàn)能力也就無(wú)從談起。在輕量系統(tǒng)啟動(dòng)時(shí),執(zhí)行相關(guān)設(shè)備管理服務(wù)初始化動(dòng)作,具體內(nèi)容如下:

1)創(chuàng)建相關(guān)的靜態(tài)服務(wù)對(duì)象;

static DeviceManagerSamgrService service = { .GetName = GetName, // 相關(guān)服務(wù)名為dev_mgr_svc .Initialize = Initialize, .MessageHandle = MessageHandle, .GetTaskConfig = GetTaskConfig,}; 2)注冊(cè)相關(guān)的服務(wù)和缺省對(duì)象;

SAMGR_GetInstance()->RegisterService((Service *)&service)) ;SAMGR_GetInstance()->RegisterDefaultFeatureApi(DEVICE_MANAGER_SERVICE_NAME, GET_IUNKNOWN(service)); 3)執(zhí)行相關(guān)初始化動(dòng)作。DeviceManager服務(wù)的初始化函數(shù)將完成相關(guān)狀態(tài)回調(diào)注冊(cè)和傳輸通道初始化,然后執(zhí)行相關(guān)Publish動(dòng)作,做好接收發(fā)現(xiàn)消息的準(zhǔn)備。

8feaaed0-fdf6-11ec-ba43-dac502259ad0.jpg

設(shè)備間RPC通信

在標(biāo)準(zhǔn)系統(tǒng)應(yīng)用開(kāi)發(fā)中,我們可以通過(guò)分布式數(shù)據(jù)庫(kù)和啟動(dòng)遠(yuǎn)程Ability的方式實(shí)現(xiàn)設(shè)備之間的通信,而在輕量系統(tǒng)中則通過(guò)RPC的方法來(lái)實(shí)現(xiàn)。在前面的內(nèi)容中我們講了服務(wù)的概念,下面是拓展的相關(guān)原理圖:

90071980-fdf6-11ec-ba43-dac502259ad0.png

Consumer:服務(wù)的消費(fèi)者,調(diào)用服務(wù)提供的功能(對(duì)外接口)。

在完成軟總線(xiàn)組網(wǎng)后,如果檢測(cè)到燃?xì)舛葦?shù)超標(biāo)后,按如下步驟即可實(shí)現(xiàn)對(duì)智能通風(fēng)設(shè)備的控制:

1.獲取軟總線(xiàn)網(wǎng)絡(luò)中的相關(guān)節(jié)點(diǎn)信息;

GetAllNodeDeviceInfo("com.ohos.devicemanagerui", &nodeInfo, &infoNum); 2.獲取遠(yuǎn)程節(jié)點(diǎn)發(fā)布的mini_sa_rpc服務(wù)中對(duì)應(yīng)的IUnknown方法;

IUnknown *miniDefApi = SAMGR_GetInstance()->GetRemoteDefaultFeatureApi(nodeInfo[0]->networkId, "mini_sa_rpc"); 3.查詢(xún)服務(wù)所發(fā)布的相關(guān)能力,獲取指向具體API接口的指針miniInterface;

miniDefApi->QueryInterface(miniDefApi, 0, (void **) &miniInterface); 4.調(diào)用相關(guān)mini_sa_rpc對(duì)外提供的Invoke能力;

miniInterface->Invoke(miniInterface, 1, &reply, NULL, NULL);

操作體驗(yàn)

1. 提前準(zhǔn)備好安全廚房場(chǎng)景中的智能窗戶(hù)通風(fēng)設(shè)備和智能燃?xì)飧婢O(shè)備,并完成相關(guān)的編譯和應(yīng)用安裝動(dòng)作;

2. 提前準(zhǔn)備好正常工作的無(wú)線(xiàn)路由設(shè)備(請(qǐng)保證預(yù)設(shè)熱點(diǎn)名稱(chēng):test_wifi 密碼:12345678;是否能連接互聯(lián)網(wǎng)均可)

3. 將燃?xì)鈾z測(cè)設(shè)備和窗戶(hù)通風(fēng)設(shè)備上電,確認(rèn)兩個(gè)設(shè)備應(yīng)用啟動(dòng)正常和操作正常;

4. 按如下步驟將通風(fēng)設(shè)備、燃?xì)鈾z測(cè)設(shè)備組成一個(gè)軟總線(xiàn)網(wǎng)絡(luò):

● 分別點(diǎn)擊兩個(gè)設(shè)備應(yīng)用界面右上角的軟總線(xiàn)配置圖標(biāo),進(jìn)入軟總線(xiàn)配置界面;

● 點(diǎn)擊智能燃?xì)鈾z測(cè)設(shè)備應(yīng)用發(fā)現(xiàn)圖標(biāo),間隔3S后點(diǎn)擊發(fā)起認(rèn)證圖標(biāo);

● 點(diǎn)擊智能通風(fēng)設(shè)備軟總線(xiàn)配置界面下的允許認(rèn)證圖標(biāo),正常情況下會(huì)顯示一個(gè)6位數(shù)的PIN碼;

● 點(diǎn)擊智能燃?xì)鈾z測(cè)設(shè)備應(yīng)用輸入PIN碼按鈕,進(jìn)入數(shù)字鍵盤(pán)輸入PIN碼;

● 分別點(diǎn)擊兩個(gè)應(yīng)用軟總線(xiàn)配置圖標(biāo)左上角的返回按鍵,進(jìn)入設(shè)備控制界面。

5. 設(shè)置燃?xì)鈾z測(cè)設(shè)備的閾值低于實(shí)際讀取的燃?xì)鈹?shù)值,燃?xì)鈾z測(cè)應(yīng)用進(jìn)入警報(bào)界面的同時(shí)會(huì)控制電機(jī)工作,自動(dòng)通風(fēng)換氣,保證家居的安全。待到實(shí)際燃?xì)鈹?shù)值低于設(shè)置的閾值時(shí),則關(guān)閉電機(jī)。

參考鏈接

本項(xiàng)目中涉及到的參考資料和相關(guān)文檔路徑如下:

歐智通BES2600WM開(kāi)發(fā)板快速上手學(xué)習(xí)路徑:

https://growing.openharmony.cn/mainPlay/learnPathMaps?id=17

輕量系統(tǒng)應(yīng)用開(kāi)發(fā)軟總線(xiàn)視頻課程:

https://www.bilibili.com/video/BV1BS4y1A7ry/?vd_source=fa133082ba4f0aaa5d2dae4f0a981ab3

設(shè)備管理模塊文檔:

https://gitee.com/openharmony/device_manager/blob/master/README_zh.md

智能燃?xì)鈾z測(cè)系統(tǒng)樣例:

https://growing.openharmony.cn/mainPlay/detail?sampleId=3935

智能窗戶(hù)通風(fēng)系統(tǒng)樣例:

https://growing.openharmony.cn/mainPlay/detail?sampleId=3936

總結(jié)

從本文中可以看到與標(biāo)準(zhǔn)系統(tǒng)一樣應(yīng)用都是調(diào)用設(shè)備管理模塊提供的相關(guān)接口來(lái)實(shí)現(xiàn)的軟總線(xiàn)發(fā)現(xiàn)、認(rèn)證等功能,但是不同的地方在于標(biāo)準(zhǔn)系統(tǒng)使用了預(yù)制的DeviceManager_UI.hap來(lái)顯示PIN碼、輸入PIN碼。而輕量系統(tǒng)軟總線(xiàn)應(yīng)用中,相關(guān)PIN碼顯示、PIN碼輸入需要自己調(diào)用相關(guān)接口。

與標(biāo)準(zhǔn)系統(tǒng)軟總線(xiàn)應(yīng)用相比,目前輕量系統(tǒng)軟總線(xiàn)應(yīng)用只實(shí)現(xiàn)了輕量系統(tǒng)設(shè)備之前數(shù)據(jù)流轉(zhuǎn)功能,輕量系統(tǒng)分布式拉起、分布式數(shù)據(jù)庫(kù)等功能待后續(xù)更新迭代。下一步還將研究如何利用軟總線(xiàn)來(lái)連接輕量系統(tǒng)和標(biāo)準(zhǔn)系統(tǒng),敬請(qǐng)大家期待。

豐富多樣的OpenHarmony開(kāi)發(fā)樣例離不開(kāi)廣大合作伙伴和開(kāi)發(fā)者的貢獻(xiàn),如果你也想把自己開(kāi)發(fā)的樣例分享出來(lái),歡迎提交到OpenHarmony知識(shí)體系SIG倉(cāng)庫(kù)。

審核編輯:何安

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

    關(guān)注

    10

    文章

    2959

    瀏覽量

    89740
  • OpenHarmony
    +關(guān)注

    關(guān)注

    29

    文章

    3853

    瀏覽量

    18594

原文標(biāo)題:你玩過(guò)輕量系統(tǒng)軟總線(xiàn)應(yīng)用嗎?

文章出處:【微信號(hào):gh_e4f28cfa3159,微信公眾號(hào):OpenAtom OpenHarmony】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

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

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    國(guó)際打造企業(yè)云服務(wù)解決方案

    近日,華為云生態(tài)大會(huì)2025在蕪湖隆重舉行。中國(guó)際華為技術(shù)與解決方案集團(tuán)云應(yīng)用與服務(wù)業(yè)務(wù)線(xiàn)總裁胡啟明受邀參加華為云伙伴聯(lián)合解決方案宣講會(huì),并在會(huì)上作了題為《中國(guó)際企業(yè)云服務(wù)解決方案》的主題演講,闡述了中
    的頭像 發(fā)表于 04-16 11:34 ?446次閱讀

    在鴻IO控制器:以之軀,鴻蒙之力,重塑?chē)?guó)產(chǎn)物聯(lián)生態(tài)

    3月20-21日,華為合作伙伴大會(huì)上,開(kāi)鴻智谷聯(lián)合拓維信息重磅發(fā)布了基于開(kāi)源鴻蒙生態(tài)的在鴻IO控制器。在鴻IO控制器作為開(kāi)鴻智谷面向多個(gè)領(lǐng)域打造的中樞設(shè)備國(guó)產(chǎn)化替代的標(biāo)桿產(chǎn)品,以分布式總線(xiàn)技術(shù)為
    的頭像 發(fā)表于 03-21 18:04 ?654次閱讀
    在鴻IO控制器:以<b class='flag-5'>輕</b><b class='flag-5'>量</b>之軀,鴻蒙之力,重塑?chē)?guó)產(chǎn)物聯(lián)生態(tài)

    阿里云應(yīng)用服務(wù)器全新升級(jí),通用型實(shí)例峰值帶寬高達(dá)200Mbps

    火傘云1月13日消息,阿里云推出首款全新升級(jí)的應(yīng)用服務(wù)器“通用型實(shí)例”。新的服務(wù)器實(shí)例面向中小企業(yè)和開(kāi)發(fā)者創(chuàng)新設(shè)計(jì),升級(jí)支持4vCPU實(shí)例規(guī)格滿(mǎn)足更多通用計(jì)算小算力場(chǎng)景需求,標(biāo)配200Mbps
    的頭像 發(fā)表于 01-14 15:20 ?539次閱讀
    阿里云<b class='flag-5'>輕</b><b class='flag-5'>量</b>應(yīng)用服務(wù)器全新升級(jí),通用型實(shí)例峰值帶寬高達(dá)200Mbps

    如何優(yōu)化總線(xiàn)系統(tǒng)的性能

    總線(xiàn)系統(tǒng)是計(jì)算機(jī)和其他電子設(shè)備中用于傳輸數(shù)據(jù)的關(guān)鍵組件。性能優(yōu)化可以提高數(shù)據(jù)傳輸速率、降低延遲,并增強(qiáng)系統(tǒng)的可靠性和擴(kuò)展性。 1. 理解總線(xiàn)系統(tǒng)
    的頭像 發(fā)表于 12-31 09:54 ?675次閱讀

    戈帥《OpenHarmony系統(tǒng)從入門(mén)到精通50例》開(kāi)發(fā)板與傳感器配置說(shuō)明

    戈帥《OpenHarmony系統(tǒng)從入門(mén)到精通50例》開(kāi)發(fā)板與傳感器配置說(shuō)明,請(qǐng)查看附件*附件:《OpenHarmony
    發(fā)表于 12-03 15:46

    中科創(chuàng)達(dá)旗下創(chuàng)通聯(lián)達(dá)推出型“派”產(chǎn)品RUBIK Pi

    此前,中科創(chuàng)達(dá)旗下創(chuàng)通聯(lián)達(dá)震撼發(fā)布基于高通芯片平臺(tái)的首款面向開(kāi)發(fā)者的型“派”產(chǎn)品——RUBIK Pi(魔方派)。該產(chǎn)品的問(wèn)世為開(kāi)發(fā)者帶來(lái)全新的創(chuàng)新機(jī)遇,完美填補(bǔ)了基于高通芯片平臺(tái)在開(kāi)源領(lǐng)域的空白。
    的頭像 發(fā)表于 11-15 11:23 ?1075次閱讀

    海外云服務(wù)器是什么意思?如何使用

    海外云服務(wù)器是指位于海外數(shù)據(jù)中心內(nèi),采用虛擬化技術(shù)構(gòu)建的輕量級(jí)云服務(wù)器實(shí)例。海外云服務(wù)器是專(zhuān)為輕量級(jí)應(yīng)用或小型網(wǎng)站設(shè)計(jì)的,旨在以較低的成本提供高效、穩(wěn)定的云服務(wù)。它采用虛擬化技
    的頭像 發(fā)表于 10-30 09:48 ?544次閱讀

    TMS320C6474通用總線(xiàn)架構(gòu)(CBA)吞吐

    電子發(fā)燒友網(wǎng)站提供《TMS320C6474通用總線(xiàn)架構(gòu)(CBA)吞吐.pdf》資料免費(fèi)下載
    發(fā)表于 10-15 10:29 ?0次下載
    TMS320C6474通用<b class='flag-5'>總線(xiàn)</b>架構(gòu)(CBA)吞吐<b class='flag-5'>量</b>

    通動(dòng)力旗下PC品牌出貨年增86%,領(lǐng)跑?chē)?guó)內(nèi)市場(chǎng)

    全球知名科技市場(chǎng)分析機(jī)構(gòu)Canalys近日發(fā)布了2024年中國(guó)大陸臺(tái)式機(jī)和筆記本出貨報(bào)告。報(bào)告顯示,今年二季度,通動(dòng)力旗下的PC品牌出貨達(dá)到了74.2萬(wàn)臺(tái),年增長(zhǎng)率高達(dá)86%,這一增長(zhǎng)率位居國(guó)內(nèi)市場(chǎng)首位。
    的頭像 發(fā)表于 10-12 16:22 ?1215次閱讀

    前端總線(xiàn)是屬于什么總線(xiàn)

    總線(xiàn)的介紹: 一、前端總線(xiàn)的定義與功能 前端總線(xiàn)是計(jì)算機(jī)系統(tǒng)內(nèi)部的一種接口標(biāo)準(zhǔn),它負(fù)責(zé)連接CPU與主板的內(nèi)存、顯卡等關(guān)鍵組件,實(shí)現(xiàn)數(shù)據(jù)的高
    的頭像 發(fā)表于 10-10 17:11 ?1368次閱讀

    服務(wù)器和云服務(wù)器ecs哪個(gè)好用一些?

    服務(wù)器與云服務(wù)器ECS在多方面存在顯著差異,對(duì)于需要高性能計(jì)算和大規(guī)模數(shù)據(jù)處理的用戶(hù)來(lái)說(shuō),ECS可能是更好的選擇;而對(duì)于預(yù)算有限且需求較為簡(jiǎn)單的用戶(hù)來(lái)說(shuō),服務(wù)器可能更為合適。在
    的頭像 發(fā)表于 10-08 11:07 ?554次閱讀

    海外云服務(wù)器是什么

    海外云服務(wù)器是指位于海外數(shù)據(jù)中心內(nèi),采用虛擬化技術(shù)構(gòu)建的輕量級(jí)云服務(wù)器實(shí)例。與傳統(tǒng)的物理服務(wù)器或國(guó)內(nèi)云服務(wù)器相比,海外云服務(wù)器在配置、價(jià)格、靈活性等方面具有顯著不同。
    的頭像 發(fā)表于 09-25 10:09 ?559次閱讀

    【開(kāi)源鴻蒙】使用QEMU運(yùn)行OpenHarmony系統(tǒng)

    本文將會(huì)介紹如何從源碼安裝QEMU 6.2.0,以及如何使用QEMU運(yùn)行OpenHarmony系統(tǒng)。通過(guò)本文,你將會(huì)對(duì)QEMU和OpenHarmony
    的頭像 發(fā)表于 09-14 08:51 ?1348次閱讀
    【開(kāi)源鴻蒙】使用QEMU運(yùn)行OpenHarmony<b class='flag-5'>輕</b><b class='flag-5'>量</b><b class='flag-5'>系統(tǒng)</b>

    美國(guó)云服務(wù)器是什么?和云服務(wù)器有哪些區(qū)別

    美國(guó)云服務(wù)器,作為云計(jì)算領(lǐng)域的一種服務(wù)模式,主要面向入門(mén)級(jí)云計(jì)算用戶(hù)及需要簡(jiǎn)單應(yīng)用部署的場(chǎng)景。它提供基于單臺(tái)云服務(wù)器的綜合服務(wù),包括域名管理、應(yīng)用部署、安全及運(yùn)維管理等一站式解決方案。
    的頭像 發(fā)表于 08-16 11:20 ?712次閱讀

    華納云:了解美國(guó)云服務(wù)器的成本效益優(yōu)勢(shì)

    在當(dāng)前競(jìng)爭(zhēng)激烈的商業(yè)環(huán)境中,企業(yè)需要尋求更具成本效益的IT基礎(chǔ)設(shè)施解決方案。美國(guó)云服務(wù)器作為一種新興的云計(jì)算技術(shù),正逐漸成為企業(yè)的首選。本文將深入探討其在成本效益的優(yōu)勢(shì)。 1. 低成本 美國(guó)
    的頭像 發(fā)表于 08-07 15:37 ?504次閱讀