ESA2GJK1DH1K安全篇: Wi-Fi 模块(8266)以SSL方式连接MQTT服务器(AT指令版V1.0)

亡梦爱人 提交于 2020-05-08 10:54:08

 

 

 

说明

一,修改连接端口号为:8883

  咱配置的是MQTT单向SSL认证

  咱只需要设置连接的MQTT端口号为:8883

 

 

  

 

 

 

 二,由于透传指令不支持SSL,所以需要改一下连接指令

  

 

 

  然后连接TCP指令改为 

  "AT+CIPSTART=\"SSL\",\"%s\",%s\r\n",IP,Port  

 

  

 

 

提示

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

  1.发送数据

  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 为接收的数据个数

  3.意外断开

  3.1 和TCP服务器断开:CLOSED\r\n

  3.1 和路由器断开:WIFI DISCONNECT\r\n

 

程序修改(连接MQTT)

 

一,连接TCP

  

 

 

 

二,发送连接MQTT协议

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

  

 

 

 

 

 

 

  

 

 

 

 

  2.2发送协议

 

  

  

 

 

 

 

 

 

 

 

程序修改(MQTT通信)

 

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

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

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

  

 

 

 

 

 

 

 

 

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

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

  

 

 

 

 

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

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

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

 

 

二,接收数据

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

  就相当于透传接收数据了

  

 

 

 

 

 

 

接收数据其它改动

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

 

 

 

 

 

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

 

 

 

 

当前的程序处理又上升了一个等级!

关于缓存的内容,大家到我 单片机模块化程序专栏 里面去自行学习!

就像我在 https://www.cnblogs.com/yangfengwu/category/1566194.html 单片机模块化程序 里面说的,学的是思想而非程序本身!!!!

 

自行测试

 

  大家根据这一节去测试

  https://www.cnblogs.com/yangfengwu/p/12197285.html

 

  通信数据使用了SSL

  

 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!