wolfmqtt移植

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。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
对于Miracast在不同平台的移植,需要根据目标平台的操作系统和硬件架构来进行适配和调整。以下是一般的移植步骤: 1. 确定目标平台:首先确定你要将Miracast移植到哪个平台,例如Android、Windows、Linux等。 2. 了解目标平台的支持情况:了解目标平台是否已经提供了Miracast的支持,如果已经支持,则可以直接使用系统提供的API。如果不支持,需要进行额外的移植工作。 3. 移植Miracast协议栈:Miracast协议栈是Miracast的核心组件,它实现了Miracast协议的各个功能。根据目标平台的特点,可能需要对Miracast协议栈进行适配和修改。 4. 移植显示引擎:Miracast的核心功能之一是将手机或电脑上的屏幕内容以视频流的形式传输到另一台设备上。因此需要移植显示引擎,将目标平台上的屏幕内容编码为视频流,并传输给接收设备。 5. 移植网络模块:Miracast使用Wi-Fi网络进行数据传输,需要移植网络模块来支持Wi-Fi连接和数据传输。 6. 进行测试和调试:在移植完成后,需要进行系统级的测试和调试,以确保Miracast功能的正常运行。 需要注意的是,Miracast的移植涉及到底层系统和硬件的适配,对于非专业开发者来说可能会比较复杂。建议在进行Miracast移植前,先对目标平台的相关开发文档进行仔细研究和了解,或者寻找相关的开源项目或社区资源来参考和学习。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值