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

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

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

窗口子系統(tǒng)基本概念與流程分析

王程 ? 來(lái)源:jf_75796907 ? 作者:jf_75796907 ? 2024-03-05 09:45 ? 次閱讀

窗口子系統(tǒng)位于 fundationwindowmanager 目錄下,提供對(duì)窗口與 Display 管理的基礎(chǔ)能力

概覽

窗口是什么

每個(gè) Ability 在創(chuàng)建時(shí)都會(huì)創(chuàng)建一個(gè)主窗口,并且為該窗口設(shè)置 ACE 中的 UIContent 用于加載展示 UI 界面?;旧纤械?UI 視圖都是在窗口中展示的,比如彈窗、toast、系統(tǒng)狀態(tài)欄導(dǎo)航欄、應(yīng)用等。因此窗口子系統(tǒng)是系統(tǒng)圖形界面顯示所需的基礎(chǔ)子系統(tǒng)。

窗口的種類

  • 主窗口: 應(yīng)用顯示的主窗口,即每個(gè) Ability 持有的主窗口
  • 子窗口: 必須依附于主窗口來(lái)創(chuàng)建與顯示
  • 系統(tǒng)窗口 :其他窗口均屬于系統(tǒng)窗口

窗口的屬性

WindowFlag
flag 指定窗口的部分測(cè)量規(guī)則:

WINDOW_FLAG_NEED_AVOID 是否避開(kāi)區(qū)域,默認(rèn)避開(kāi),比如狀態(tài)欄導(dǎo)航欄區(qū)域

WINDOW_FLAG_PARENT_LIMIT 是否受到父窗口的限制,默認(rèn)不限制,如果限制,則寬高不能超過(guò)父窗口,需與 WINDOW_MODE_FLOATING 配合使用
WindowMode
mode 指定窗口的布局規(guī)則:

WINDOW_MODE_UNDEFINED 默認(rèn)模式,默認(rèn)寬高為 display 寬高減去狀態(tài)欄導(dǎo)航欄等的寬高

WINDOW_MODE_FULLSCREEN 全屏模式,但需要與 * * * WINDOW_FLAG_NEED_AVOID 一起使用,默認(rèn)寬高為 display 寬高

WINDOW_MODE_SPLIT_PRIMARY 分屏主窗口模式,如果是橫屏則位于左側(cè),豎屏位于上方

WINDOW_MODE_SPLIT_SECONDARY 分屏副窗口模式,如果是橫屏則位于右側(cè),豎屏位于下方

WINDOW_MODE_FLOATING 懸浮模式,懸浮窗口可以通過(guò)窗口邊緣改變窗口大小,默認(rèn)寬高為 display 寬高的 3/4
應(yīng)用主窗口可以通過(guò)啟動(dòng) ability 時(shí)的參數(shù) Want::PARAM_RESV_WINDOW_MODE(ohos.aafwk.param.windowMode)來(lái)側(cè)面指定 WindowMode 的值

priority
窗口優(yōu)先級(jí)決定了窗口的層級(jí),priority 越大窗口越靠近頂部。該屬性位于 WindowNode 內(nèi),且只能由 WindowType 決定。

WindowType
窗口類型的改變會(huì)引起 flag、mode、priority 或其他屬性的改變,從而達(dá)到改變窗口的測(cè)量、排列與層級(jí)的目的。如:

  • WINDOW_TYPE_STATUS_BAR
property_->SetWindowMode(WindowMode::WINDOW_MODE_FLOATING);
property_->SetFocusable(false);

?

  • WINDOW_TYPE_KEYGUARD
RemoveWindowFlag(WindowFlag::WINDOW_FLAG_NEED_AVOID);
SetWindowMode(WindowMode::WINDOW_MODE_FULLSCREEN);
?

層級(jí)則是由 WindowType 的 Priority 值與類型共同決定,同類型取值越大層級(jí)越高,WindowType 的 Priority 定義位于 foundationwindowmanagerwmserverincludewindow_zorder_policy.h 中,如:

