sto uscendo pazzo … il problema sarà sicuramente una sciocchezza ma non riesco a trovarlo …
In allegato trovate il codice di un semplice programma che deve scrivere l’ora attuale ogni 5 secondi e nell’attesa comunicare che è in attesa della nuova ora …
tutto funziona fino a quando non scatta il minuto successivo da li in poi entra perennemente nel ciclo else …
so che è una cazzotta ma nn riesco a trovarla… sicuramente e nella formattazione dei secondi che essendo decimali non cozzano con i minuti
SCUSATE SE NON MI SONO PRESENTATO ...
ma ho dato per scontato che l'avevo già fatto tempo fa quando usai per la prima volta questo forum ... a causa di vari problemi di salute sono stato fuori dal mondo per un po
ora eccomi sono cenzino e di elettronica ne so davvero poco ma sto usando quel poco che so e quel poco di tempo che ho per costruirmi un sistema automatizzato per produrre birra ... cosa già fatta da altri ma voglio farmelo da me e dare un tocco di personalità ....
Beh, tu basi tutta la tua logica solo su second() e quindi ti perdi i minuti e le ore.
Perciò hai 3 possibilità, secondo me:
usi il comando unixtime() della libreria per il confronto tra DateTime, in quanto ritorna una cifra 32 bit unica con valore del tempo (un pò quello che suggerisco a punto 3):
if ( (attuale.unixtime() ) <= (futura.unixtime()) ){
usi una semplice millis() per sapere quando son passati 5 secondi (inutile per me la DateTime)
converti i Time in numero long per un semplice confronto, secondo questo calcolo:
long a=attuale.hour()*10000L+attuale.minute()*100+attuale.second();
long f=futura.hour() *10000L+futura.minute() *100+futura.second();
if( a<=f )
attuale 23:10:58 => 231058 come numero long
futura 23:11:03 =>231103 che come numero long è facilmente confrontabile con numero precedente
Ma c’e’ comunque lo scavalco del giorno che dà problemi 23:59:59=> 00:00:04