• 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) 的地方全部做了如下修改

    请按照上一节绑定测试!

    监控的打印如下:

  • 相关阅读:
    spark internal
    74LS153 选择器 【数字电路】
    Linux(centos)下mysql编译安装教程
    Android画布更新过程OnDraw调用过程
    Android中使用ContentProvider进行跨进程方法调用
    hdu5414(2015多校10)--CRB and String(字符串匹配)
    徒弟们对话,遇到sb领导,离职吧
    【Cocos2d-x 017】 多分辨率适配全然解析
    编程精粹--编写高质量C语言代码(4):为子系统设防(一)
    为SSD编程(4)——高级功能和内部并行
  • 原文地址:https://www.cnblogs.com/yangfengwu/p/12875549.html
Copyright © 2020-2023  润新知