Newsgroup: it.comp.programmare.win32
Titolo: Tempo (msec)

Salve a tutti,
sono alle prime armi con la programmazione in Visual C++ sotto win32.
Problema: esiste la possibilita' di gestire un timer con la precisione del millisecondo?
Quali funzioni posso usare?
Grazie a tutti.
Paolo Zorat
-----------------------------------------------------------------
Get free personalized email from Lycos at 
http://it.lycosmail.com
--
Posted from 
rmx09.iname.net
 [165.251.8.95]
via Mailgate.ORG Server - 
http://www.mailgate.org

 wrote in message
news:0002290538...@webb1.iname.net...


 Quali funzioni posso usare?
Attento ai post multipli, questa tua richiesta e` apparsa molteplici
volte.
La GetTickCount, che ti e` stata consigliata in risposta, non e` la
soluzione giusta: infatti, come MSDN spiega, essa e` limitata alla
risoluzione del timer di sistema (che puoi imparare chiamando
l'API GetSystemTimeAdjustment, ma e` tipicamente di 55 msec).
Puoi invece usare i "multimedia timers" -- vedi le funzioni:
    timeBeginPeriod
    timeEndPeriod
    timeGetDevCaps
    timeGetSystemTime
    timeGetTime
e questi arrivano, appunto, al massimo al millisecondo;
ovvero, il singolo "high-resolution timer" acceduto attraverso
le API QueryPerformanceFrequency e QueryPerformanceCounter,
e questo tipicamente va con la massima precisione possibile
(normalmente microsecondo o meno) ma e` meno flessibile
da usare (puoi solo chiedergli quanto tempo e` passato da
una base arbitraria, mentre i multimedia timer consentono
varie altre cosette interessanti).
Inoltre, ci sono i "waitable timer", oggetti di kernel pure
di notevole potenza (vedi CreateWaitableTimer).
Alex


GetTickCount ti permette di controllare il clock di sistema (non sempre 
preciso al millisecondo), ma non di ricevere eventi (o comunque notifiche) 
asincroni, come nel caso dei timer.
I timer di sistema non sono troppo precisi (e sono pesantemente 
condizionati dalle priorità dei thread e dalla gestione del message loop). 
Solitamente si consigliano i multimedia timers per raggiungere un livello 
di precisione superiore (ma non posso assicurarti che gestiscano timeout al 
millisecondo).
P.S. per Claudio: scusa se ho "manipolato" il tuo post, era solo per dare 
un ordine logico domanda-risposta.
-- 
Valter Minute
min...@inwind.it
 (the reply address of this message is invalid)

 Alex
Cosa intendi quando dici che ... e questo tipicamente va con la massima
precisione possibile (normalmente microsecondo o meno)... ???
E' possibile, poi, con questo timer pilotare un'uscita (ad esempio la
porta parallela) con la precisione del millisecondo senza che altri
processi di Windows provochino degli sfasamenti temporali (modalita'
real time)?
Ciao
Paolo Zorat
--
Posted from 
com.area.trieste.it
 [193.207.32.15]


 real time)?
No, Windows non e` un sistema real-time, e neppure lo e` NT.
Il tuo processo potrebbe trovarsi "scansato da una parte" per
tempi anche molto superiore al millisecondo, e non e` certo un
timer di qualunque natura che puo` evitarlo; tutto quel che
puo` fare il timer e`, quando il tuo processo sara` di nuovo
nel suo quantum di esecuzione e fara` la chiamata all'API,
dirti esattamente quanto tempo e` trascorso.
Alex