admin管理员组

文章数量:1542757

        因为毕设所以本人需要使用Arduino IDE进行开发,主控为ESP8266NodeMCU,当使用网上比较多比较简单的WIFI连接代码时发现,手机显示设备已连接,但是就是设备代码就是不往下运行,而后对代码进行修改为一个比较快的代码。如下将给出网上的基础代码以及改良的代码,目前估计是WIFI.begin()这个函数被反复调用所导致的问题。

//改良前

while (WiFi.begin(ssid, pass) != WL_CONNECTED) {

    // failed, retry

    Serial.print(".");

    delay(5000);

    //超时退出

    if(++timemout_i >= 12)

    {

      timemout_status = 0;

      break;

    }

  }

//改良后的 ssid为WIFI账号,pass为密码

WiFi.begin(ssid, pass);

while (WiFi.status() != WL_CONNECTED) {

    // failed, retry

    Serial.print(".");

    delay(3000);

    //超时退出

    if(++timemout_i >= 12)

    {

      timemout_status = 0;

      break;

    }

  }

可以看出之前的代码是直接使用 WIFI.begin() 进行多次连接,不好用(也可能是我的个别问题),而后我改变判断目标为 WiFi.status() 连接WIFI就变得很快了。我曾尝试过将WiFi.begin(ssid, pass);加入while循环中如下

//改良后的 ssid为WIFI账号,pass为密码

WiFi.begin(ssid, pass);

while (WiFi.status() != WL_CONNECTED) {

    // failed, retry

    Serial.print(".");

    delay(3000);

    if(++timemout_i >= 12)

    {

      timemout_status = 0;

      break;

    }

    WiFi.begin(ssid, pass);

  }

 发现如果这样使用反而会使程序运行变慢,故推测 WiFi.begin(ssid, pass);,不能反复调用或反复调用会出问题。

本文标签: 速度慢ESP8266NodeMcuwifi时快时慢