Buonasera,
ho una rete di sensori che colloquiano con un client, sia client che server sono su schede wemos R1 D2.
Tutto funziona correttamente, il client interroga una rotazione continua i server, ogni server ha connesso uno o più sensori. Il server quando interrogato invia al client i dati dei sensori.
Quando il cliente interroga un server, il ciclo loop del client, ovviamente, resta fermo in attesa di risposta dal server interrogato, ma a volte un server, uno di quelli interrogati, non fornisce risposta ea quel punto il client resta a lungo fermo in attesa di risposta e passa ad interrogare il server successivo solo dopo un po 'di tempo.
La domanda è la seguente: vi è la possibilità di impostare un tempo massimo d'attesa della risposta e quindi se non arriva nel tempo impostato passare ad interrogare il server successivo?
Riporto uno stralcio del programma del client
#include <ESP8266WiFi.h>
const char * ssid = "FASTWEB-"; // Immettere qui l'SSID
const char * password = "**"; // Inserisci qui la password
Gateway IPAddress (192,168,1,254);
IPAddress ip (192, 168, 1, 56);
IPAddress subnet (255,255,255,0);
IPAddress server0(192,168,1,179);//IP del server a cui collegarsi Temperatura interna
void setup () {
WiFi.begin (ssid, password);
WiFi.config (ip, gateway, subnet);
while (WiFi.status ()! = WL_CONNECTED) {
ritardo (500);
}
Serial.print ("Connesso con IP:");
Serial.println (WiFi.localIP ());
}
void loop () {
client.connect (server0, 80); // Temperatura interna
client.println (sensore2 + "\ r"); // invia richiesta al sensore
risposta = client.readStringUntil ('\ r'); // risposta dal sensore
}