一个高性能、高稳定性的跨平台MQTT客户端——mqttclient配置及裁剪工具

2023-05-16

文章目录

  • mqttclient配置及裁剪工具
  • salof相关的配置
  • 使用mqttclient裁剪配置工具

mqttclient配置及裁剪工具

  • MQTT_TOPIC_LEN_MAX

    配置客户端支持最大的主题名长度,主题是支持通配符的,如果主题太长则会被截断,默认值为64。

        #define     MQTT_TOPIC_LEN_MAX                  64
    
  • MQTT_ACK_HANDLER_NUM_MAX

    配置mqtt等待应答列表的最大记录个数,对于qos1、qos2服务质量有要求的可以将其设置大一点,当然也必须资源跟得上,它主要是保证qos1、qos2的mqtt报文能准确到达服务器,默认值为64。

        #define     MQTT_ACK_HANDLER_NUM_MAX            64
    
  • MQTT_DEFAULT_BUF_SIZE

    默认的读写数据缓冲区的大小,根据要收发数据量修改即可,默认值为1024。

        #define     MQTT_DEFAULT_BUF_SIZE               1024
    
  • MQTT_DEFAULT_CMD_TIMEOUT

    默认的命令超时,它主要是用于socket读写超时(还包括等待响应的时间、重连等待时间等),默认值为5000。

        #define     MQTT_DEFAULT_CMD_TIMEOUT            5000
    
  • MQTT_MAX_CMD_TIMEOUT

    设置最大的命令超时时间,默认值是20000。

        #define     MQTT_MAX_CMD_TIMEOUT                20000
    
  • MQTT_MIN_CMD_TIMEOUT

    设置最小的命令超时时间,默认值是1000。

        #define     MQTT_MIN_CMD_TIMEOUT                1000
    
  • MQTT_KEEP_ALIVE_INTERVAL

    设置默认的保活时间,它主要是保证MQTT客户端与服务器的保持活性连接,单位为,默认值为50。比如MQTT客户端与服务器在指定时间间隔内没有发送数据,有没有接收到数据,此时MQTT客户端会发送一个心跳包,确认一下这个连接是否存在,如果收到服务器的应答,那么说明这个连接还是存在的,可以随时收发数据,而如果不存在了,就尝试重连或者清除会话。

        #define     MQTT_KEEP_ALIVE_INTERVAL            50         // unit: second
    
  • MQTT_VERSION

    选择MQTT协议的版本,默认为4,表示使用MQTT 3.1.1版本,而3则表示使用MQTT 3.1版本。

        #define     MQTT_VERSION                        4           // 4 is mqtt 3.1.1
    
  • MQTT_RECONNECT_DEFAULT_DURATION

    设置默认的重连时间间隔,当发生掉线时,会以这个时间间隔尝试重连,默认值为1000。

        #define     MQTT_RECONNECT_DEFAULT_DURATION     1000
    
  • MQTT_THREAD_STACK_SIZE

    MQTT内部维护一个线程,需要设置默认的线程属性信息,MQTT_THREAD_STACK_SIZE表示线程栈的大小,默认值是2048。在linux环境下可以是不需要理会这些参数的,而在RTOS平台则需要配置,如果不使用mbedtls,线程栈2048字节已足够,而使用mbedtls加密后,需要配置4096字节以上

        #define     MQTT_THREAD_STACK_SIZE              2048    // 线程栈
    
  • MQTT_THREAD_PRIO

    设置线程优先级,默认为5。

        #define     MQTT_THREAD_PRIO                    5       // 线程优先级
    
  • MQTT_THREAD_TICK

    设置线程优时间片,默认为50。

        #define     MQTT_THREAD_TICK                    50      // 线程时间片
    
  • MQTT_NETWORK_TYPE_NO_TLS

    设置是否需要支持TLS加密传输,如果定义了该宏,则表示不支持TLS加密传输,否则默认将支持TLS加密传输。

        #define     MQTT_NETWORK_TYPE_NO_TLS
    

salof相关的配置

salof 全称是:Synchronous Asynchronous Log Output Framework(同步异步日志输出框架),它是一个同步异步日志输出框架,可以在空闲时候输出对应的日志信息,并且该库与mqttclient无缝衔接。

  • LOG_LEVEL

    配置对应的日志输出级别,它支持以下4种级别:ERR_LEVEL、WARN_LEVEL、INFO_LEVEL、DEBUG_LEVEL。

        #define BASE_LEVEL      (0)
        #define ERR_LEVEL       (BASE_LEVEL + 1)          /* 日志输出级别:错误级别(高优先级) */
        #define WARN_LEVEL      (ERR_LEVEL + 1)             /* 日志输出级别:警告级别(中优先级) */
        #define INFO_LEVEL      (WARN_LEVEL + 1)            /* 日志输出级别:信息级别(低优先级) */
        #define DEBUG_LEVEL     (INFO_LEVEL + 1)            /* 日志输出级别:调试级别(更低优先级) */
    
        #define         LOG_LEVEL                   WARN_LEVEL      /* 日志输出级别 */
    
  • USE_SALOF

    如果该宏大于0,则表示使用salof指定的后端作为日志输出,反之则使用printf作为日志输出接口。

        #define         USE_SALOF                   (1U)
    
  • SALOF_OS

    设置salof日志库的操作系统,有以下选项:USE_LINUX、USE_TENCENTOS、USE_FREERTOS、USE_RTT。

        #define         SALOF_OS                    USE_LINUX
    
  • USE_IDLE_HOOK

    如果该宏大于0,则表示在操作系统中的空闲钩子函数中输出日志,反之则通过线程异步处理或者同步处理。

        #define         USE_IDLE_HOOK               (0U)
    
  • LOG_COLOR

    如果该宏大于0,则表示输出的日志是带有颜色的(需要终端的支持),反之则没有颜色。

        #define         LOG_COLOR                   (1U)
    
  • LOG_TS

    如果该宏大于0,则表示输出的日志是带有时间戳的,反之则没有时间戳。

        #define         LOG_TS                   (0U)
    
  • LOG_TAR

    如果该宏大于0,则表示输出的日志是带有标签的(任务名字),反之则没有标签。

        #define         LOG_TAR                   (0U)
    
  • SALOF_BUFF_SIZE

    设置日志库salof输出库的buf缓冲区大小,即最大一次性能输出多少个字节。

        #define         SALOF_BUFF_SIZE                   (512U)
    
  • SALOF_FIFO_SIZE

    设置日志库salof的fifo缓冲区大小,即最能缓存多少个字节的日志数据。

            #define         SALOF_FIFO_SIZE             (1024*4U)
    
  • SALOF_TASK_STACK_SIZE

    如果使用了空闲线程输出日志,则配置salof线程栈的大小。

        #define         SALOF_TASK_STACK_SIZE       (2048U)
    
  • SALOF_TASK_TICK

    如果使用了空闲线程输出日志,则配置salof线程栈的时间片大小。

        #define         SALOF_TASK_TICK             (50U)
    

使用mqttclient裁剪配置工具

我们可以通过配置很方便地裁剪我们需要的功能,设置上述MQTT客户端的默认参数,完全不需要手动修改代码,直接使用工具裁剪配置即可。

打开在线mqttclient裁剪配置工具:https://jiejietop.gitee.io/mqtt/mqtt-config.html

它支持裁剪配置相关的头文件,配置客户端默认的一些参数:

mqtt-config-tool01

还支持配置salof同步异步日志相关的信息,以保证日志能正常运作,配置完成后生成对应的代码,然后覆盖掉原本的MQTT客户端配置即可,如果不知道如何配置,那就导入默认的配置即可。

mqtt-config-tool02

如果是初次接触,看不懂上面配置的信息,没关系,我很贴心地准备了配置的宏定义及其描述信息,保证你能看得懂的。

mqtt-config-tool03

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

