Ciao a tutti. Ieri ho fatto un piccolo sketch per inviare dei dati via rete ad un altro computer in ascolto. Avendo io un arduino industrial 101, ho utilizzato la libreria "ciao". in particolare la funzione Ciao.write(CONNECTOR, SERVER_ADDR, String(a)); . Avendola inserita nel loop, mi sarei aspettato che ogni volta che la funzione fosse stata rieseguita io avrei registrato un nuovo invio di "a", invece mi arrivava una volta sola dopo aver caricato lo sketch. Allora ho inserito anche un Serial.println(a) per controllare se la funzione iterasse, ed effettivamente nel monitor dell'ide è cominciata subito una cascata di valori. Quindi mi viene da penare che la porta 80 venga chiusa dalla funzione la prima volta che viene eseguita e che poi arduino non riesca più ad inviare i dati, mentre con la porta seriale ci riesce. Forse manca un'istruzione che riapra la porta?
Ringrazio in anticipo chi saprà aiutarmi.
#include <Wire.h>
#include <Ciao.h>
#define CONNECTOR "rest"
#define SERVER_ADDR "192.168.0.188" // change ip address with your server ip address
int a=0;
void setup() {
Ciao.begin();
}
void loop() {
//CiaoData data =
//Ciao.write(CONNECTOR, SERVER_ADDR, "/arduino/nuovaapplicazioneweb.aspx?CMD=ARDUINO&s=Funziona");
//Serial.println("va?");
Ciao.write(CONNECTOR, SERVER_ADDR, String(a));
Serial.println(a);
a++;
}
Si, ciao è un core che hanno integrato negli ultimi arduini e permette di far comunicare linino con il mondo esterno tramite i protocolli più famosi. https://www.arduino.cc/en/Reference/Ciao
Ad esso va associata la ciao library.
Non scrivo per dare risposte ma per dire che non conoscevo la libreria Ciao, grazie per avermela fatta conoscere, potrebbe essere utile anche a me.
Leggendo però il tuo codice mi è venuto un dubbio, messo così nel loop() avrai MIGLIAIA di chiamate al secondo. Metti (per ora almeno) un dealy() ad esempio di 1 secondo tra un write ed il successivo e vedi che succede.
PS Leggendo la sua descrizione ed in particolare lo schema:
mi ha fatto ridere il blocco "Ciao Core" che a Roma ha più o meno il significato di un "non hai capito niente, lasciamo perdere!"..
PS2: per la cronaca, "core" deriva da "cuore" ed è una monottongazione del dittongo posteriore "uo"...
Nella libreria vedo che i parametri della write() sono di tipo String (e la cosa già non mi piace molto...), in ogni caso prova per ora a cambiare la chiamata non facendo la conversione al volo in String, ed eventualmente dopo la Ciao.write() vedi se hai un qualche errore restituito dalla libreria (non so se la isError funzioni anche per la write()).
Ossia una cosa del genere: