Variabili, "stampate" alternativamente

Ciao a tutti !

Una cosa molto strana, ho delle variabili che vengono stampate sulla seriale alternativamente, cioè un ciclo ci sono il successivo non ci sono e ricomincia !
Nel mio caso sono le variabili delle coordinate geografiche, usando il Sim908 con l'opportuna libreria (Google Code Archive - Long-term storage for Google Code Project Hosting.)

Nella libreria ci sono degli sketch di esempio e caricando quello relativo al GPS le coordinate vengono stampate correttamente ad ogni inizio ciclo. Mentre nel mio no !

All'inizio pensavo che era un problema di tempo, ovvero che ogni ciclo doveva iniziare dopo 5 secondi, per esempio.
EÈ da escludere, funziona anche senza mettere un delay.

Ecco cosa vedo nella seriale, con il mio sketch:
(quelle in verde sono le variabili lat lon e alt)

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
CHECK
DHT22: OK
DS18B20: OK
Allarme: OK
Led Status: OK
SD: OK
MPL115A2: OK
GSM/GPS: OK
Segnale GPS: OK |||||||||||||||||||||||||||||| 3D FIXED
3807.960240;1443.546704;43.949493;19.56;92.20;101.66;SD: OK;
;;;19.62;92.90;101.66;SD: OK;
3807.960240;1443.546704;43.949493;19.69;93.10;101.59;SD: OK;
;;;19.69;93.00;101.66;SD: OK;
3807.960240;1443.546704;43.949493;19.69;92.90;101.53;SD: OK;
;;;19.75;92.80;101.66;SD: OK;
3807.960240;1443.546704;43.949493;19.81;92.70;101.53;SD: OK;
;;;19.87;92.60;101.66;SD: OK;
3807.960240;1443.546704;43.949493;19.81;92.60;101.78;SD: OK;

Mentre questo è ciò che vedo con lo sketch della libreria (senza delay), che funziona perfettamente:

GSMGSM Shield testing.

status=READY
status=GPSREADY
3D FIXED
1443.549878
3807.964340
57.857780
20130504182803.998
0.000000
1443.549878
3807.964340
57.857780
20130504182805.000
0.000000
1443.549878
3807.964340
57.857780
20130504182806.000
0.000000

In allegato trovare il mio sketch e quello della libreria.

Cosa può essere ?

grazie

beta.ino (11.7 KB)

GSM_GPRSLibrary_GPS_mod.ino (2.68 KB)

UP :stuck_out_tongue:

Non ho studiato lo sketch, vedo che stampi tante cose in base a dei test con degli if. Prova facendo un pò di debug mettendo il print dei valori usati in quei test per verificare che effettivamente i dati siano quelli che ti aspetti e che si aspetta il codice.

Si esatto. Però gli if sono nel setup e funzionano tutti.
Il problema è nel loop, ovvero le variabili lat lon alt un ciclo vengono stampate il ciclo dopo no e vice versa.

:confused:

Non è che invece vengono stampate vuote perché non contengono dati?

Sicuramente è così. Ma perché vengono stampati alternativamente ?
Se uso lo sketch di esempio i dati li ho sempre e comunque, a prescindere dal tempo di richiesta !

Invece con il mio sketch no ! È come se non vengono memorizzati, no che non ci sono.

Mi pare di capire che tu prima scriva i dati su un file e successivamente lo riapri per leggerlo. Mi viene da pensare che nel momento in cui vai a riaprire il file i dati siano stati scritti solo sul buffer, cioè non sono ancora fisicamente presenti sulla scheda.

Prova mettendo un SD.flush() subito dopo la scrittura dei dati: questo comando dice alla libreria di svuotare il buffer e di scrivere materialmente i dati sul file.

no no, i dati vengono prima prelevati, poi spediti sulla seriale, poi spediti via radio, con un modulo rtty (costruendo la "variabile" rtty) e poi salvate sulla sd !
Quindi la sd è l'ultima cosa che viene "toccata".

Sono in un vicolo cieco !

UP

Andrea lo sai che è inutile fare gli UP qui. :roll_eyes:
Se qualcuno conoscesse la soluzione o avesse avuto anche solo qualche idea di come risolvere il tuo problema, secondo me, ti avrebbero già risposto.
Se non ti rispondono e perché, come me, anche gli altri non hanno la minima idea del problema e delle relative soluzioni. Quindi si torna alla prima riga. :sweat_smile:

Potrebbe anche essere che qualcuno che sa come risolvere non vada oltre la seconda pagina !
E potrei perdere occasione ! :grin:

:~

anerDev, se avessi avuto il tuo hardware avrei provato a replicare il problema. Non avendolo... vo per ipotesi. Le ho finite :wink:

Grazie lo stesso leo72 !

Comunque sono convinto che è un problema di software ! 100%
Cioè è come se le 3 variabili fossero nulle perchè magari finisce la memoria o non so :confused: