目录
下载地址:Paho https://github.com/eclipse/paho.mqtt.embedded-c
Paho库目录文件介绍
解压之后得到以下文件目录,其中三个红框圈出的文件夹可以自己看看其中的例程作为自己移植时的一个参考。
MQTTClien:这个是一个基于arduino平台实现MQTT协议通信的例子。
由于我并没有arduino嵌入式平台的开发板,所以我也没有去尝试,稍微看了一下源码感觉对移植帮助不大我就没仔细看了。
MQTTClient-C:这个是一个使用cc3200芯片采用FreeRTOS系统实现MQTT协议的通信的相关源码。
我个人没有接触过cc3200的芯片,再加之这个例程只放了部分文件,感觉对于移植到stm32上没有太多参考意义,不过其中某些结构体的封装使用非常值得借鉴。
MQTTPacket:这个里面主要存放了MQTT协议实现的相关源码,封装报文,解析报文使用的就是这个文件夹中的源码。
MQTTPacket目录如上图,其中samples中是一个C语言的实现例子,可以编译后在自己电脑上运行起来,待会我们参考这个例子来移植MQTT库,现在首先我们了解MQTT协议库的构成,src文件中就是所有Paho封装的源码。
文件名 | |
MQTTConnectClient.c | 包含了作为MQTT客户端的连接服务器,断开连接,发送心跳请求的函数 |
MQTTConnectServer.c | 包含了作为MQTT服务端处理连接请求所需要的函数 |
MQTTDeserializePublish.c | 包含了解析PUBLISH报文的函数,通俗说就是接收消息用的 |
MQTTFormat.c | 包含了报文构造函数,被其它文件中的报文构造函数调用,不直接调用里面的函数 |
MQTTPacket.c | 包含了供其他文件调用的一些解析报文用的函数 |
MQTTSerializePublish.c | 包含了构造PUBLISH,PUBACK,PUBREC,PUBREL报文的函数,通俗说就是发消息用的 |
MQTTSubscribeClient.c | 包含了构造SUBSCRIBE报文的函数,发送订阅主题的请求时使用的 |
MQTTSubscribeServer.c | 包含了解析SUBSCRIBE和构造SUBACK的函数,服务端使用的文件 |
MQTTUnsubscribeClient.c | 包含了构造UNSUBSCRIBE的函数,发送取消订阅主题的时使用 |
MQTTUnsubscribeServer.c | 包含了解析UNSUBSCRIBE和构造UNSUBACK报文的函数,服务端使用的文件 |
Paho库常用函数介绍
MQTTConnectClient中的常用函数
int MQTTSerialize_connect(unsigned char* buf, int buflen, MQTTPacket_connectData* options)
这个函数是用来构造MQTT协议中的CONNECT报文的,连接服务器就靠这个函数了,buf这个参数就是用来存放构造好的CONNECT报文的缓冲区&#