ESP8266 HTTP请求在中断时失败

问题描述:

我试图用ESP8266和ESP8266HTTPClient库进行HTTP请求。我在loop()函数中发出请求,每5秒发出一次请求,完美无瑕地完成工作。不过,我也有一个像这样的中断设置:ESP8266 HTTP请求在中断时失败

void interrupt() { 
    if(WiFiMulti.run() == WL_CONNECTED) { 
    Serial.println("Knock!"); 
    HTTPClient http; 

    knockhttp.begin(http_address + "/knock"); 
    int httpCode = http.GET(); 

    if(httpCode > 0) { 
     Serial.println(http.getString()); 
    } else { 
     Serial.printf("[HTTP] GET... failed, error: %s\n", http.errorToString(httpCode).c_str()); 
    } 

    http.end(); 
    } 
} 

失败。每当中断触发时,我都会收到“连接被拒绝”错误。它连接到与循环中的请求相同的服务器,只是不同的路径。

+0

什么在激发你的中断? – Defozo

+0

哎呀,对不起。应该更清楚了。这是来自数字IO引脚的外部中断,在下降沿触发。我也尝试过去除没有帮助的反弹。 – mdszy

好的,我修好了。

出于某种原因,与ESP8266HTTPClient库HTTP请求中不中断范围内工作,所以这里是我想出了解决的工作:

  1. 在中断设置一些布尔标志。
  2. 检查,在主循环
  3. 标志在主循环执行HTTP请求时,标志匹配
  4. 复位标志。

希望这可以帮助任何人遇到同样的奇怪问题。