我正在使用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;
}
答案 0 :(得分:1)
esp是单线程微控制器。这意味着它一次只能做一件事。它必须运行你的程序以及所有的wifi / ip栈。
这里你的while循环基本上都在旋转,没有给微控制器控制回执行其他操作(例如wifi处理)。
esp旨在重新启动,如果主程序变得不负责任。基本上你正在创造的东西:esp不再负责任,因为它循环无穷。
esp框架有一个事件方法来执行操作而不会阻止正常操作。您应该看一下并调整您的程序,以避免阻止代码中的esp。