Italian Timer e clock

moore_it

Well-Known Member
Licensed User
Longtime User
Ciao,
quando attivo un timer (per esempio ogni secondo) il conto inizia dall'attivazione dello stesso.
C'è la possibilità di sincronizzarlo all'ora del pc ?
 

amorosik

Expert
Licensed User
Umilmente me lo spiegheresti che non ci arrivo ....

Prima di dare il MioTimer.enable=true potresti entrare in un ciclo e leggere l'ora/minuti/secondi e quando cambia il secondo attivi il timer
Quelli su Android ho visto che shiftano un po'alla volta, nel senso che un timer al secondo dopo qualche migliaio di secondi si sposta dai 200mSec ai 600mSec e via
 

Star-Dust

Expert
Licensed User
Longtime User
Tu vuoi fare partire il timer a un momento specifico mi pare di aver capito.

Puoi farlo con un servizio i calcolando la differenza di tempo dal momento in cui inizializzi e l'avvio e mettere uno Sleep per differenza. Adesso sono fuori dopo ti spiego meglio se qualcuno non mi precede
 

Star-Dust

Expert
Licensed User
Longtime User
Di preciso cosa ti serve ottenere?
 

moore_it

Well-Known Member
Licensed User
Longtime User
Mi serve avviare un timer che lancia una procedura ad una tal ora:minuto ma alle volte i secondi mi fregano ...
 

moore_it

Well-Known Member
Licensed User
Longtime User
Credo di aver risolto !
Grazie a tutti

B4X:
Do While DateTime.GetSecond(DateTime.now) <> 0
 timer.enable = true
loop
 

Star-Dust

Expert
Licensed User
Longtime User
Metti uno Sleep (0) per non bloccare tutto
 

Star-Dust

Expert
Licensed User
Longtime User
Mette anche un margine perché non è detto che a zero secondi precisi riesca a fare la lettura.
Magari da 900 a 0
 

moore_it

Well-Known Member
Licensed User
Longtime User
Star-Dust - Sì Sì fatto grazie !

amorosik - perchè il timer è al secondo e l'avvio della procedura è al minuto se non sono sincronizzati rischio di perdere l'avvio ...
 

amorosik

Expert
Licensed User
Star-Dust - Sì Sì fatto grazie !

amorosik - perchè il timer è al secondo e l'avvio della procedura è al minuto se non sono sincronizzati rischio di perdere l'avvio ...

Letto cosi', non si capisce una mazza
Ma va beh, se a te serve cosi', morta li'
Resta il fatto che se basi la sincronizzazione di due procedure sui secondi del pc, aspettati presto o tardi di avere problemi, dovuti alla tolleranza con la quale il comando DateTime.now puo' rispondere
Personalmente valuterei altri sistemi per sincronizzare due programmi che girano uno indipendentemente dall'altro
 

moore_it

Well-Known Member
Licensed User
Longtime User
Sì, mi sono spiegato male sorry.

All'avvio del programma che esegue degli invii o delle ricezioni di files (via FTP/SFTP/E-Mail) da sede a clienti e viceversa, il timer lo setto uguale all'orologio del server dove risiede il programma.
Poi quando scatta l'ora e il minuto in cui devo inviare i file faccio partire la spedizione o la ricezione via FTP e SFTP o E-Mail come da richiesta del cliente.

A me interessa che alle 06:30 per esempio il sistema vada a controllare se nella lista dei miei clienti se esiste qualcuno che ha la spedizione/ricezione fissata a quell'ora e lo faccio quando i secondi sono a 0 (es.: 06:30:00) per eseguire la cosa solo una volta perchè il timer è settato al secondo.
Potrebbe non succedere mai che buco ma per sicurezza se sono sincronizzato sto più tranquillo !

Che dici ?
 

amorosik

Expert
Licensed User

Ma perche' se invii alle 06:32:45 cosa cambierebbe?
Una volta che hai inviato, e ti assicuri che l'altro abbia ricevuto, baci ed abbracci ed alla prossima
Anche perche' la spedizione non e' che sai a priori quanto tempo ci mette, potresti completare dopo 20 secondi come dopo 2 ore se c'e' tanto da mandare
Non e' che l'altro puo' sapere che 'hai spedito' solo perche' sono le 06:30:00, potresti finire alle 06:30:22 oppure alle 07:26:34
Che cambierebbe?
 

moore_it

Well-Known Member
Licensed User
Longtime User
Perché è una lista di clienti ai quali si da un timing che so: a tizio invio alle 6:30 a caio alle 12:15 mentre da pippo ricevo alle 11:30 ecc.
Perché i file vengono generati dall'amministrazione o dal cliente in orari differenti il tutto gestito in un db mysql (circa 500 clienti).
L'eventuale ritardo non mi preoccupa perchè alla scadenza creo un coda di quel che devo fare ed è indipendente dal tempo, l'unica paura che avevo (anche se remota) è di saltare un invio o una ricezione se timer e clock non sono sincronizzati e quindi non creare questa lista di attività da fare ...
 

udg

Expert
Licensed User
Longtime User
Uan curiosità: hai valutato se utilizzare lo StartServiceAt invece che un timer?
Un esempio è qui.
Menter qui trovi un esempio di funzione che calcola quando avviare il service la prossima volta. Nel tuo caso potresti avere una lista di orari.
 

moore_it

Well-Known Member
Licensed User
Longtime User
Infatti scusate se non sono stato esplicito sto usando b4J su un server windows 2012 ...
 
Cookies are required to use this site. You must accept them to continue using the site. Learn more…