ESP8266 + aRest耗尽内存并重新启动

时间:2016-10-26 13:33:14

标签: arduino esp8266

我正在使用aREST ESP8266 ,我只是想创建一个个性化的方法,它会保留客户的请求,直到给出一个动作。然而,一个简单的而(true)立即重新启动董事会。

为什么个性化功能中的这种阻止重启我的ESP8622的任何线索?任何其他方法都可以完成它吗?

int receiveCommand(String command){

  int timeStart = millis();

  while(true){

    //My code goes here

    //Waits for action during TIMEOUT seconds then breaks this loop and
    //Returns something suitible to the client 

    if((millis() - timeStart) > TIMEOUT){
        return 0;         
    }
  } 
  return 1;
}

1 个答案:

答案 0 :(得分:1)

esp是单线程微控制器。这意味着它一次只能做一件事。它必须运行你的程序以及所有的wifi / ip栈。

这里你的while循环基本上都在旋转,没有给微控制器控制回执行其他操作(例如wifi处理)。

esp旨在重新启动,如果主程序变得不负责任。基本上你正在创造的东西:esp不再负责任,因为它循环无穷。

esp框架有一个事件方法来执行操作而不会阻止正常操作。您应该看一下并调整您的程序,以避免阻止代码中的esp。