zoukankan      html  css  js  c++  java
  • ESA2GJK1DH1K基础篇: APP使用SmartConfig绑定Wi-Fi 设备并通过MQTT控制设备(V1.0)(AT+TCP非透传指令)

    前言

      请先学习使用上一节,透传方式!

      请先学习使用上一节,透传方式!

      请先学习使用上一节,透传方式!

      有些用户使用的模块可能是非透传模式,故,给用户提供一节非透传模式下的工程!

      

    实现功能概要

       STM32控制WI-Fi模块以AT指令TCP非透传方式连接MQTT服务器, 实现MQTT通信控制.

    提示

      非透传模式下:8266连接TCP服务器的指令为: AT+CIPSTART

      使用上面的 AT+CIPSTART指令连接TCP以后发送和接收数据是如下方式

      1.发送数据

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

      1.2 等待模块返回 >

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

      1.4 模块返回 Recv 66 bytes  

      1.5 模块发送完成返回 SEND OK

      2.接收数据

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

      3.意外断开

      3.1 和TCP服务器断开:CLOSED

      3.1 和路由器断开:WIFI DISCONNECT

    程序说明(连接MQTT)

    一,连接TCP

    二,发送连接MQTT协议

      2.1发送AT+CIPSEND=XXX    等待返回 >

      

      

      2.2发送协议

      

      

    程序修改(MQTT通信)

     

    一,有数据需要发送先发送AT+CIPSEND=XXXX

    设置下接收超时,接收超时变量清零以后再发送实际的数据

    设置发送实际的数据以后设置个发送超时,发送数据超时变量清零以后又重新开始

      

     

      在串口中断函数里面如果收到 > 会直接清零接收超时

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

      

     

      注意:所有的超时时间变量如果大于0 ,则在1Ms定时器里面每隔减一,

      也就是说,超出了设定时间会自动接着循环发送数据!

      用户不需要担心如果发送失败会不会卡机的问题!

     

     

    二,接收数据

      接收数据直接简洁了当,直接剔除数据中的+IPD,XXX:

      就相当于透传接收数据了

      

     

     

    接收数据其它改动

    1.接收数据使用的是STM32内存空闲中断+缓存管理

     

    所以在以前所有的  if(Usart1ReadFlage) 的地方全部做了如下修改

    请按照上一节绑定测试!

    监控的打印如下:

  • 相关阅读:
    time 模块学习
    day 14 自定义模块,常用模块 time .datetime ,time 模块
    day 13 课后作业
    day 12 课后作业
    day 11课后作业
    树状数组最值
    hdu 1059 Dividing bitset 多重背包
    XVII Open Cup named after E.V. Pankratiev. XXI Ural Championship
    最长公共子序列板/滚动 N^2
    Uva 10635
  • 原文地址:https://www.cnblogs.com/yangfengwu/p/12875549.html
Copyright © 2011-2022 走看看