Qt/C++编写的mqtt调试助手使用说明

Qt/C++编写的mqtt调试助手使用说明
一、使用说明

  1. 第一步 , 选择协议前缀 , 可选mqtt://、mqtts://、ws://、wss://四种 , 带s结尾的是走ssl通信 , ws表示走websocket通信 。 一般选默认的mqtt://就好 。
  2. 第二步 , 填写服务所在主机地址 , 可以是IP地址也可以是网址 , 只要真实存在的就行 。
  3. 第三步 , 填写通信所用端口号 , mqtt默认端口号是1883 , 以实际真实端口号为准 。
  4. 第四步 , 填写资源路径 , 这个要websocket通信才需要填写 。
  5. 第五步 , 选择协议版本 , 这个要和实际的一致 , 比如服务器不支持5.0 , 而这里选择的5.0则会失败 。 一般服务器都会支持所有协议 , 因为在通信过程中会告知当前用哪个协议 。
  6. 第六步 , 填写客户端唯一编号 , 这个可选 , 如果服务器要求一定要填写则填写 , 不然通信会失败 。
  7. 第七步 , 单击启动服务按钮 , 连接成功后会变成断开服务按钮 。
  8. 第八步 , 发布主题 , 先要在主题文本框中输入主题字符串 , 再单击发布主题按钮 。
  9. 第九步 , 订阅主题 , 先要在主题文本框中输入主题字符串 , 再单击订阅主题按钮 。
  10. 既可以发布主题 , 也可以订阅主题 , 还可以取消订阅的主题 。
  11. 有些场景只需要发布主题 , 比如下位机采集到的数据 , 则只需要发布主题带上数据内容即可 。
  12. 有些场景只需要订阅主题 , 比如上位机通过订阅主题获取到最新的数据 , 订阅对应主题后 , 有新的主题数据发布 , 就会立即更新通知订阅过的客户端 。
  13. 发布的主题和订阅的主题 , 标识可以相同也可以不同 , 同一个标识的才会触发通知机制 , 一旦发布主题就会触发通知订阅过该主题的客户端 。
  14. 切换到高级参数选项卡 , 有一堆高级参数可以设置 , 比如用户验证 , 这样可以防止非法用户访问 。 一般合法的用户信息需要在mqtt服务的后台设置 , 相当于权限控制 。

【Qt/C++编写的mqtt调试助手使用说明】 //实例化mqtt采集类IotMqttBase *mqttBase = new IotMqttBase(this);//取出mqtt通信对象QMqttClient *mqttClient = mqttBase->getMqttClient();//关联收到数据信号connect(mqttClient SIGNAL(messageReceived(QByteArray QMqttTopicName)) this SLOT(messageReceived(QByteArray QMqttTopicName)));//设置通信参数/主机地址和端口参数必须设置mqttClient->setHostname(\"broker.emqx.io\");mqttClient->setPort(1883);//还有其他一堆参数根据情况按需设置.....//连接到服务器mqttBase->connectToHost();//从服务器断开mqttBase->disconnectFromHost();//发布主题mqttClient->publish(\"qtmqtt/topic\" \"hello\");//订阅主题mqttClient->subscribe(\"qtmqtt/topic\");二、功能特点
  1. 支持多种物联网通信协议 , 包括modbus和mqtt 。
  2. 协议方式支持串口com通信、网络tcp通信、网络udp通信、网络websocket通信 。
  3. 数据规则支持rtu模式和网络模式 , 网络rtu模式也就是modbus rtu over tcp/udp/websocket 。 相当于modbus串口协议数据走网络方式通信 。
  4. 支持批量连续写入寄存器数值和单个写入寄存器数值 。
  5. 支持数据顺序格式的设置 , 比如大端小端 , 高字节在前低字节在前的设置 。 支持Short_AB、Short_BA、Long_ABCD、Long_CDAB、Long_BADC、Long_DCBA、Float_ABCD、Float_CDAB、Float_BADC、Float_DCBA等 。
  6. 支持数据位字节数设置 , 比如短整型、长整型、浮点型等 。 常规的一般是2字节表示一个数据位 , 也有设备是4字节表示一个数据位 , 还有4字节浮点数的形式 。 后期可能还有8字节一个数据位 。
  7. 支持mqtt协议 , 可设置主机地址和端口、协议版本、唯一标号、用户名称、用户密码 。
  8. 支持mqtt发布主题、订阅主题、取消订阅 。
  9. 定时自动发布主题 , 可设置保活时间、超时时间、过期时间 。 mqtt通信自动重连 。
  10. mqtt模拟数据收发支持多种格式 , 文本、json、base64、hex等 。
  11. mqtt同时支持websocket方式 , 还支持ssl方式通信 。
  12. 支持多种采集通讯方式 , 包括串口和网络等 , 可自由拓展其他方式 。 可同时采集多路 。
  13. 自定义采集间隔(精确到毫秒)和超时次数 , 超时后自动将离线的文件从轮询队列中移除 , 加快轮询速度 。
  14. 可设置最大超时重连间隔 , 将离线的设备重新探测一次 , 保证设备恢复正常后能够重新加入轮询队列 。
  15. 同时提供了设备模拟工具 , 支持各种协议 , 支持设定多个设备的数据值 。
  16. 模拟工具可随机切换模拟数据值 , 要正常随机数据就模拟生成正常范围的数据 , 要报警数据就模拟生成报警范围的数据 。 方便测试 。
  17. 多线程采集和解析数据 , 以信号的方式发送解析结果 , 不卡主线程 。
  18. 架构采用基类继承方式 , 通用处理在基类 , 极易拓展其他通信方式 。
  19. 接口友好 , 使用非常简单 , 设置要采集的地址集合、开始索引集合、采集数量集合、数据顺序格式四个参数即可 。 会自动组装对应协议的数据发送 。
  20. 采集后的数据以统一格式的信号发出来 , 非常简单易用 。 支持浮点型数据 。
  21. 采集指令有优先级 , 如果有自定义的数据需要优先执行 。 可以将优先级高的指令调用append方法插入即可 。 可批量采集也可单个采集 。
  22. 支持利用现有的通信链路发送自定义数据 , 这个数据可以不是标准的modbus协议 , 比如有时候需要一些私有协议数据 , 利用现有链路发送下去执行 。
  23. 多线程高并发 , 每个端口采集都是一个独立的线程 , 互不干扰 , 支持成千上万个设备采集 。
  24. 代码做了兼容 , 支持各种编译器 , 同时支持Qt4、Qt5、Qt6 。
  25. 跨平台 , 支持windows、linux、mac、嵌入式linux、android、各种国产系统和开发板等 。
三、相关链接
  1. 体验地址:https://pan.baidu.com/s/1ZxG-oyUKe286LPMPxOrO2A 提取码:o05q 文件名:bin_iottool.zip
  2. 国内站点:https://gitee.com/feiyangqingyun
  3. 国际站点:https://github.com/feiyangqingyun

    推荐阅读