我在ESP8266上有一个小项目。我正在创建wifi连接的网页。我对此有意见。对于连接,我有这个方法:
bool connect(String name, String password)
{
WiFi.begin(name, password);
if (WiFi.status() == WL_NO_SSID_AVAIL) return false;
int timeout = 0;
while (timeout < 5000)
{
if (WiFi.status() == WL_CONNECTED)
{
return true;
}
timeout+=500;
delay(500);
}
return false;
}当我通过网页上的表单发送数据时,web服务器调用处理程序
void handleconnect()
{
if (connect(webServer.arg("name"), webServer.arg("password")))
{
webServer.send(200, "text/html", "Success");
}
else
webServer.send(200, "text/html", "Failed");
}
}我有问题,当我发送错误的密码,有时它工作良好,发送失败,但很多时候网络服务器调用处理器几次,我有错误。我需要做些什么来解决这个问题?谢谢你!
即时通讯使用: NodeMCU,ESP8266WebServer,ESP8266WiFi,WiFiClient
发布于 2019-10-12 02:21:24
首先,在您需要断开现有网络之前,您无法直接连接到网络
在esp8266中使用EEPROM
server.arg("myssid").toCharArray(WFSSID, 21);
server.arg("mypassword").toCharArray(WFPASS, 21);
EEPROM.put(WFSSID_ADDR, WFSSID);
EEPROM.put(WFPASS_ADDR, WFPASS);
EEPROM.commit();
delay(200);
EEPROM.get(WFSSID_ADDR, WFSSID);
EEPROM.get(WFPASS_ADDR, WFPASS);现在,在这之后,要么调用
ESP.restart();
或
WiFi.disconnect();
delay(100);
WiFi.begin(WFSSID, WFPASS);最好的方法是使用ESP.restart(),然后在连接到网络之前使用,总是调用WiFi.disconnect(),因为ESP倾向于存储旧的SSID和密码,并尝试连接。
对于webser,使用MDNS
MDNS.begin("esp8266");
server.on( "/", handleRoot);
server.begin();https://stackoverflow.com/questions/58326609
复制相似问题