2017-07-15 34 views
2

我正在嘗試處理來自傳感器的數據,並同時將數據上傳到服務器(Thingspeak)。如何將測量結果發送到服務器並同時接收來自傳感器的數據?

問題是,無論何時服務器連接(使用wifi)結束(並且我找不到延長我的會話以防止超時的方式),重新連接需要時間,在此期間,我無法處理數據傳感器,導致我的數據偶爾出現漏洞。

我聽說有一種方法可以解決這個問題,通過使用回調函數,讓核心在每次嘗試連接服務器時都等待來自服務器的響應,同時處理數據,從傳感器中獲得。

我的代碼現在的問題是這樣的

loop 
{ 
    while(now==prev) 
    { 
     processdata; 
    } 
    prev=now; 
    count++; 
    if(count==15) 
    { 
     count=0; 
     senddata(); 
    } 
} 
senddata() 
{ 
    if(!serverconnected) 
    { 
     if(!send connect request()) error message; //after this function calls, 
     if(!receive connection confirmed()) error message; //takes too long time until this function finishes executing. 
    } 
    send data. 
} 

實際函數名的註釋部分是從

client.connect(host, port) 
client,verify(fingerprint, host) 

功能WiFiClientSecure.h

有什麼辦法使用回調方法來解決這個問題? 在尋找解決方案,我發現下面的頭文件

裏面好像有,我可以使用回調函數......但我不知道這是否是使用以建立WiFi連接的不同方法服務器,以及如何使用這些功能本身。

+0

考慮嘗試下面的答案嗎? – cagdas

回答

0

只要你使用休息API,你將無法舒適地保持會話活着。所以你最好有websocket或MQTT之類的協議,其中會話由他們處理,你將只負責在任何時候立即將數據推送到服務器。

link描述瞭如何在Thingspeak上完成mqtt客戶端連接並將數據推送到它。

一些代碼削減從鏈接:

#include <PubSubClient.h> 

WiFiClient client; 
PubSubClient mqttClient(client); 
const char* server = "mqtt.thingspeak.com"; 

mqttClient.setServer(server, 1883); 
相關問題