博客
关于我
501-STM32+Air724UG基本控制篇(自建物联网平台)-移植使用-移植单片机MQTT底层包到自己的工程项目
阅读量:147 次
发布时间:2019-02-28

本文共 893 字,大约阅读时间需要 2 分钟。

说明如何将工程中的MQTT包移植到用户自主工程

本节将详细说明如何将工程中的MQTT包移植到用户自主工程中。请确保在移植前已实现稳定的TCP连接服务器功能。

文件夹结构

移植所需文件夹包括以下两个部分:

  • 模板程序文件夹:提供了一个基础模板,用于展示移植过程。
  • MQTT文件夹:包含处理MQTT协议的核心文件。
    • mqtt_msg文件:实现了最底层的MQTT协议处理。
    • mqtt.c文件:在mqtt_msg基础上封装了一层,增加了数据缓存管理(采用环形队列)。
    • mem文件夹:提供了缓存管理程序。
  • 以STM32工程为例说明移植步骤

  • 将文件添加至工程

    • 设置.h文件路径,确保文件能正确包含。
  • 编译工程

    • 打开错误报告,逐步修正编译问题。
  • 替换TCP发送函数

    • 根据实际需求修改发送逻辑。
  • 初始化定时器

    • 将mqtt_time_data(&mymqtt);放入1ms定时器中断中。
  • 注册MQTT功能

    • 初始化并注册MQTT相关函数,如订阅、发布等。
  • 完成TCP连接

    • 通过TCP协议连接MQTT服务器。
    • 处理服务器返回的数据,调用mqtt_connect_ack函数。
    • 根据返回状态判断连接成功或失败,并调用相应回调函数。
  • 实现消息处理

    • 增加轮询处理函数,处理订阅消息。
    • 发布消息时,打包数据并发送。
  • 处理服务器返回数据

    • 解析并处理MQTT消息。
  • 注意事项

  • mqtt.h中的mqtt_send_buff_len默认值为500

    • 用户需根据实际需求调整发送缓冲区大小。
    • 为避免内存溢出,默认超出长度的数据会被丢弃。
  • 消息发布成功判断

    • 只有当消息等级1或2时才会触发成功函数。
    • 确保服务器接收数据后才能进入处理。
  • 网络模块通信注意事项

    • 如果网络模块不支持透传模式:
      • 使用串口2与模块通信时,需注意数据包格式。
      • 发送时需发送AT+CIPSEND命令,获取返回状态。
      • 接收时需解析数据包,提取有效数据。
  • 接收数据处理建议

    • 建议采用环形缓存或双缓冲技术优化接收处理。
  • 版本说明

    如发现与当前文件不兼容的情况,请直接替换相关文件。未来将持续更新和完善文件,尽量保持版本兼容。如有不兼容问题,会在文件说明中进行详细说明。

    转载地址:http://fcdc.baihongyu.com/

    你可能感兴趣的文章
    nginx 配置https(一)—— 自签名证书
    查看>>
    nginx 配置~~~本身就是一个静态资源的服务器
    查看>>
    Nginx 配置清单(一篇够用)
    查看>>
    Nginx 配置解析:从基础到高级应用指南
    查看>>
    nginx+php的搭建
    查看>>
    nginx+tomcat+memcached
    查看>>
    nginx+Tomcat性能监控
    查看>>
    nginx+uwsgi+django
    查看>>
    Nginx-http-flv-module流媒体服务器搭建+模拟推流+flv.js在前端html和Vue中播放HTTP-FLV视频流
    查看>>
    nginx-vts + prometheus 监控nginx
    查看>>
    Nginx下配置codeigniter框架方法
    查看>>
    Nginx之二:nginx.conf简单配置(参数详解)
    查看>>
    Nginx代理websocket配置(解决websocket异常断开连接tcp连接不断问题)
    查看>>
    Nginx代理初探
    查看>>
    nginx代理地图服务--离线部署地图服务(地图数据篇.4)
    查看>>
    Nginx代理外网映射
    查看>>
    Nginx代理模式下 log-format 获取客户端真实IP
    查看>>
    Nginx代理静态资源(gis瓦片图片)实现非固定ip的url适配网络环境映射ip下的资源请求解决方案
    查看>>
    Nginx代理静态资源(gis瓦片图片)实现非固定ip的url适配网络环境映射ip下的资源请求解决方案
    查看>>
    Nginx反向代理与正向代理配置
    查看>>