智能家居DIY连载教程(2)——在实际项目中运用消息队列与邮箱

前言

DIY

回顾上期:

1、智能家居DIY连载教程(1)——如何正确使用 Sensor 框架

1. 第二周任务回顾

我们来回顾一下第二周安排的任务:

1、通过 ENV 工具获取 nrf24l01软件包,并加载到 MDK 工程里面

2、了解多线程间的通信,了解 IPC 中邮箱和消息队列的特性,并能灵活使用,实现 ds18b20 线程与 nrf24l01 线程之间的数据通信

3、修改 nrf24l01 软件包,实现多点通信功能

上述任务的重点,是要学习去灵活运用邮箱和消息队列。

2. 软件包的获取

软件包可以通过 env 工具十分方便的获取到,并且加载到工程里面去,env 工具的下载链接可以在官 找到,env 下载链接:https://www.rt-thread.org/page/download.html (请复制至外部浏览器打开)env 的使用方法可以查看这里:https://www.rt-thread.org/document/site/tutorial/env-video/进行学习。

不过该软件包现在仅仅只是获取到本地,尚未加载到 MDK 工程当中来。我们在 env 中输入 命令回车即可,执行完该命令之后打开 MDK5 工程,发现 nrf24l01 软件包成功加载到工程里面去了,如下图所示:

1、 线程如何将温度数据给 线程/p>

2、如果 线程采集温度数据过快, 线程来不及发送,怎么办/p>

3、如果 线程发送数据过快, 线程来不及采集温度数据,怎么办/p>

这时候,IPC 中的邮箱(mailbox)可以很好的解决以上问题。不过这里,我们需要将邮箱与内存池(mempool)搭配一起使用。往往而言,在实际项目中,邮箱和内存池这两个 IPC 是经常需要配套着一起使用的。为什么,且慢慢看来。

3.2 邮箱工作原理举例介绍

RT-Thread 的文档中心已经有对邮箱和内存池原理上的详细讲解。这里不在赘述。这里通过举一个生活中的例子,去帮助大家理解邮箱和内存池。

如今,很多人购物都是通过电商平台购买,那避免不了是要收快递的。

将温度数据存放到刚刚申请到的内存块里面:

将这个存放着温度数据的内存块的地址给邮箱,然后发送邮件:

线程的入口函数是 ,如下:

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2019年6月22日
下一篇 2019年6月22日

相关推荐