说明

这节详细说明一下如何把工程里面的MQTT包移植到用户自己的工程.

注意:首先确定自己已经实现了使用TCP连接服务器!

该底层包适用于所有的单片机,和所有的网络模块.

该教程以STM32工程为例子说明移植过程.

文件夹说明

1.移植使用的是下面两个文件夹里面的文件

我准备了一个空模板程序,然后在这个模板上演示移植过程.

2.MQTT文件夹

mqtt_msg 文件作为最底层的最直接的MQTT协议处理文件.

mqtt.c 文件 是我在mqtt_msg的基础上又封装了一层

这一层增加了数据缓存管理,缓存管理采用环形队列实现,所有的数据都储存在缓存里面

另一方面还有处理消息等级1,2的消息,心跳包自动发送等.

有了这一层的封装,用户只需简单的配置即可实现稳定可靠的MQTT通信.

3.mem文件夹

mem文件夹里面是我写的缓存管理程序

开始移植

1.把文件添加到工程,设置下.h路径

2.编译一下工程,打开这个错误

3.替换自己的TCP发送函数

4.把 mqtt_time_data(&mymqtt); 放到1ms定时器中断中.

5.初始化和注册MQTT几个函数,订阅,发布等函数

6.连接TCP服务器,发送连接MQTT协议

把上面的协议发给MQTT服务器以后,MQTT服务器会返回数据

需要把返回的数据交给 int  mqtt_connect_ack(unsigned char *buff) 函数处理

如果该函数返回 0 说明连接上了MQTT服务器,然后调用 mymqtt.connectCb();执行连接回调函数

7.加上需要不停轮训的函数和处理MQTT消息的函数

8.按照上面的步骤已经移植完成(述说下执行流程)

1.首先控制模块以TCP方式连接服务器,连接上以后发送MQTT连接协议

2.判断服务器返回的数据,如果连接上MQTT服务器,调用连接成功回调函数

并在连接成功回调函数中订阅主题.

3.订阅主题的协议都打包进了缓存,从缓存提取并发送出去.

注:后面发布消息,发送心跳包数据也是全部打包进了缓存!

4.MQTT服务器返回数据以后,解析处理MQTT返回的数据

5.如果接收到普通的通信消息,将会调用接收数据回调函数

6.发布消息

只要判断成功连接了MQTT,发送消息的函数可以写到任意地方 .

注意事项

1.在mqtt.h里面 有一个 mqtt_send_buff_len 500

该变量控制着发送协议的最大长度,用户需要根据自己的情况修改该值.

为防止提取缓存时导致内存溢出,我编写底层的时候设置了默认超过该值的打包协议将被丢弃.

2.发布消息成功函数只有在消息等级1和消息等级2的时候才会进入

消息等级1和消息等级2服务器只要应答便会进入此函数.说明服务器确实接收到了数据.

3.假设自己的网络模块并非透传模式

假设使用的串口2和模块进行的通信

1.发送数据,假设发送66个数据

1.1 首先发送 AT+CIPSEND=66\r\n    66:为要发送的数据个数

1.2 等待模块返回 >

1.3 发送要发送的数据给模块

1.4 模块返回 Recv 66 bytes

1.5 模块发送完成返回 SEND OK

2.接收数据

2.1 接收数据格式: +IPD,XXXX:真实数据    XXXX 为接收的数据个数

修改 mqtt_send_function里面的发送过程

如果接收到 > 清零接收超时

如果 接收到 SEND OK 清零发送超时

接收的数据直接提取有效数据,然后交于 mqtt_read_function函数处理

4.如果内存允许,建议采用下面的方式处理接收数据

5.如果客户发现自己当前的版本和细节介绍的有出入

请用户直接把此节的文件移植替换当前使用的文件

随着时间的推移,我可能会发现并修改完善许多细节

我会尽量做到版本兼容!

如若有不兼容的地方,我将在文件说明中做详细说明.

501-STM32+Air724UG基本控制篇(自建物联网平台)-移植使用-移植单片机MQTT底层包到自己的工程项目相关推荐

  1. 2-STM32+Air724UG基本控制篇(自建物联网平台)-整体运行测试-Android扫码绑定Air724,并通过MQTT和模组实现远程通信控制

    说明 这节测试一下Android和微信小程序扫码绑定Air724,并通过MQTT和模组实现远程通信控制 这一节作为板子的整体功能测试,用户下载这一节的程序用来测试基本控制篇实现的基本功能 还有就是测试 ...

  2. 3-STM32+Air724UG基本控制篇(自建物联网平台)-整体运行测试-微信小程序扫码绑定Air724,并通过MQTT和模组实现远程通信控制

    说明 这节测试一下微信小程序扫码绑定Air724模组然后实现微信小程序和开发板之间通过MQTT进行远程通信控制. 这一节作为板子的整体功能测试,用户下载这一节的程序用来测试基本控制篇实现的基本功能 还 ...

  3. 111-STM32+Air724UG基本控制篇(自建物联网平台)-基础搭建测试-Android扫码绑定Air724,并通过MQTT和模组实现远程通信控制

    说明 前面章节已经搭建好了可以测试Android和设备之间实现通信的服务器. 这节把整体运行测试里面的Android和单片机程序里面的MQTT信息改为自己的服务器 然后测试下通信. 修改单片机程序 1 ...

  4. 101-STM32+Air724UG基本控制篇(自建物联网平台)-基础搭建-购买云主机,安装MQTT服务器软件(.Windows系统)

    说明 云服务器: 就是一台电脑,和咱使用的是一样的.云服务器实际上最终还是物理机,只不过物理机是服务商的,服务商负责维护运行. 服务商提供了网页端让咱去购置和选型,购置完以后就可以登录使用. 云服务器 ...

  5. 101-STM32+Air724UG基本控制篇(自建物联网平台)-基础搭建-购买云主机,安装MQTT服务器软件(Linux系统)

    说明 云服务器: 就是一台电脑,和咱使用的是一样的.云服务器实际上最终还是物理机,只不过物理机是服务商的,服务商负责维护运行. 服务商提供了网页端让咱去购置和选型,购置完以后就可以登录使用. 云服务器 ...

  6. 001-STM32+BC26/260Y基本控制篇(自建物联网平台)--基础知识-MQTT协议

    先来体验一下MQTT通信 1.提示: 可以把MQTT软件安装到自己的电脑,也可以安装在云服务器上 如果把MQTT服务器安装在自己的电脑上,连接服务器的IP地址就是自己电脑的IP地址 如果安装到云服务器 ...

  7. 001-STM32+Air724UG(4G模组)基本控制篇(阿里云物联网平台)-使用MQTT接入阿里云物联网平台

    前言 这节测试下使用STM32+Air724UG 和 Android 和 微信小程序 和 网页端 接入阿里云物联网平台 当前的各种物联网平台整体思想是提供一个网页端让用户去注册设备 这个设备就对应一个 ...

  8. 01-STM32+BC26丨260Y远程升级篇(自建物联网平台)-基础知识-STM32如何实现的升级程序

    说明 这节提供给用户一份实现更新STM32的程序(兼容STM32f103全系列) 主要说明STM32是如何实现的升级程序.后面的章节都是在这节的基础上进行优化. 该节源码开源: https://git ...

  9. 03-STM32+BC26丨260Y远程升级篇(自建物联网平台)-功能测试-STM32+BC26丨260Y实现利用http远程更新STM32程序(单片机程序检查更新)

    说明 这节测试一下STM32+BC26丨260Y实现利用http远程更新STM32程序 提供了BC26 和 BC260Y两份程序 两份程序代码是一样的,只有小小个别的差别 这节以STM32+BC260 ...

最新文章

  1. 《Adobe AIR权威指南》——《Flex 3权威指南》作者新作
  2. Java中是否可以继承String类,为什么
  3. SQL Server会话KILL不掉,一直处于KILLED /ROLLBACK状态情形浅析
  4. 安卓APP_ 控件(2)—— Button
  5. Python+django网页设计入门(4):用户登录与登录验证
  6. win服务器自动发邮件,asp.net基于windows服务实现定时发送邮件的方法
  7. 【c++】笔记:输入带空格的字符串
  8. [原]MS SQL表字段自增相关的脚本
  9. 判断Windows操作系统版本
  10. java query dsl_java – QueryDsl – 具有字符串值的case表达式
  11. freeswitch 基于webrtc网页视频、语音通话官方例子video_demo安装
  12. win10MATLAB如何完全卸载,怎么完全卸载cad_win10彻底卸载cad的图文步骤-系统城
  13. 解决WARN Establishing SSL connection without servers identity verification is not recommended问题
  14. 7-14 设计一个风扇Fan类 (20 分)
  15. 设置U盘盘符为自定义图片
  16. php点击切换图片的底部导航,如何优雅地使用BottomNavigationView实现底部导航栏+fragment切换效果...
  17. 哑变量或虚拟变量介绍(dummyvar)
  18. centos7 下修改MySQL密码
  19. wangeditor富文本编辑器使用遇到的问题
  20. 2021-2025年中国兽医美容用具行业市场供需与战略研究报告

热门文章

  1. m132nw与m132snw差异_对比爆料评测惠普m132snw和m132nw哪个好?区别怎么样?亲测解析实际情况...
  2. Oracle查看表空间及大小
  3. 机器人常用名词解释(不全)
  4. 3.10 创建教学管理数据库的数据表
  5. 【面试题】测试工程师/自动化测试/测试开发面试题整理
  6. linux的grub界面退出,linux 退出grub
  7. 7 种提升 SpringBoot 吞吐量神技!
  8. 适合事业上升期男人的女人
  9. 事业 对于 男人有多重要
  10. v56.05 鸿蒙内核源码分析(进程映像) | 程序是如何被加载运行的 | 百篇博客分析OpenHarmony源码