Newsgroup: it.comp.lang.visual-basic
Titolo: [NET] Contare i millisecondi

Ciao a tutti...
in una mia applicazione interrogo via seriale un apparato... la
comunicazione avviene a grosse linee con questa modalita': Invio la
richiesta ed aspetto che mi arrivi una risposta... una volta ricevuta avvio
una ulteriore richiesta... adesso mentre attendo l'arrivo dei dati mi
occorre contare il trascorrere dei millesecondi (anche per riuscire ad avere
un time out per l'ascolto dei dati e per capire quanto tempo impiego a
ricevere i dati). In una vecchia applicazione VB6 mi servivo per questo di
un oggetto timer tarato a 1 m/s (no quello standar di VB6 perche' non teneva
quella frequenza). Adesso con VB net sto facendo la stessa identica cosa ma
ho dei problemi... nel senso che sembra che il thread del timer sia
prioritario rispetto all'evento oncomm della classe che controlla la seriale
(classe di Corrado Cavalli)... sbaglio qualcosa? Il thread timer di net e'
diverso da quello di VB6? Questo oggetto fa al caso mio? O concettualmente
non puo' funzionare? Qualcuno a qualche sugerimento? Grazie
--------------------------------
Inviato via 
http://arianna.libero.it/usenet/

 ha scritto nel messaggio
news:212Z162Z86Z232Y...@usenet.libero.it...

Per un problema analogo in VB6 io ho inserito nel ciclo di attesa dei dati
sulla COM il controllo del tempo tramite l'API GetTickCount():
Public Declare Function GetTickCount Lib "kernel32" Alias "GetTickCount" ()
As Long
lngStart = GetTickCount()
[...]
'Inizio cliclo attesa
[...]
    If lngStart - GetTickCount() >= lngTempoTimeOut Then
        'Esce dall'attesa dei dati sulla COM
    End If
[...]
'Fine ciclo attesa
Non so se ti puņ aiutare.
Ciao
Esteban

 ha scritto nel messaggio
news:bqkr5e$2314j8$1...@ID-217323.news.uni-berlin.de...


Doraemon wrote:

Ma la seriale non ha un suo timeout impostabile?
Comunque puoi guardare, se ti servono i thread, il namespace 
System.Threading.
Per contare i millisecondi credo tu possa farlo con la classe TimeSpan.
Ciao

Se usi la modalita' sincrona puoi impostare il timeout entro il quale devi
avere una risposta onde evitare un eccezione di Timeout, se vuoi lavorare in
maniera asincrona puoi usare i timers presenti in .NET visto che per
intercettare un errore di timeout non credo ti serva una precisione
superiore ai 55ms(il tick) di sistema.
In .NET esistono 3 diversi tipi di timers, la cui differenza principale,
oltre ad una leggera differenza di precisione e' il fatto che l'evento Tick
(o Elapsed) avviene o meno nello stesso thread principale e il fatto che
l'evento venga o meno generato se esistono dei messaggi nella message pump
della tua applicazione.
Qui
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vbcon/html/vbconServerBasedTimers.asp
trovi ulteriori dettagli
Se hai bisogno di fare misure di tempo estremamente precise dai un occhiata
qui
http://www.eggheadcafe.com/articles/20021111.asp
HTH
-- 
Corrado Cavalli [Microsoft .NET MVP-MCP]
UGIdotNET - 
http://www.ugidotnet.org
Weblog: 
http://www.ugidotnet.org/710.blog

 ha scritto nel
messaggio news:bqlkj2$1vnu64$1...@ID-209982.news.uni-berlin.de...


 ha scritto nel
messaggio news:bqlkj2$1vnu64$1...@ID-209982.news.uni-berlin.de...
