溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

如何使用TouchGFX的MVP架構(gòu)來實(shí)現(xiàn)GUI和硬件的雙向交互

發(fā)布時間:2021-12-18 13:37:37 來源:億速云 閱讀:737 作者:柒染 欄目:互聯(lián)網(wǎng)科技

這期內(nèi)容當(dāng)中小編將會給大家?guī)碛嘘P(guān)如何使用TouchGFX的MVP架構(gòu)來實(shí)現(xiàn)GUI和硬件的雙向交互,文章內(nèi)容豐富且以專業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

1.如何理解TouchGFX中Screen的MVP架構(gòu)

MVP的全稱為Model-View-Presenter,Model提供數(shù)據(jù),View負(fù)責(zé)顯示,Controller/Presenter負(fù)責(zé)邏輯的處理。MVP與MVC有著一個重大的區(qū)別:在MVP中View并不直接使用Model,它們之間的通信是通過Presenter (MVC中的Controller)來進(jìn)行的,所有的交互都發(fā)生在Presenter內(nèi)部。
用一句話來概括MVP:所有數(shù)據(jù)僅能保存在稱為 Model 的類對象(簡單說就是一種文件)中,Presenter是視圖(View)與Model之間的紐帶,View只能通過Presenter來讀取數(shù)據(jù)。
   MVP優(yōu)點(diǎn):

  • 模型與視圖完全分離,我們可以修改視圖而不影響模型;

  • 可以更高效地使用模型,因?yàn)樗械慕换ザ及l(fā)生在一個地方——Presenter內(nèi)部;

  • 我們可以將一個Presenter用于多個視圖,而不需要改變Presenter的邏輯。這個特性非常的有用,因?yàn)橐晥D的變化事件總是比模型的變化頻繁;

  • 如果我們把邏輯放在Presenter中,那么我們就可以脫離用戶接口來測試這些邏輯(單元測試)

Screen概念
在TouchGFX應(yīng)用程序中,開發(fā)者可以根據(jù)項(xiàng)目需要創(chuàng)建任意數(shù)量的Screen。這里的Screen是指UI元素及其相關(guān)的業(yè)務(wù)邏輯。一個Screen通常包括兩個內(nèi)容:一個View,涵蓋該Screen上顯示的所有空間;一個Presenter,涵蓋該Screen上所有的業(yè)務(wù)邏輯。
TouchGFX有自己的內(nèi)存分配方案,它僅分配給最大的View和最大的Presenter,分配的RAM可以在應(yīng)用程序的所有Screen上重用。
Model
Model類是一個單例,始終處于活動狀態(tài),并具有兩個目的:

  1. 存儲UI的狀態(tài)信息。切換Screen時,View和Presenter被釋放,因此它們不能用于存儲應(yīng)在Screen切換期間保留的信息。所有,需要Model來存儲UI的狀態(tài)信息。

  2. 充當(dāng)與后端系統(tǒng)的接口,在當(dāng)前活動Screen之間來回傳遞事件。
    Model類有一個自動設(shè)置指向當(dāng)前活動Presenter的指針。當(dāng)Model中發(fā)生更改時,會將更改通知給當(dāng)前活動的Presenter。這是通過應(yīng)用程序的Model Listener接口中的方法實(shí)現(xiàn)的。

View
View類(或者更具體地說,是從TouchGFX View類派生的用戶定義類)包含在當(dāng)前Screen顯示的所有控件。他還包含一個setScreen和一個tearDownScreen函數(shù),當(dāng)進(jìn)入、退出當(dāng)前Screen時,該函數(shù)會自動調(diào)用。通常,可以在setupScreen函數(shù)中設(shè)置控件。
View還包含了一個可以指向關(guān)聯(lián)的Presenter的指針。該指針由框架自動設(shè)置。使用此指針,你可以將UI事件傳遞給Presenter。
Presenter
Presenter類(也是從TouchGFX Presenter類派生的用戶定義類)負(fù)責(zé)當(dāng)前活動Screen的業(yè)務(wù)邏輯。它將接收來自Model的“后端”事件,以及來自View的UI事件,并決定采取哪種操作。
小結(jié)
在MVP架構(gòu)中,所有數(shù)據(jù)只能保持在Model的類對象中,Presenter是View與Model之間的紐帶,View只能通過Presenter來讀取數(shù)據(jù),而不能直接讀取Model中的數(shù)據(jù)。

2.使用TouchGFX MVP來實(shí)現(xiàn)UI和硬件的雙向交互

Model-View-Presenter 軟件架構(gòu):

如何使用TouchGFX的MVP架構(gòu)來實(shí)現(xiàn)GUI和硬件的雙向交互
2.1 用戶通過UI按鍵控制硬件LED

使用TouchGFXDesigner設(shè)計(jì)界面,添加toggleButton按鈕

如何使用TouchGFX的MVP架構(gòu)來實(shí)現(xiàn)GUI和硬件的雙向交互

利用MVP架構(gòu)填寫代碼:
如何使用TouchGFX的MVP架構(gòu)來實(shí)現(xiàn)GUI和硬件的雙向交互
2.2 把CPU使用率參數(shù)傳遞給UI顯示

使用TouchGFXDesigner制作cpu實(shí)用率的自定義控件,然后將這個控件添加到需要的界面

如何使用TouchGFX的MVP架構(gòu)來實(shí)現(xiàn)GUI和硬件的雙向交互

cpu的使用率算法可以直接在rtthread的github中rt-thread\examples\kernel文件下找到,具體實(shí)現(xiàn)原理網(wǎng)上有很多分析的文章,這里就不再分析了。
下邊直接把CPU的使用率參數(shù)通過Model層發(fā)送給Screen。
如何使用TouchGFX的MVP架構(gòu)來實(shí)現(xiàn)GUI和硬件的雙向交互



上述就是小編為大家分享的如何使用TouchGFX的MVP架構(gòu)來實(shí)現(xiàn)GUI和硬件的雙向交互了,如果剛好有類似的疑惑,不妨參照上述分析進(jìn)行理解。如果想知道更多相關(guān)知識,歡迎關(guān)注億速云行業(yè)資訊頻道。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI