esp8266没连接到服务器返回连接上的错误原因解决办法。
在连接上路由器后延时2s在连接服务器。
u8 *p = NULL;
u8 ipbuf[16]; //IP缓存
int t = 5;
// 检测esp8266模块是否存在
t = 5;
while (atk_8266_send_cmd("AT","OK",20) && --t) // 等待esp8266就绪
{
atk_8266_quit_trans(); // 退出透传
atk_8266_send_cmd("AT+CIPMODE=0","OK",200); // 关闭透传模式
delay_ms(800);
}
if (t <= 0)
{
return 1; // 未检测到模块
}
t = 5;
while (atk_8266_send_cmd("ATE0","OK",20) && --t); // 关闭回显
if (t <= 0)
{
return 1; // 关闭回显失败
}
delay_ms(10);
atk_8266_at_response(1); // 检查ATK-ESP8266模块发送过来的数据,及时上传给电脑
atk_8266_send_cmd("AT+CWMODE=1","OK",50); // 设置WIFI STA 模式
atk_8266_send_cmd("AT+RST","OK",20);
delay_ms(1000); //延时3S等待重启成功
delay_ms(1000);
delay_ms(1000);
delay_ms(1000);
p = mymalloc(SRAMIN, 32);
// 设置连接到的WIFI网络名称/加密方式/密码,这几个参数需要根据您自己的路由器设置进行修改!!
sprintf((char *)p, "AT+CWJAP=\"%s\",\"%s\"", wifista_ssid, wifista_password);// 设置无线参数:ssid,密码
t = 5;
while(atk_8266_send_cmd(p,"WIFI GOT IP",300) && --t); // 连接目标路由器,并且获得IP
if (t <= 0)
{
myfree(SRAMIN, p); // 释放内存
return 2; // 连接路由器失败
}
delay_ms(1000);
delay_ms(1000);
delay_ms(100);
atk_8266_at_response(1);
sprintf((char*)ipbuf,"192.168.43.228");
atk_8266_send_cmd("AT+CIPMUX=0","OK",20); // 0:单连接,1:多连接
sprintf((char*)p,"AT+CIPSTART=\"TCP\",\"%s\",%s",ipbuf,(u8*)portnum);
t = 5;
while(atk_8266_send_cmd(p,"OK",200) && --t) // 连接server
{
delay_ms(800);
}
if (t <= 0)
{
myfree(SRAMIN, p); // 释放内存
return 3; // 连接Server失败
}
atk_8266_send_cmd("AT+CIPMODE=1","OK",200); // 传输模式为:透传
USART3_RX_STA = 0;
myfree(SRAMIN, p); // 释放内存
return 0; // 连接server成功