这期内容当中小编将会给大家带来有关如何使用TouchGFX的MVP架构来实现GUI和硬件的双向交互,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。
1.如何理解TouchGFX中Screen的MVP架构
MVP的全称为Model-View-Presenter,Model提供数据,View负责显示,Controller/Presenter负责逻辑的处理。MVP与MVC有着一个重大的区别:在MVP中View并不直接使用Model,它们之间的通信是通过Presenter (MVC中的Controller)来进行的,所有的交互都发生在Presenter内部。
用一句话来概括MVP:所有数据仅能保存在称为 Model 的类对象(简单说就是一种文件)中,Presenter是视图(View)与Model之间的纽带,View只能通过Presenter来读取数据。
MVP优点:
-
模型与视图完全分离,我们可以修改视图而不影响模型;
-
可以更高效地使用模型,因为所有的交互都发生在一个地方——Presenter内部;
-
我们可以将一个Presenter用于多个视图,而不需要改变Presenter的逻辑。这个特性非常的有用,因为视图的变化事件总是比模型的变化频繁;
-
如果我们把逻辑放在Presenter中,那么我们就可以脱离用户接口来测试这些逻辑(单元测试)
Screen概念
在TouchGFX应用程序中,开发者可以根据项目需要创建任意数量的Screen。这里的Screen是指UI元素及其相关的业务逻辑。一个Screen通常包括两个内容:一个View,涵盖该Screen上显示的所有空间;一个Presenter,涵盖该Screen上所有的业务逻辑。
TouchGFX有自己的内存分配方案,它仅分配给最大的View和最大的Presenter,分配的RAM可以在应用程序的所有Screen上重用。
Model
Model类是一个单例,始终处于活动状态,并具有两个目的:
-
存储UI的状态信息。切换Screen时,View和Presenter被释放,因此它们不能用于存储应在Screen切换期间保留的信息。所有,需要Model来存储UI的状态信息。
-
充当与后端系统的接口,在当前活动Screen之间来回传递事件。
Model类有一个自动设置指向当前活动Presenter的指针。当Model中发生更改时,会将更改通知给当前活动的Presenter。这是通过应用程序的Model Listener接口中的方法实现的。
View
View类(或者更具体地说,是从TouchGFX View类派生的用户定义类)包含在当前Screen显示的所有控件。他还包含一个setScreen和一个tearDownScreen函数,当进入、退出当前Screen时,该函数会自动调用。通常,可以在setupScreen函数中设置控件。
View还包含了一个可以指向关联的Presenter的指针。该指针由框架自动设置。使用此指针,你可以将UI事件传递给Presenter。
Presenter
Presenter类(也是从TouchGFX Presenter类派生的用户定义类)负责当前活动Screen的业务逻辑。它将接收来自Model的“后端”事件,以及来自View的UI事件,并决定采取哪种操作。
小结
在MVP架构中,所有数据只能保持在Model的类对象中,Presenter是View与Model之间的纽带,View只能通过Presenter来读取数据,而不能直接读取Model中的数据。
2.使用TouchGFX MVP来实现UI和硬件的双向交互
Model-View-Presenter 软件架构:
2.1 用户通过UI按键控制硬件LED
使用TouchGFXDesigner设计界面,添加toggleButton按钮
利用MVP架构填写代码:
2.2 把CPU使用率参数传递给UI显示
使用TouchGFXDesigner制作cpu实用率的自定义控件,然后将这个控件添加到需要的界面
cpu的使用率算法可以直接在rtthread的github中rt-thread/examples/kernel文件下找到,具体实现原理网上有很多分析的文章,这里就不再分析了。
下边直接把CPU的使用率参数通过Model层发送给Screen。
上述就是小编为大家分享的如何使用TouchGFX的MVP架构来实现GUI和硬件的双向交互了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注亿速云行业资讯频道。
原创文章,作者:carmelaweatherly,如若转载,请注明出处:https://blog.ytso.com/220018.html