MVC与嵌入式框架分层

MVC与嵌入式框架分层,第1张

MVC与嵌入式框架分层

文章目录

前言一、结合MVC和框架分层二、结合RTOS进一步实现MVC三、总结


前言

上篇和上上篇把嵌入式框架分层与MVC分别进行了简单的了解,知道了每个部分的优缺点,现在将两者进行结合,进一步进行学习。


下面是这两篇文章

MVC与嵌入式
嵌入式框架分层

一、结合MVC和框架分层

首先要知道,MVC是更多的是在逻辑层面是应用层面实现的,而不是功能层面的。

在之前嵌入式框架的途中那个小例子可以这样表示。


更为详细地调用就是下图的顺序,这样,就把MVC和嵌入式框架相进行结合。在的项目中,每个人负责的部分都可以是不一样的,能够加快进度,业务逻辑层只需要大概知道功能模块层定义的API就可以进行开发了,而负责功能模块层的人,就根据自己提供的API进行功能模块的设计。

二、结合RTOS进一步实现MVC

我使用的是rt-thread-nano进行的实现,推荐学习一下。
这里仅考虑上层MVC是怎么实现的,也就是仅仅考虑业务逻辑层,功能模块层暂不做讨论。

这里和这个
MVC与嵌入式文章的例子是一样的,几乎是一样的,只是需要添加一个启动业务就可以实现中的小例子,也就是一个小demo想要大概了解,可以进去看看。

这个文章的小例子的思路是,根据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的设计思路用到嵌入式里面了。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5707625.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存