我在站点模式下使用Wroom-02与我的服务器交换一些信息(我正在使用SecureClient库)。我正在尝试路由器打开但没有与Internet连接的情况。当我重新建立路由器互联网连接时,模块不再连接到主机,并显示错误消息“未知错误代码”。如何在不重置的情况下解决问题?
这是我正在使用的完整代码。
`server_connectionFeedback_t server_sendData(char *pollingBuffer)
{
server_connectionFeedback_t ret=SERVER_CONNECTION_IN_PROGRESS;
switch(serverManager.phase)
{
case 0:
stationClient.setInsecure();
if(!stationClient.connect(SERVER_HOST,SERVER_PORT))
{
char buffTemp[100];
stationClient.getLastSSLError(buffTemp,100);
serialDebug.println(buffTemp);
ret=SERVER_UNREACHEABLE;
}
else
{
stationClient.print(pollingBuffer);
serverManager.phase++;
serverManager.timeoutReplyServer=SERVER_TIMEOUT_REPLY_SERVER;
serialDebug.println(pollingBuffer);
serverManager.lenghtServerData=0;
}
break;
case 1:
if(serverManager.timeoutReplyServer)
{
serverManager.lenghtServerData=stationClient.available();
if(serverManager.lenghtServerData!=0)
{
for(uint16_t i=0; i<serverManager.lenghtServerData; i++)
{
if(!i)
{
serverManager.buffer=(char*)malloc(2);
sprintf(serverManager.buffer,"%c",(char)stationClient.read());
}
else
{
serverManager.buffer=(char*)realloc(serverManager.buffer,strlen(serverManager.buffer)+2);
sprintf(serverManager.buffer,"%s%c",serverManager.buffer,(char)stationClient.read());
}
}
serialDebug.println(serverManager.buffer);
String HTTPmessage(serverManager.buffer);
if(HTTPmessage.startsWith("HTTP/1.1 200 OK"))
{
server_contentData=HTTPmessage.substring(HTTPmessage.indexOf("Content-Length: ")+22);
free(serverManager.buffer);
serverManager.phase=0;
ret=SERVER_REPLY_OK;
}
else
{
free(serverManager.buffer);
serverManager.phase=0;
ret=SERVER_BAD_REPLY;
}
}
}
else
ret=SERVER_NO_REPLY;
break;
}
return ret;
}`
您可以尝试这些代码并进行修改以适应。
#include <ESP8266WiFi.h>
#ifndef STASSID
#define STASSID "your-ssid"
#define STAPSK "your-password"
#endif
const char* ssid = STASSID;
const char* password = STAPSK;
void setup() {
Serial.begin(115200);
Serial.println();
Serial.println();
Serial.print("Connecting to ");
Serial.println(ssid);
WiFi.mode(WIFI_STA);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
上面发布的所有代码都需要包含在您的设置功能中。然后,如果要在循环函数的中间重新连接,只需在上面的代码中插入以下内容即可。
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
此外,您知道,所有这些代码都可以在ESP8266WiFi客户端的Arduino IDE示例中找到。