一个高性能、高稳定性的跨平台MQTT客户端——mqttclient配置及裁剪工具 的相关文章

  • 直流可调稳压电源的Proteus仿真设计(附仿真+论文等资料)

    注意 xff1a 全套资源获取 xff0c 请见文末说明 设计要求 1 输出电压在1 25V 37V可调 xff1b 2 最大输出电流为1 5A xff1b 3 电压调整精度达0 1 xff1b 摘要 直流稳压电源由电源变换器 桥式整流滤波
  • GPT PMBR size mismatch 解决方法

    https blog csdn net agave7 article details 83177858 root 64 debian home liyezhen src sbk debian 32bit build product tool
  • react router路由传参三种方式

    react router路由传参三种方式 xff1a 通过通配符传参 query传参和state传参 1 通配符传参 Route定义方式 xff1a lt Route path 61 39 path name 39 component 61
  • ROS与GAZEBO实时硬件仿真(4)——深入理解与总结

    声明 xff1a 本博客是对博主无人的回忆所写的ROS与GAZEBO实时硬件仿真系列文章的自我理解与总结 xff0c 所写内容是基于该博主的三篇博文的 xff0c 如果有幸被人参考 xff0c 建议先看完该博主的三篇文章再来看这篇文章 三篇
  • 最短路径算法之AStar算法(二) A Star算法需要注意的问题

    上篇文章中证明了A Star算法 xff0c 下面 xff0c 我们来看看该算法中需要注意的几个问题 1 xff0c 在扩展节点M时 xff0c 计算了其后继节点N的F值 xff0c 发现N节点已经在open链表中 xff0c 并且新的F值
  • yolo论文中IOU/AP/MAP/NMS概念详解

    之前在只看了一遍吴恩达神经网络下写了一篇Darknet yolov2的综述 xff0c 最近接着往下学时发现很多基础的概念不是很懂 xff0c 所以这篇解决一下寸疑问题 1 卷积滑动窗口 滑动窗口大家都了解的 xff0c 从图片的左上角开始
  • ANO匿名飞控STM32代码解读(一)任务调度——Ano_Scheduler.c

    我所学习的代码是匿名飞控使用STM32芯片ANO PioneerPro 20190825的版本 匿名飞控的整体代码是跑裸机的 xff0c 任务调度是用STM32F4芯片中的系统时钟计时 xff0c 做了一个任务调度系统 xff0c 举个例子
  • 地面坐标系与机体坐标系的转换和欧拉角

    大家在入门四旋翼飞行器数学模型时第一个遇到的就是坐标系的转换 这篇文章用尽量浅显的语言为大家讲解坐标系的转换的欧拉角 机体坐标系 原点O取在飞机质心处 Xb轴指向机头 Yb轴指向机身右方 Zb指向机身下方 地面坐标系 在地面上选一点Og x
  • 飞桨AIStudio基础操作

    目录 执行和调试 多文件代码编辑 上传Notebook Notebook快捷键 Notebook中使用Shell命令 查看文件夹目录 使用pip来安装自己需要的package 但不支持apt get 查看当前环境中安装的package 持久
  • VSCode与CMake搭配使用之基本配置

    1 首先安装VSCode插件CMake和CMake Tools CMake插件主要功能是CMake语法高亮 自动补全CMake Tools的功能主要是结合VSCode IDE使用CMake这个工具 xff0c 比如生成CMake项目 构建C
  • 九、设置元素等待

    转载于 xff1a http www testclass net selenium python element wait WebDriver提供了两种类型的等待 xff1a 显式等待和隐式等待 显式等待 显式等待使WebdDriver等待
  • Unity Tweak Tool使用

    这年头 xff0c 都讲究个性 Unity刚出来的时候 xff0c 就觉着新奇 xff0c 其他也没啥 xff0c 就是有些小不顺手 最开始使用的Ubuntu Tweak到后来的Gnome Tweak Tool都有点偏 xff0c ubun
  • MYSQL–my.cnf配置中文详解

    basedir 61 path 使用给定目录作为根目录 安装目录 character sets dir 61 path 给出存放着字符集的目录 datadir 61 path 从给定目录读取数据库文件 pid file 61 filenam
  • vscode中C/C++的Clang-format的使用

    一 介绍 Clang format是一个功能强大的格式化工具 在vs code通过C C 43 43 扩展后即可使用Clang format工具进行代码的格式化 其自带的排版格式主要有 xff1a LLVM Google Chromium
  • ShardingJDBC核心概念与快速实战

    目录 ShardingSphere介绍 ShardingSphere特点 ShardingSphere简述 ShardingSphere产品区分 ShardingJDBC实战 核心概念 实战 ShardingJDBC的分片算法 Shardi
  • 野火嵌入式学习笔记:第47讲 按键检测输入

    野火 第一期 Linux系列教学视频之 零基础入门 篇 xff0c 手把手教学 xff0c 从0开始 xff0c 基于野火i MX6ULL Pro MINI开发板 第47讲 检测按键输入 哔哩哔哩 bilibili 检测用户按键3 key按
  • 学习野火嵌入式笔记 第48讲:进程的由来

    野火 第二期 Linux系列教学视频之 内核编程 篇 xff0c 手把手教学 xff0c 硬件基于野火i MX6ULL Pro MINI开发板 野火 第二期 Linux系列教学视频之 内核编程 篇 xff0c 手把手教学 xff0c 硬件基
  • 学习野火嵌入式笔记:第68讲 I.MX^ULL 启动方式

    野火 第三期 Linux系列教学视频之 裸机开发 篇 xff0c 手把手教学 xff0c 基于野火i MX6ULL Pro MINI开发板 哔哩哔哩 bilibili 先了解其芯片手册以及linux开发板的原理图 全篇就在讲启动方式的引脚设
  • C语言 字符串-字符串的匹配

    字符串匹配函数 const char strstr const char str1 const char str2 搜索字符串在另一个字符串中首次出现的位置 const char p 61 strstr 34 how are you 34
  • Lambda表达式

    什么是Lambda表达式 Lambda 表达式是 Java8 新增的重要特性 xff0c Lambda 使 Java 具有了函数式编程的思想 xff0c 它的实质也是由编译器根据表达式推断最终生成原始语法的字节码方式 函数式编程思想是 强调

