ESP8266固件包建立TCP服务端(客户端用Arduino框架)

项目场景:

提示:主要用于自己后面学习lvgl和freertos操作系统的实战项目,

例如:项目场景:esp8266AT固件使用tcp服务端传输过程中的问题及解决办法


问题描述

提示:TCP客户端发送数据失败和发送数据长度的问题

例如:开始一直困扰自己使用AT+CIPSEND指令发送数据时出现ERROR的发送指令打开失败,和使用AT+CIPSEND=0,10发送的数据要发送两次才能成功。

AT+CIPSTO=10

OK
0,CLOSED
+STA_DISCONNECTED:"78:21:84:7e:2d:bc"
+STA_CONNECTED:"78:21:84:7e:2d:bc"
+DIST_STA_IP:"78:21:84:7e:2d:bc","192.168.4.2"
0,CONNECT

+IPD,0,12:Hellow Word!
0,CLOSED
AT+CIPSEND

ERROR //这种情况是tcp连接超时,所以不能发送
AT+CIPSTO=0  //我们更改AT+CIPSTO=0,就是不设置超时时间

OK
+STA_DISCONNECTED:"78:21:84:7e:2d:bc"
+STA_CONNECTED:"78:21:84:7e:2d:bc"
+DIST_STA_IP:"78:21:84:7e:2d:bc","192.168.4.2"
0,CONNECT

+IPD,0,12:Hellow Word!
AT+CIPSEND=0,10  //此时我设置的是多连接及(AT+CIPMUX=1),所以我们要使用AT+CIPSEND=,

OK

>
busy p...

Recv 10 bytes   

SEND OK

原因分析:

提示:具体参考最下面的AT指令文档TCP类,问题一:上面的AT+CIPSEND=0,10失败的原因是这种情况tcp连接超时了,及出现,CLOSED,问题二:AT+CIPSEND=0,10因为我们设置的数据发送的buff长度是10,而我们发送的数据是22222,这里的数据是长度是5个我们要发送两次达到10个数据才能发送,

https://docs.espressif.com/projects/esp-at/zh_CN/latest/esp32/AT_Command_Set/TCP-IP_AT_Commands.html


解决方案:

提示:问题一:我们更改AT+CIPSTO=0,就是不设置超时时间。

问题二:我们发送的buffer包长度要和AT+CIPSEND=,一样即可,

例如:我们设置AT+CIPSEND=0,10则我们要发送的长度必须为buffer[10];

最后附上我借鉴别人使用AT固件建立TCP服务端的指令:

AT+RESTORE                                //恢复出厂设置

AT+CWMODE=2                               //初始化为 Wi-Fi AP 模式

AT+CWSAP="ESP32","12345678",1,3           //设置 AP 模式的账号、密码

AT+CIPAP="192.168.4.1"                    //设置 AP 的 IP 地址

AT+CIPMUX=1                               //开启多连接模式才能创建 TCP 服务器

AT+CIPSERVER=1,1001                       //创建 TCP 服务器,端口号为 1001

AT+CIPSTO=0                               //设置本地 TCP 服务器超时时间【0,7200】; 设为 0 ,则连接永远不会超时

这是我第一次写博客,有些地方写的不好望体谅,错别字就别提醒博主了本人也懒也可能不会改。(滑稽护体)

你可能感兴趣的:(ESP8266AT连接,tcp/ip,网络,网络协议)