2017-07-15 33 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); 
相关问题