WINDOW_TYPE_WALLPAPER = 0

WINDOW_TYPE_DESKTOP = 1

WINDOW_TYPE_APP_MAIN_WINDOW = 0

WINDOW_TYPE_APP_SUB_WINDOW = 1

WINDOW_TYPE_STATUS_BAR = 110

WINDOW_TYPE_KEYGUARD = 114

WINDOW_TYPE_BOOT_ANIMATION = 117
WindowType 的類型則有三種:

BelowApp 位于底層,如桌面、壁紙等

App 位于中間,如應(yīng)用主窗口、子窗口

AboveApp 位于上方,如鎖屏、狀態(tài)欄等

WindowType 是在這幾個(gè)屬性中,開(kāi)發(fā)者目前唯一能直接修改的窗口屬性:

window.setWindowType(type: WindowType): Promise
?

Window、Display、Screen 的關(guān)系
Screen 是物理屏幕,Display 是邏輯屏幕,Window 則依附于 Display。Screen 與 Display 之間是多對(duì)多的關(guān)系,Display 與 Window 也是多對(duì)多的關(guān)系。在普通的單屏場(chǎng)景下,Screen 與 Display 是一對(duì)一,Display 與 Window 則是一對(duì)多。

WindowManagerService
WMS 主要負(fù)責(zé) Window 的管理,比如創(chuàng)建、銷毀、布局、層級(jí)的管理,并提供窗口布局、焦點(diǎn)、事件分發(fā)的能力,但不負(fù)責(zé)繪制。主要職責(zé)如下:

  • 管理 Window 的創(chuàng)建與銷毀、窗口的屬性的維護(hù)
  • 窗口樹(shù)的維護(hù)
  • 窗口焦點(diǎn)的管理
  • 窗口的層級(jí)管理以及輸入法窗口的層級(jí)提升
  • 窗口布局與策略的管理
  • 提供窗口的縮放與拖拽能力
    避開(kāi)區(qū)域的管理
  • 加載 ACE 布局并觸發(fā)布局回調(diào)事件

DisplayManagerService

DMS 提供 Display 信息、Display 事件通知以及管理 Display 與 Screen 映射關(guān)系,其他能力主要通過(guò) RenderService 實(shí)現(xiàn)。主要職責(zé)如下:

  • 通過(guò) RenderService 獲取并管理 Screen
  • ScreenGroup 的管理
  • Display 的管理,以及其與 Screen 的映射管理
  • 對(duì)外提供顯示信息,如寬高、虛擬像素比等
  • 提供截屏、量滅屏、橫豎屏、亮度等屏幕相關(guān)能力
  • 提供擴(kuò)展屏幕或鏡像屏等多屏能力
  • 虛擬屏幕的管理
  • Display 事件的通知,如屏幕亮滅、顯示大小、橫豎屏、凍結(jié)等事件

窗口管理流程分析

創(chuàng)建窗口

窗口的創(chuàng)建從 Ability 的 OnStart 聲明周期函數(shù)中觸發(fā)。

  • Ability 持有 AbilityWindow,AbilityWindow 則持有 WindowScene
  • WindowScene 在初始化階段會(huì)創(chuàng)建一個(gè)主窗口
  • 窗口的創(chuàng)建會(huì)調(diào)用 Window::Create 函數(shù)創(chuàng)建 WindowImpl 對(duì)象,并調(diào)用 WindowManagerService::CreateWindow 函數(shù)
  • 在 WindowManagerService 中,則通過(guò) WindowController 生成 windowId 并創(chuàng)建 WindowNode
  • 最后通過(guò) WindowRoot 將 WindowNode 管理起來(lái)

AbilityWindow 與 WindowScene 的關(guān)系

AbilityWindow 是 Ability 持有用來(lái)在生命周期函數(shù)中生成或調(diào)用窗口生命周期的類,操作窗口的類則是 WindowScene。WindowScene 由 WindowManager client 端提供,用于屏蔽元能力與窗口管理之間強(qiáng)耦合,方便后續(xù)無(wú)屏幕的小型設(shè)備裁剪顯示系統(tǒng)。

