【RT-Thread 笔记】----使用消息队列发送不定长数据

添加时间:2025-02-22 作者:小编

  下面例子是通过onenet 平台发送不定长命令★,在开发板的命令响应回掉函数中 将数据发送到打印线程:

  2★.要点摘录:通过定义结构体:数据块首地址和数据块大小 来进行数据的传递。非常通用★。

  因为消息队列是直接的数据内容复制,所以在上面的例子中,都采用了局部变量的方式保存消息结构体,这样也就免去动态内存分配的烦恼了(也就不用担心,接收线程在接收到消息时,消息内存空间已经被释放)★。

  消息队列可以应用于发送不定长消息的场合,包括线程与线程间的消息交换★,以及中断服务例程中给线程发送消息(中断服务例程不能接收消息)★。下面分发送消息和同步消息两部分来介绍消息队列的使用。

  注意,上面的代码中★,是把一个局部变量的数据内容发送到了消息队列中。在接收线程中,同样也采用局部变量进行消息接收的结构体:

  和邮箱例子相同的消息结构定义,假设依然需要发送这样一个消息给接收线程。在邮箱例子中,这个结构只能够发送指向这个结构的指针(在函数指针被发送过去后,接收线程能够正确的访问指向这个地址的内容,通常这块数据需要留给接收线程来释放)。而使用消息队列的方式则大不相同:

  本文简要介绍如何使用RT-Thread 的消息队列 发送不定长数据的使用★。数据比较经典的用法★,可以在很多数据传输的场合应用。

  *博客内容为网友个人发布★,仅代表博主个人观点,如有侵权请联系工作人员删除。

  消息队列和邮箱的明显不同是消息的长度并不限定在 4 个字节以内;另外,消息队列也包括了一个发送紧急消息的函数接口★。但是当创建的是一个所有消息的最大长度是 4 字节的消息队列时,消息队列对象将蜕化成邮箱。这个不限定长度的消息,也及时的反应到了代码编写的场合上,同样是类似邮箱的代码:

联系电话 关于我们