2017-07-30 143 views
1

我試圖用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

回答

2

好的,我修好了。

出於某種原因,與ESP8266HTTPClient庫HTTP請求中不中斷範圍內工作,所以這裏是我想出瞭解決的工作:

  1. 在中斷設置一些布爾標誌。
  2. 檢查,在主循環
  3. 標誌在主循環執行HTTP請求時,標誌匹配
  4. 復位標誌。

希望這可以幫助任何人遇到同樣的奇怪問題。