WindowImpl 與 WindowNode 的區(qū)別

WindowImpl 是 IWindow 的實(shí)現(xiàn),是提供給上層操作窗口的接口。WindowNode 與 WindowImpl 一一對(duì)應(yīng),是 WMS 中操作窗口的實(shí)體,其通過(guò) WindowRoot 管理。* WindowNode 內(nèi)部維護(hù)了一個(gè) windowToken_對(duì)象,該對(duì)象的指向就是 WindowImpl。

  • WindowImpl 負(fù)責(zé)對(duì)應(yīng)用于其他子模塊提供操作窗口的能力,能力通過(guò) WMS 與 RenderService 實(shí)現(xiàn)。WindowImpl 在創(chuàng)建時(shí)會(huì)創(chuàng)建 RSSurfaceNode 對(duì)象,該對(duì)象則會(huì)向 RenderService 提交一條窗口創(chuàng)建的事務(wù)。
  • 在 WindowNode 創(chuàng)建時(shí),WindowImpl 會(huì)將 RSSurfaceNode 的引用傳遞給 WindowNode。
  • WindowNode 則是 WMS 中對(duì)窗口的抽象,內(nèi)部維護(hù)了父子關(guān)系、顯示隱藏、布局大小等。

WindowRoot 的作用

顧名思義,WindowRoot 管理著所有的窗口。其內(nèi)部維護(hù)著 WindowNode 與 WindowId 的 map,提供了對(duì) WindowNode 的增刪改查操作,并且提供了最小化所有窗口、最大化窗口、設(shè)置布局策略等能力。

WindowImpl 的管理

主窗口的 WindowImpl 由 WindowScene 持有,子窗口則由主窗口自己管理維護(hù)。在 Ability 銷毀時(shí),會(huì)通知 WindowScene 銷毀主窗口,主窗口則會(huì)銷毀所有的子窗口,并通知 WMS 中的 WindowRoot 銷毀相應(yīng)的 WindowNode。

窗口的顯示

