机器人开发项目经验回顾之MQTT使用指南

本项目基于 Paho MQTT C++ 库封装了两种 MQTT 客户端:异步客户端(MqttASyncClient)和同步客户端(MqttSyncClient)。

一、异步客户端 (MqttASyncClient)

1.1 核心特性

  • 基于 mqtt::async_client 实现
  • 支持从 JSON 文件动态加载订阅/发布主题
  • 支持自定义回调处理消息
  • 支持遗愿消息(Last Will)
  • 非阻塞式消息发布

1.2 使用示例

#include "ams/mqtt_async_client.h"
#include "ams/localmqttcallback.h"

// 1. 创建客户端实例
MqttASyncClient client;

// 2. 初始化连接参数
std::string iot_host = "tcp://10.10.10.104:1883";
std::string iot_cert = "/path/to/cert.pem";
std::string iot_user = "allspark@robot";
std::string iot_pwd = "your_password";
std::string will_topic = "allspark/robot/clientId/will";
std::string will_msg = "offline";
std::string car_id = "robot001";

client.initParams(iot_host, iot_cert, iot_user, iot_pwd,
                  will_topic, will_msg, car_id, 
                  0, 20, 3, true);

// 3. 从 JSON 文件加载主题配置
std::string topic_file = "/path/to/ams_topic.json";
client.initTopics(topic_file);

// 4. 设置回调函数
LocalMQTTCallback callback;
callback.setMessageCallback([](mqtt::const_message_ptr msg) {
    std::cout << "收到消息: " << msg->get_topic() 
              << " -> " << msg->to_string() << std::endl;
});

callback.setConnectionLostCallback([](const std::string& cause) {
    std::cout << "连接丢失: " << cause << std::endl;
});

callback.setConnectedCallback([]() {
    std::cout << "连接成功" << std::endl;
});

client.Set
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值