wolfmqtt移植

您所在的位置:网站首页 wolves介绍 wolfmqtt移植

wolfmqtt移植

2024-07-16 17:40| 来源: 网络整理| 查看: 265

1 MQTT介绍

MQTT(Message Queuing Telemetry Transport,消息队列遥测传输协议),是一种基于发布/订阅(publish/subscribe)模式的"轻量级"通讯协议,该协议构建于TCP/IP协议上,由IBM在1999年发布。MQTT最大优点在于,可以以极少的代码和有限的带宽,为连接远程设备提供实时可靠的消息服务。作为一种低开销、低带宽占用的即时通讯协议,使其在物联网、小型设备、移动应用等方面有较广泛的应用。

MQTT是一个基于客户端-服务器的消息发布/订阅传输协议。MQTT协议是轻量、简单、开放和易于实现的,这些特点使它适用范围非常广泛。在很多情况下,包括受限的环境中,如:机器与机器(M2M)通信和物联网(IoT)。其在,通过卫星链路通信传感器、偶尔拨号的医疗设备、智能家居、及一些小型化设备中已广泛使用。

2 MQTT开源项目

网上有很多mqtt的开源项目,根据实际情况选择适合的源码进行移植修改。我们主要选择C语言实现的客户端代码。 开源项目列举如下: 在这里插入图片描述 在这里插入图片描述 经过对比分析paho mqtt和wolfmqtt,考虑到对SSL的支持和接口的简便性,这里选用wolfmqtt。

3 WOLFMQTT移植

3.1 MQTT源码树 这里我们先来看一下wolfmqtt的源码目录结构。源码主要分布在3个目录中,wolfmqtt中是主要的头文件,src目录中是核心c代码,examples下面有各种平台的示例代码。 3.1.1 顶层目录 在这里插入图片描述 3.1.2 头文件 在这里插入图片描述 3.1.3 核心C代码 在这里插入图片描述

3.1.4 测试程序 在这里插入图片描述 测试程序参考mqttclient.c编写。 3.2 网络接口移植

实现对应平台的网络接口函数,网络接口实现代码位于:mqtt/examples/mqttnet.c,主要实现以下4个网络函数: 在这里插入图片描述 3.3 内存接口移植 Mqtt会用到动态内存申请,需要将内存申请函数替换为平台相关的函数。内存接口定义位于:mqtt_types.h 。 #define WOLFMQTT_CUSTOM_MALLOC #define WOLFMQTT_MALLOC(s) malloc((s)) #define WOLFMQTT_FREE§ free(§) 3.4 调试打印接口: Mqtt支持自定义的调试打印函数,用宏定义来申明,接口申明位于:mqtt_types.h。 #define WOLFMQTT_CUSTOM_PRINTF #define PRINTF(f, …) dbg_print( (f “\n”), ##VA_ARGS)

这里将MQTT的PRINTF函数替换为平台的dbg_print函数。 3.5 测试程序 3.5.1 示例代码版本 Linux编译:在wolfmqtt的源码顶层目录运行 automake/configure/make命令编译,编译出的可执行文件位于example目录下对应子目录。 Windows编译:使用vs2015(其他vs版本未测试过)编译example下面对应的工程。 测试程序使用方法参考mqtt_show_usage()函数中提示。

4 MQTT 接口版本

接口描述 Mqtt初始化 连接mqtt服务器 订阅主题 推送主题消息 Mqtt主循环轮询 Mqtt发送ping包,在掉线后应该发起mqtt ping包 取消订阅 断开连接 Mqtt反初始化 Mqtt 额外命令,比如获取版本等功能

5 工具及其他

5.1 mqtt测试后台 网上有很多测试后台程序及开源代码,有需要可以去网上搜索。这里我们调试使用eclipse的后台来做测试。后台配置如下: 在这里插入图片描述 5.2 mqtt测试客户端 测试客户端使用mqttfx。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3