如何用消息队列传递结构体数据

发布于 2020-09-17 16:30:07

各位前辈好。请问如何用消息队列传递结构体数据的变量?实在愚钝,请各位指点。

查看更多

关注者
0
被浏览
368
cheney
cheney 2020-09-22

官方文档里面有示例呢,可以在线程间通信章节找到。

struct msg
{
    rt_uint8_t *data_ptr;    /* 数据块首地址 */
    rt_uint32_t data_size;   /* 数据块大小   */
};

void send_op(void *data, rt_size_t length)
{
    struct msg msg_ptr;

    msg_ptr.data_ptr = data;  /* 指向相应的数据块地址 */
    msg_ptr.data_size = length; /* 数据块的长度 */

    /* 发送这个消息指针给 mq 消息队列 */
    rt_mq_send(mq, (void*)&msg_ptr, sizeof(struct msg));
}

void message_handler()
{
    struct msg msg_ptr; /* 用于放置消息的局部变量 */

    /* 从消息队列中接收消息到 msg_ptr 中 */
    if (rt_mq_recv(mq, (void*)&msg_ptr, sizeof(struct msg)) == RT_EOK)
    {
        /* 成功接收到消息,进行相应的数据处理 */
    }
}
3 个回答
HappyTime
HappyTime 2020-09-18

同楼上,传过去指针,接收的地方再转换成结构体类型。传这种指针邮箱比较方便。

撰写答案

请登录后再发布答案,点击登录

发布
问题

分享
好友

手机
浏览

扫码手机浏览