随机推荐

  • MPU6050多次发送数据,但第一次读取的数据为0

    实际现象并不是第一次数据为0 xff0c 一直读取数据 xff0c 中间也会出现数据为0的现象 xff0c 原因是 xff1a 跟采样频率有关 xff0c 如果采样频率为50Hz xff0c 那么读取数据间隔时间必须大于20ms xff0c
  • gazebo多机仿真时出现的问题解决方法

    多机仿真过程中出现的飞机不动的情况是 xff1a 下面几个步骤要严格执行 xff1a cd PX4 span class token operator span Autopilot git submodule update span cla
  • Linux c多线程与c++多线程的基础写法

    最近工作需要 xff0c 对多线程做了一点了解 xff0c 现在将多线程的创建 xff0c 函数传参做个小结 一 linux c多线程 1 头文件 xff1a include lt pthread h gt 2 创建线程 xff1a pth
  • 姿态误差问题

    前段同学问了一个关于飞机姿态误差的问题 xff0c 将飞机姿态直接做差与px4里面先z轴对齐然后将过渡矩阵的姿态量赋值给滚转俯仰姿态误差对比 xff0c 发现直接做差后在飞机做大的机动时误差量会变大 xff0c 曲线的拟合非常不好 xff0
  • px4 avoidance笔记

    最近在用px4官方的avoidance代码跑硬件避障 xff0c 官方介绍了只要生成符合sensor msgs PointCloud2点云信息就能使用 xff0c 因此为了应用长基线双目 xff0c 没有使用realsense的相机 xff
  • PX4源代码下载编译

    sudo git clone https github com PX4 PX4 Autopilot git recursivegit submodule update init recursivegit submodule update r
  • 踩坑记录

    ERROR Session line number was not unique in database History logging moved to new session 66 在生成tfrecord时 总报如下错误 找了很长时间
  • git强制覆盖本地代码

    git强制覆盖本地 xff1a git fetch all 拉取所有更新 git reset hard origin master 本地代码同步线上最新版本 会覆盖本地所有与远程仓库上同名的文件 git pull git强制覆盖本地命令 x
  • 【毕业设计】基于STM32及OpenMV的云台追踪装置

    目录 修改记录1 摘 要2 整体功能分析3 硬件选型3 1 OpenMV4 Cam H73 2 STM32F103ZET63 3 DS3120舵机3 4 LED补光板3 5 供电及稳压3 6 硬件连接 4 软件功能实现4 1 OpenMV部
  • firewall-cmd 使用总结

    firewalld的简要说明 firewalld firewall cmd firewall offline cmd它们Python脚本 xff0c 通过定义的在 usr lib firewalld下面的xml配置信息 xff0c 在启动时
  • 机架与机柜

    随着计算机网络的发展 xff0c 数据中心的服务器以及网络通信设备等IT设施 xff0c 正逐步向着网络化 机架化的方向发展 机架是用于综合布线 xff0c 安装配线架和理线架 xff0c 实现对电缆和光缆布线系统的管理 在网络机柜中不具备
  • cmake和makefile区别和cmake指定编译器(cmake -G)

    一 cmake和makefile区别 要说明区别 xff0c 我们先要区分下面三类工具 xff1a 1 项目构建生成工具 首先cmake是项目构建生成工具 xff0c cmake的代码可以与平台系统和编译器无关 类似cmake的工具还有au
  • Gazebo使用过程中的问题

    1 运行命令gazebo没有反应 在虚拟机安装好gazebo后 xff0c 使用ALT 43 F2打开命令行运行命令gazebo没有反应 首先尝试内存不够的情况 xff0c 给虚拟机加到了4g内存 没有用 xff0c 运行gazebo还是没
  • 一张图理解板卡硬件调试流程

    最近在调试从焊板厂打样回来的板卡 xff0c 简单总结了下板卡的硬件测试流程 xff0c 如下图 xff1a 写在后面的话 xff1a 我之所以选择做技术这一行 xff0c 是觉得做技术的人简单 直接 xff0c 当你面对一个技术问题 xf
  • 关于Linux进程你所需要知道的一切都在这里!!

    文章目录 进程简单了解进程查看进程进程ID父进程ID父进程与子进程 程序与进程程序进程程序变成进程总结 进程状态进程状态转换启动新进程system fork exce系列函数 终止进程等待进程wait waitpid 进程 说明 xff1a
  • MQTT协议简介及协议原理

    文章目录 MQTT协议MQTT协议简介MQTT通信模型MQTT客户端的功能 xff1a MQTT客户服务器功能 xff1a 消息主题与服务质量MQTT控制报文固定报头可变报头CONNECT报文CONNACK报文 有效载荷 MQTT协议 MQ
  • 你不得不看的图文并茂的MQTT协议通信过程!!!

    文章目录 MQTT连接服务器MQTT订阅主题MQTT发布消息服务质量等级 QoSQoS0的PUBLISH控制报文QoS1的PUBLISH控制报文QoS2的PUBLISH控制报文 取消订阅断开连接 MQTT连接服务器 客户端到服务器的网络连接
  • 一个高性能、高稳定性的跨平台MQTT客户端——mqttclient简介与使用

    文章目录 mqttclient简介与使用优势 xff1a 在线代码生成工具占用资源大小整体框架支持的平台版本问题版权和许可linux平台下测试使用安装cmake xff1a 测试程序编译 amp 运行编译成动态库libmqttclient
  • 一个高性能、高稳定性的跨平台MQTT客户端——mqttclient代码生产工具介绍

    文章目录 mqttclient代码生产工具介绍连接参数配置订阅主题相关的代码配置发布消息相关的代码配置生成代码 mqttclient代码生产工具介绍 mqttclient代码生产工具主要是用于配置MQTT的参数 xff0c 并且生成相应的代
  • 一个高性能、高稳定性的跨平台MQTT客户端——mqttclient配置及裁剪工具

    文章目录 mqttclient配置及裁剪工具salof相关的配置使用mqttclient裁剪配置工具 mqttclient配置及裁剪工具 MQTT TOPIC LEN MAX 配置客户端支持最大的主题名长度 xff0c 主题是支持通配符的