Mqtt_client ROS环境下 Struct 字节流 转换 并将将字节流所包含的解码为结构体

任务:Mqtt_client ROS环境下:
任务一: 将struck 转为字节流格式;
目前的思路是利用C++ 中的memcpy函数,函数使用相关具体介绍【1】、使用示例参考【2】。参考例程子啊结构体中写了一下几行代码,并成功运行(成功将结构体中的内容转换成字节流)

输出如下:

任务二:将字节流所包含的解码为结构体
实现对字节流转换为结构体,,成功运行的代码如下所示:


任务三:字节流的长度问题(字节对齐)
由任务二我们可以看到数据长度为24,但实际上数据长度为21,因为VC和GCC(MinGW)的默认设置为8字节对齐,代码会自动补上凑齐几个零。因此,为了解决和远程主机是否可以对齐的问题。因此修改结构体末尾加上

__attribute__((packed))


其运行结果如图:

或者在程序最上方加上 #pragma pack (n) 其中n为数据结构的对齐值
str_convert.cpp
任务四:将字节流以MQTT消息发送出去
参考网站:[ubunbtu下基于c++实现MQTT客户端通信]
使代码能够连接到 MQTT 代理、向代理发布消息、订阅主题和接收发布的消息。

mqtt_client.hpp

#ifndef __MQTT_CLIENT_TO_CLOUD_HPP__
#define __MQTT_CLIENT_TO_CLOUD_HPP__

#include <mqtt/async_client.h>   // mqtt库头文件
#include <mqtt/topic.h>          // mqtt库头文件

namespace cloud {
   
   
    //! Handler on cloud message
    using message_handler = std::function<void(const std::string&)>;

    class mqtt_client
    {
   
   
    public:
        
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值