Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Data e ora con NTP server
#1
Giusto per tenere in movimento il forum propongo un nuovo quesito.

L'idea è questa: salvare su un file "data e ora" di quando accade un evento.

Prendendo spunto da quello che ho letto in vari post sono riuscito a creare il seguente codice, in breve qui riassunto, con cui:


Code:
void setup() 
{
Serial1.println("$FILE0:OPEN:data.txt:wc10"); //creo il file "data.txt" di dimensioni max 10kb
Serial1.println("$TCP0:LAHF::5555"); //installo web server sulla porta 5555 in modo da andare a leggere il mio file data.txt
}

void loop() 
{
if (digitalRead(A0) == HIGH) { // se il Pin A0 è HIGH
Serial1.println("$TCP1:CAF:ntp1.inrim.it:13:data.txt:GET / HTTP1.0\r\n\r\n"); //salvo sul file data.txt data e ora corrente prendendola da un server ntp
}

A questo punto però ho cercato in vari modi, senza successo, affinchè il file data.txt in caso di un evento (PinA0 HIGH) si autoimplementasse con nuove date e orari invece di cancellarsi e ricrearsi ogni volta.

Qualche aiuto.
Reply
#2
Per andare a memorizzare in una variabile la lettura del file data.txt  potrebbe andare una cosa del genere:

Serial1.println("$FILE0:OPEN:data.txt:");    //apro il file data.txt
Serial1.println("$FILE0:RA:10");                //leggo le prime 10 righe

o così

char pippo = Serial1.read();

o direttamente così:

char pippo = Serial1.println("$FILE0:RA:10");

Potrebbe funzionare?
Reply
#3
Ciao DoK,

allora... mi pare di capire che tu voglia scaricare la stringa con la data e aggiungerla al file, invece di sostituirla di volta in volta; miuPanel è veramente flessibile e ti permette di farlo semplicemente scaricando il file in modalità Append nel comando di download. Basta aggiungere "ac10" dopo la F come segue:

Serial1.println("$TCP1:CAFac10:ntp1.inrim.it:13:data.txt:GET / HTTP1.0\\r\\n\\r\\n");

In sostanza CAFac10 significa: Connect for Ascii mode, download file open in Append circular mode up-to 10 KB of size (i caratteri minuscoli diventano opzioni per il flag F).

Nota inoltre che devi usare due backslash \\ dentro la printf

In realtà il server ntp sulla porta 13 non usa il protocollo HTTP, ma semplicemente invia una stringa, quindi potresti semplificare il comando come:

Serial1.println("$TCP1:CAFac10:ntp1.inrim.it:13:data.txt");


Per quanto riguarda la lettura del file, devi aprirlo in lettura con:

Serial1.println("$FILE0:OPEN:data.txt:r");

E' corretto poi leggerlo con il comando

Serial1.println("$FILE0:RA:10");

che legge fino a 10 linee. Ma per ricevere la risposta in Arduino devi usare la funzione WaitMessage che trovi negli esempi pubblicati sul sito. Ad esempio qui:

http://www.miupanel.com/Examples/Arduino...cilloscope

Saluti
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)