首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >设置WIFI ESP8266

设置WIFI ESP8266
EN

Stack Overflow用户
提问于 2019-10-10 23:41:14
回答 1查看 195关注 0票数 0

我在ESP8266上有一个小项目。我正在创建wifi连接的网页。我对此有意见。对于连接,我有这个方法:

代码语言:javascript
复制
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服务器调用处理程序

代码语言:javascript
复制
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

EN

回答 1

Stack Overflow用户

发布于 2019-10-12 02:21:24

首先,在您需要断开现有网络之前,您无法直接连接到网络

在esp8266中使用EEPROM

代码语言:javascript
复制
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();

代码语言:javascript
复制
WiFi.disconnect();
delay(100);
WiFi.begin(WFSSID, WFPASS);

最好的方法是使用ESP.restart(),然后在连接到网络之前使用,总是调用WiFi.disconnect(),因为ESP倾向于存储旧的SSID和密码,并尝试连接。

对于webser,使用MDNS

代码语言:javascript
复制
  MDNS.begin("esp8266");
  server.on( "/", handleRoot);
  server.begin();
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58326609

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档