ESP8266 中断时 HTTP 请求失败
ESP8266 HTTP Request fails when in interrupt
我正在尝试使用 ESP8266 和 ESP8266HTTPClient 库发出 HTTP 请求。我在 loop()
函数中有一个请求,它每 5 秒发出一个请求,100% 完美地工作。但是,我也有这样的中断设置:
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();
}
}
这失败了。每次中断触发时,我都会收到 "connection refused" 错误。它与循环中的请求连接到同一台服务器,只是路径不同。
好的,我修好了。
出于某种原因,使用 ESP8266HTTPClient 库的 HTTP 请求在中断中不起作用,所以这是我想出的有效解决方案:
- 在中断中设置一些布尔标志。
- 检查主循环中的标志
- 标志匹配时在主循环中执行HTTP请求
- 重置标志。
希望这对遇到同样奇怪问题的其他人有所帮助。
我正在尝试使用 ESP8266 和 ESP8266HTTPClient 库发出 HTTP 请求。我在 loop()
函数中有一个请求,它每 5 秒发出一个请求,100% 完美地工作。但是,我也有这样的中断设置:
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();
}
}
这失败了。每次中断触发时,我都会收到 "connection refused" 错误。它与循环中的请求连接到同一台服务器,只是路径不同。
好的,我修好了。
出于某种原因,使用 ESP8266HTTPClient 库的 HTTP 请求在中断中不起作用,所以这是我想出的有效解决方案:
- 在中断中设置一些布尔标志。
- 检查主循环中的标志
- 标志匹配时在主循环中执行HTTP请求
- 重置标志。
希望这对遇到同样奇怪问题的其他人有所帮助。