創(chuàng)建的流程僅僅是創(chuàng)建了 WindowImpl 與 WindowNode,并未涉及布局與渲染,那么窗口是如何顯示的呢?

  • 窗口的顯示也是通過(guò) Ability 觸發(fā),在其生命周期函數(shù) OnActive/OnForground 內(nèi),會(huì)調(diào)用到 WindowScene::GoForeground 中。
  • 窗口的顯示也可以通過(guò)在 ets 中手動(dòng)調(diào)用 window.show()觸發(fā)
  • 調(diào)用主窗口的 show 方法,即 WindowImpl::Show
  • 在其中會(huì)做一些判斷,比如桌面的顯示,會(huì)將其他 app 都最小化
  • 接著 WindowImpl 通過(guò) WMS 調(diào)用 WindowRoot 的 AddWindowNode 函數(shù),并將 windowId 傳遞過(guò)來(lái)
  • WindowRoot 通過(guò) windowId 查找 WindowNode,并通過(guò) diaplayId 創(chuàng)建或者獲取 WindowNodeContainer 對(duì)象,并調(diào)用其 AddWindowNode 函數(shù)
  • 在 WindowNodeContainer 內(nèi),會(huì)判斷 window 類型并將 window 加入到相應(yīng)的父窗口中(appRoot、belowRoot、aboveRoot)
  • 接著會(huì)處理 WindowNode 中父子關(guān)系的映射,并調(diào)用 DMS 服務(wù)的 UpdateRSTree
  • 處理所有窗口的 z 值,并按規(guī)則設(shè)置到每個(gè)窗口的 surfaceNode 中,該操作會(huì)向 RenderService 提交一條事務(wù)。
  • z 值的規(guī)則為:從 belowRoot->appRoot->aboveRoot,z 值越來(lái)越大。同一類型中,window 的 priority 越大,z 值越大。同一 priority 的情況下,窗口被添加的越晚,z 值越大。z 值越大,排列越靠上。
  • WindowNodeContainer 維護(hù)著兩種布局策略,CASCADE 與 TILE,在維護(hù)完 z 值與父子關(guān)系等操作后,會(huì)調(diào)用布局策略的 AddWindowNode 函數(shù)
  • 下面的流程均基于 CASCADE 策略
  • 判斷窗口 Visibility,為 false 則不布局
  • 判斷避開(kāi)區(qū)域,限制窗口大小。如果是全屏窗口,則寬高與 display 一致。
  • 如果是懸浮窗口,默認(rèn)大小設(shè)置為 display 的 3/4,并設(shè)置一個(gè) Decorate 矩形,該矩形為窗口增加了 37vp、5vp、5vp、5vp(上右下左),該矩形用于拖拽與平移
  • 如果設(shè)置了 WINDOW_FLAG_PARENT_LIMIT 標(biāo)記并且是子窗口,限制子窗口的大小不能超過(guò)父窗口
  • 為懸浮窗口設(shè)置 hotZone,上下左右均增加 20vp。該區(qū)域用于多模輸入模塊判斷手指是否落在 window 內(nèi),也就是增加判斷范圍。
  • 調(diào)用窗口的 surfaceNode 的 SetBounds 函數(shù),指定窗口的坐標(biāo)與大小。該函數(shù)也會(huì)向 RenderService 提交一條事務(wù)。
  • 迭代子窗口,為其執(zhí)行同樣的流程
  • 總結(jié)下來(lái),窗口的顯示就是處理了父子關(guān)系、窗口先后關(guān)系,以及確定了坐標(biāo)與大小,最后向 RenderService 提交事務(wù),等待下個(gè) vsync 的繪制

WindowNodeContainer 的作用

WindowNodeContainer 與 Display 一一對(duì)應(yīng),其管理了單個(gè) Display 中的所有窗口,WindowRoot 則管理了所有的窗口與 WindowNodeContainer。WindowNodeContainer 提供了布局策略的決策與設(shè)置、窗口焦點(diǎn)設(shè)置、窗口排列、避開(kāi)區(qū)域管理、窗口分屏顯示等能力。

布局策略

OH 目前支持兩種策略,CASCADE(層疊)與 TILE(平鋪)。默認(rèn)的布局策略是 CASCADE,分屏顯示也會(huì)將策略切換至 CASCADE。布局策略的主要能力就是決定窗口的排列布局方式、位置與大小。兩種策略的區(qū)別如下:

wKgaomXlvAWALf5cAAAWJdArVoE132.png

總結(jié)

wKgZomXlvAyAHfszAABY-5gLjRM805.png

設(shè)置全屏

設(shè)置全屏可以通過(guò) ets 調(diào)用 window.setFullScreen(true),window 會(huì)占滿全屏,并且狀態(tài)欄與導(dǎo)航欄會(huì)消失。接下來(lái)來(lái)看看底層是如何實(shí)現(xiàn)的。

setFullScreen 會(huì)走到 WindowImpl 中,其中主要做了 3 件事

  • SetWindowMode(WindowMode::WINDOW_MODE_FULLSCREEN)
  • RemoveWindowFlag(WindowFlag::WINDOW_FLAG_NEED_AVOID)
  • 通過(guò) SetSystemBarProperty 將狀態(tài)欄與導(dǎo)航欄的 enable 置為 false

SetWindowMode
代碼會(huì)調(diào)用到 WindowController::SetWindowMode 內(nèi),其中會(huì)對(duì) mode 做一些判斷。針對(duì) FULLSCREEN 的情況,會(huì)最小化其他 app 的 window
接著調(diào)用 WindowNodeContainer::UpdateWindowNode,其中會(huì)調(diào)用布局策略來(lái)更新窗口的布局

RemoveWindowFlag
為窗口的 property 這是 flag 后,同樣會(huì)走到 WindowNodeContainer::UpdateWindowNode 中
與窗口顯示流程一樣,其判斷為全屏窗口后,不會(huì)避開(kāi)狀態(tài)欄與導(dǎo)航欄區(qū)域

SetSystemBarProperty
SetSystemBarProperty 同樣會(huì)在 WindowNodeContainer 中更新窗口
迭代所有窗口,遇到全屏窗口,就將窗口內(nèi)的 SystemBarProperty 與默認(rèn)的對(duì)比,有變化(enable 值不同)就通知訂閱了 systemBarTintChange 事件的組件
即 ets 中:window.on(‘systemBarTintChange’)
systemui 訂閱了該事件,在收到事件后,根據(jù) enable 的值,去調(diào)用 statusBar/navigationBar 窗口的 hide 方法,來(lái)達(dá)到隱藏狀態(tài)欄導(dǎo)航欄的目的

如何設(shè)置全屏并且顯示狀態(tài)欄導(dǎo)航欄

只需要在調(diào)用 window 的 setFullScreen 函數(shù)后,在調(diào)用其 setSystemBarEnable 即可:

window.setSystemBarEnable(['status', 'navigation']).then(() => {})

加載 ui

在 Stage 模式中,我們通過(guò) WindowStage 的 setUIContent 來(lái)加載頁(yè)面,這個(gè)過(guò)程是如何實(shí)現(xiàn)的?WindowStage 是 WMS 提供給前端的一套 api,其通過(guò)調(diào)用 WindowImpl 的 setUIContent 來(lái)實(shí)現(xiàn):

uiContent_ = Ace::UIContent::Create(context_.get(), engine)
uiContent_->Initialize(this, contentInfo, storage)

WindowImpl 會(huì)在合適的時(shí)機(jī),調(diào)用 UIContent 內(nèi)的回調(diào):

  • uiContent_->UpdateViewportConfig(config, reason) 寬高位置等變化
  • uiContent_->UpdateWindowMode(mode)
  • uiContent_->ProcessBackPressed()
  • uiContent_->ProcessKeyEvent(keyEvent)
  • uiContent_->ProcessPointerEvent(pointerEvent)
  • uiContent_->ProcessVsyncEvent(static_cast(timeStamp))
  • uiContent_->UpdateConfiguration(configuration) 系統(tǒng)語(yǔ)言、顏色模式等變化

觸摸事件的傳遞

觸摸事件由多模輸入模塊傳遞到窗口,經(jīng)過(guò)處理后,傳遞給 ACE 中的 UIContent 中。

通過(guò) InputManager 注冊(cè)為窗口輸入事件消費(fèi)者
觸摸事件會(huì)回調(diào)至 WindowInputChannel::HandlePointerEvent 中
如果調(diào)用了窗口的 AddInputEventListener 設(shè)置觸摸監(jiān)聽(tīng),轉(zhuǎn)發(fā)事件至監(jiān)聽(tīng)內(nèi),并且只將 POINTER_ACTION_DOWN 與 POINTER_ACTION_BUTTON_DOWN 傳遞給窗口。
如果是 POINTER_ACTION_MOVE 事件,在下一幀將事件傳遞給窗口。如果是其他事件,立即傳遞給窗口。
在窗口內(nèi),如果是懸浮窗口:

  • POINTER_ACTION_DOWN
    • 判斷手指是否落在窗口之外,窗口 Decorate 矩形內(nèi),如果是,開(kāi)啟拖拽模式
    • 如果觸摸的 window 類型為 WINDOW_TYPE_DOCK_SLICE,開(kāi)始移動(dòng)模式
  • POINTER_ACTION_MOVE
    • 如果開(kāi)啟拖拽模式,根據(jù)手指移動(dòng)的距離,通過(guò) WindowNodeContainer 修改窗口大小
    • 如果開(kāi)啟移動(dòng)模式,根據(jù)手指移動(dòng)的距離,通過(guò) WindowNodeContainer 修改窗口位置
  • 如果開(kāi)啟了開(kāi)啟拖拽或移動(dòng)模式,事件不會(huì)繼續(xù)傳遞,如果未開(kāi)啟,則會(huì)傳遞給 ACE 的 UIContent

