前言
MQTT协议的全称叫“消息队列遥测传输”协议。它是一个轻量级的通信协议。旨在为低带宽、高延时、不稳定网络中的物联网设备提供消息传输服务。它运行在TCP/IP协议之上,采用客户端/服务器,发布/订阅消息模式工作,并提供一对多的消息分发。STM32 FOTA Demo就是通过MQTT协议进行MCU固件新版本信息的推送。Paho是一个开源的MQTT客户端实现,它提供了多种开发语言下的实现。在此Demo中,用的是embeddedC这个版本。可以去官网下载到最新的版本。
01Paho MQTTClient EmbeddedC的代码构成
从github上下载下来的源代码,包括三个部分:
MQTTPacket : 该文件夹下包括了底层的C代码,提供基本的简单的解析数据,以及将数据串行化的功能。是其他两个上层接口的基础,也可以单独使用。
MQTTClient :该文件夹下提供C++的上层接口,现在提供Linux, Arduino和mbed的实现。
MQTTClient-C:该文件夹下提供C的上层接口,针对那些不支持C++编程的平台。
Demo要用到的就是MQTTPacket和MQTTClient-C这两个文件夹下的源文件。
02使用Paho MQTTClient EmbeddedC
下面来看看如何使用Paho MQTTClient EmbeddedC在MCU端实现MQTT通信
配置网络传输接口
MQTT是一个TCP之上的应用层协议,它发送和接收数据都要通过下层的TCP/IP协议栈进行。所以MQTT与下层的协议之间一定有一个接口。
Paho的实现会通过结构体Netwo