前言一、结合MVC和框架分层二、结合RTOS进一步实现MVC三、总结
前言
上篇和上上篇把嵌入式框架分层与MVC分别进行了简单的了解,知道了每个部分的优缺点,现在将两者进行结合,进一步进行学习。
下面是这两篇文章
MVC与嵌入式
嵌入式框架分层
首先要知道,MVC是更多的是在逻辑层面是应用层面实现的,而不是功能层面的。
在之前嵌入式框架的途中那个小例子可以这样表示。
更为详细地调用就是下图的顺序,这样,就把MVC和嵌入式框架相进行结合。在的项目中,每个人负责的部分都可以是不一样的,能够加快进度,业务逻辑层只需要大概知道功能模块层定义的API就可以进行开发了,而负责功能模块层的人,就根据自己提供的API进行功能模块的设计。
我使用的是rt-thread-nano进行的实现,推荐学习一下。
这里仅考虑上层MVC是怎么实现的,也就是仅仅考虑业务逻辑层,功能模块层暂不做讨论。
这里和这个
MVC与嵌入式文章的例子是一样的,几乎是一样的,只是需要添加一个启动业务就可以实现
这个文章的小例子的思路是,根据MVC中的基本模式,分为3个线程,每个线程负责MVC中的其中的一个。
在MVC与嵌入式文章的例子中,还差一个一个启动业务,就构成了一个完成的小demo了。
这个启动业务可以另外开一个线程,作为动态线程,处理完就释放资源即可。
启动业务逻辑:
#define THREAD_PRIORITY 25 #define THREAD_STACK_SIZE 512 #define THREAD_TIMESLICE 5 static rt_thread_t Start_thread = RT_NULL; static void Start_thread_entry(void *parameter) { rt_uint32_t count = 0; //每个功能的启动代码放在这里,等等 Led_Start(); Oled_Start(); Usart_Start(); rt_thread_delete(Start_thread );//删除线程 } int Start_thread_sample(void) { Start_thread = rt_thread_create("Start_thread", Start_thread_entry, RT_NULL, THREAD_STACK_SIZE, THREAD_PRIORITY, THREAD_TIMESLICE); if (Start_thread != RT_NULL) rt_thread_startup(Start_thread); return 0; }三、总结
最简单的RTOS与MVC以及框架分层就是下图,分别用不同的线程实现不同的逻辑,这样就结合MVC与嵌入式框架实现了最简单的方式。
更为复杂的方式:
控制器可以不唯一:不同控制器可以设置不同的线程进行输入
逻辑业务:也可以分为多个线程实现,将逻辑业务分层多个小部分实现。
视图业务:视图根据可以由多个表现形式,不同表现形式也可以用不同的线程表现。
这里仅仅是对最简单的情况进行了讨论,MVC和框架分层的部分,也只是对了应用层和业务逻辑层进行了讨论,实际上,使用这个思维也是在这两个层进行讨论的。嵌入式框架分层中,其他层大部分是不需要做改变的,就能将MVC的设计思路用到嵌入式里面了。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)