Display 管理流程分析

DMS 啟動(dòng)流程

DMS 在啟動(dòng)時(shí)的主要工作就是從 RenderService 獲取屏幕信息,并創(chuàng)建 ScreenGroup 與 Display

通過(guò) RSInterface 注冊(cè)屏幕連接回調(diào),在屏幕連接后,創(chuàng)建 AbsScreen

再通過(guò) RSInterface 獲取屏幕支持的分辨率、刷新率等信息,設(shè)置到 AbsScreen 中

創(chuàng)建 ScreenGroup,將 AbsScreen 添加到 group 中

添加后會(huì)為 AbstractScreen 初始化 RSDisplayNode,并向 RenderService 提交一條 RSDisplayNode 創(chuàng)建的事務(wù)

ScreenGroup 與 AbsScreen 初始化完畢后,會(huì)為 * *

AbsScreen 創(chuàng)建一個(gè) AbstractDisplay
AbstractDisplay 保存了 AbsScreen 中的分辨率刷新率等信息,并且根據(jù)屏幕寬與高,決定虛擬像素比。

通知感興趣的部件,Display 已經(jīng)創(chuàng)建好

WMS 也會(huì)通過(guò) DMS 監(jiān)聽(tīng) Display 的變化,比如大小變化、橫豎屏變化,WMS 會(huì)通知到 WindowNodeContainer 去更新 Display 的狀態(tài)并重新布局所有窗口

如果遇到 BEFORE_SUSPEND 事件,比如進(jìn)入鎖屏狀態(tài),WMS 會(huì)通過(guò) WindowNodeContainer 通知每個(gè)窗口(WindowImpl)更新其狀態(tài)為 STATE_FROZEN,并告知 AMS,讓持有窗口的 Ability 進(jìn)入后臺(tái)狀態(tài)

ScreenGroup 是什么

ScreenGroup 顧名思義是屏幕組,屏幕組中定義了多個(gè)屏幕的連接方式,如擴(kuò)展或鏡像。每個(gè)物理屏幕在連接后都會(huì)加入到默認(rèn)的屏幕組中。屏幕組也可以包含虛擬屏幕。ScreenGroup 與 AbsScreen 都由 AbstractScreenController 管理。

UpdateRSTree

UpdateRSTree 會(huì)在窗口節(jié)點(diǎn)顯示或隱藏時(shí)調(diào)用,其作用就是為 AbsScreen 中的 RSDisplayNode 添加或刪除窗口的 RSSurfaceNode,并向向 RenderService 提交增加或刪除子節(jié)點(diǎn)的事務(wù)。

審核編輯 黃宇

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(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)投訴
  • 子系統(tǒng)
    +關(guān)注

    關(guān)注

    0

    文章

    109

    瀏覽量

    12400
  • DMS
    DMS
    +關(guān)注

    關(guān)注

    0

    文章

    85

    瀏覽量

    16243
  • WMS
    WMS
    +關(guān)注

    關(guān)注

    1

    文章

    107

    瀏覽量

    5640
  • 鴻蒙
    +關(guān)注

    關(guān)注

    57

    文章

    2352

    瀏覽量

    42856
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    了解虛擬電廠的基本概念

    虛擬電廠的基本概念: 虛擬電廠是一種基于現(xiàn)代信息技術(shù)和能源互聯(lián)網(wǎng)的能源管理模式,它將分散的、可再生能源和儲(chǔ)能設(shè)備通過(guò)虛擬化技術(shù)進(jìn)行集成和管理,形成一個(gè)具有集中調(diào)度、統(tǒng)一運(yùn)營(yíng)和優(yōu)化控制的虛擬化電力系統(tǒng)
    的頭像 發(fā)表于 12-24 17:12 ?87次閱讀
    了解虛擬電廠的<b class='flag-5'>基本概念</b>

    Linux應(yīng)用編程的基本概念

    Linux應(yīng)用編程涉及到在Linux環(huán)境下開(kāi)發(fā)和運(yùn)行應(yīng)用程序的一系列概念。以下是一些涵蓋Linux應(yīng)用編程的基本概念
    的頭像 發(fā)表于 10-24 17:19 ?230次閱讀

    【驅(qū)動(dòng)教程】iTOP-RK3568開(kāi)發(fā)板進(jìn)行講解第十三期,主要講解輸入子系統(tǒng),共計(jì)24 講

    6.輸入子系統(tǒng)框架分析 7.輸入子系統(tǒng)關(guān)鍵數(shù)據(jù)結(jié)構(gòu)之間關(guān)系 8.認(rèn)識(shí)輸入子系統(tǒng)源碼以及裁剪 9.編寫一個(gè)最簡(jiǎn)單的設(shè)備驅(qū)動(dòng)層代碼 10.通過(guò)最簡(jiǎn)單設(shè)備驅(qū)動(dòng)代碼
    發(fā)表于 10-11 11:31

    時(shí)序邏輯電路的基本概念、組成、分類及設(shè)計(jì)方法

    時(shí)序邏輯電路是數(shù)字電路中的一種重要類型,它不僅在計(jì)算機(jī)、通信、控制等領(lǐng)域有著廣泛的應(yīng)用,而且對(duì)于理解和設(shè)計(jì)現(xiàn)代電子系統(tǒng)具有重要意義。 1. 時(shí)序邏輯電路的基本概念 時(shí)序邏輯電路(Sequential
    的頭像 發(fā)表于 08-28 11:45 ?1499次閱讀

    伺服系統(tǒng)基本概念和與變頻的關(guān)系

    伺服系統(tǒng)基本概念是準(zhǔn)確、精確、快速定位。這一概念貫穿于伺服系統(tǒng)的設(shè)計(jì)理念和運(yùn)行機(jī)制中。為了實(shí)現(xiàn)這一目標(biāo),伺服系統(tǒng)采用了多種先進(jìn)的控制策略和
    的頭像 發(fā)表于 08-27 15:59 ?404次閱讀

    socket的基本概念和原理

    的通信。它是一個(gè)抽象的概念,用于表示網(wǎng)絡(luò)中的一個(gè)通信實(shí)體。在計(jì)算機(jī)網(wǎng)絡(luò)中,Socket允許應(yīng)用程序通過(guò)網(wǎng)絡(luò)發(fā)送和接收數(shù)據(jù)。Socket的概念最早由UNIX操作系統(tǒng)引入,后來(lái)被廣泛應(yīng)用于各種操作
    的頭像 發(fā)表于 08-16 10:51 ?1161次閱讀

    頻率響應(yīng)的基本概念與測(cè)量方法

    頻率響應(yīng)是電子系統(tǒng)、信號(hào)處理和通信領(lǐng)域中一個(gè)非常重要的概念。它描述了系統(tǒng)對(duì)不同頻率信號(hào)的響應(yīng)特性。頻率響應(yīng)分析可以幫助我們了解系統(tǒng)的性能,優(yōu)
    的頭像 發(fā)表于 07-29 11:19 ?4752次閱讀

    BP網(wǎng)絡(luò)的基本概念和訓(xùn)練原理

    )的多層前饋神經(jīng)網(wǎng)絡(luò)。BP網(wǎng)絡(luò)自1985年提出以來(lái),因其強(qiáng)大的學(xué)習(xí)和適應(yīng)能力,在機(jī)器學(xué)習(xí)、數(shù)據(jù)挖掘、模式識(shí)別等領(lǐng)域得到了廣泛應(yīng)用。以下將對(duì)BP網(wǎng)絡(luò)的基本概念、訓(xùn)練原理及其優(yōu)缺點(diǎn)進(jìn)行詳細(xì)闡述。
    的頭像 發(fā)表于 07-19 17:24 ?1622次閱讀

    卷積神經(jīng)網(wǎng)絡(luò)的基本概念、原理及特點(diǎn)

    基本概念、原理、特點(diǎn)以及在不同領(lǐng)域的應(yīng)用情況。 一、卷積神經(jīng)網(wǎng)絡(luò)的基本概念 卷積神經(jīng)網(wǎng)絡(luò)是一種深度學(xué)習(xí)算法,它由多層卷積層和池化層堆疊而成。卷積層負(fù)責(zé)提取圖像中的局部特征,而池化層則負(fù)責(zé)降低特征的空間維度,同時(shí)增加對(duì)圖像位移的不變性。通過(guò)這種方式,CNN能夠自
    的頭像 發(fā)表于 07-11 14:38 ?1057次閱讀

    八路數(shù)據(jù)分配器的基本概念及工作原理

    八路數(shù)據(jù)分配器是一種常見(jiàn)的電子設(shè)備,用于將一個(gè)輸入信號(hào)分配到多個(gè)輸出端。在本文中,我們將詳細(xì)介紹八路數(shù)據(jù)分配器的基本概念、工作原理、應(yīng)用場(chǎng)景以及設(shè)計(jì)方法。 一、八路數(shù)據(jù)分配器的基本概念 定義:八路
    的頭像 發(fā)表于 07-10 10:40 ?1995次閱讀

    循環(huán)神經(jīng)網(wǎng)絡(luò)的基本概念

    循環(huán)神經(jīng)網(wǎng)絡(luò)的基本概念、循環(huán)機(jī)制、長(zhǎng)短時(shí)記憶網(wǎng)絡(luò)(LSTM)、門控循環(huán)單元(GRU)等方面進(jìn)行介紹。 循環(huán)神經(jīng)網(wǎng)絡(luò)的基本概念 循環(huán)神經(jīng)網(wǎng)絡(luò)是一種時(shí)間序列模型,其基本思想是將序列數(shù)據(jù)中的每個(gè)元素(例如,單詞、時(shí)間點(diǎn)等)作為輸入,通過(guò)循環(huán)結(jié)構(gòu)將前一個(gè)時(shí)間步的
    的頭像 發(fā)表于 07-04 14:31 ?688次閱讀

    串口通信的基本概念

    串口通信(Serial Communications)的基本概念可以歸納為以下幾個(gè)方面:
    的頭像 發(fā)表于 06-12 09:28 ?644次閱讀
    串口通信的<b class='flag-5'>基本概念</b>

    RTC實(shí)時(shí)時(shí)鐘的基本概念和工作原理

    精確的實(shí)時(shí)時(shí)間,并為電子系統(tǒng)提供精確的時(shí)間基準(zhǔn)。本文將詳細(xì)闡述RTC實(shí)時(shí)時(shí)鐘的基本概念、工作原理以及其在現(xiàn)代電子設(shè)備中的應(yīng)用。
    的頭像 發(fā)表于 05-27 15:43 ?3707次閱讀

    鴻蒙應(yīng)用/元服務(wù)開(kāi)發(fā)-窗口概述

    設(shè)置窗口是否可以觸摸和是否可以獲焦。 三、 基本概念 HarmonyOS的窗口模塊將窗口界面分為系統(tǒng)窗口
    發(fā)表于 02-19 10:33

    電源路徑的基本概念

    電源路徑是指電流從電源到負(fù)載的傳輸路徑。在電路中,電源是提供電能的設(shè)備,而負(fù)載則是消耗電能的設(shè)備。電源路徑的穩(wěn)定性和效率對(duì)電路的性能和可靠性有著重要的影響。本文將介紹電源路徑的基本概念。 下圖展示了
    的頭像 發(fā)表于 01-18 15:39 ?827次閱讀
    電源路徑的<b class='flag-5'>基本概念</b>