Newsgroup: it.comp.lang.visual-basic
Titolo: Campioni 1/10000 di secondo

Come posso realizzare temporizzazioni di circa 1/10000 di secondo?
Mi serve per prendere dei dati da una linea della porta parallela.
Grazie

 ha scritto nel messaggio
news:QfRj7.84035$TS4.6...@news2.tin.it...



Uhm, c'e' qualcosa che mi sfugge ...
ciao, hal


bhe si usano i mezzi che si hanno a disposizione ehheheheh :))
--
-------
sito: 
www.dadev.it
ultime: Ocx per irc testi freeware
-------

 Mi serve per prendere dei dati da una linea della porta parallela.
Fai una semplice prova. Scrivi in ciclo che richiama la tua funzione di
lettura dati dalla parallela 10.000 volte e poi vedi quanto tempo è passato.
Se è passato più di 1 secondo, quello che vuoi fare è semplicemente
impossibile (o almeno lo è in Visual Basic).
Ciao
*Roby*


Il problema principale è il jitter temporale che puoi tollerare:
la soluzione timer da 1 sec con dentro 10 cicli ha un jitter terrificante,
anche
perchè, se non sbaglio, gli eventi dei timer vengono "sparati" tramite
messaggi che girano sulla coda di messaggi delle applicazioni: in pratica
non puoi sapere quando ti arriverà il msg.
Una soluzione più seria è utilizzare i multimedia timers di Windows (v.
Windows
SDK). Sono molto precisi (puoi specificare anche il jitter tollerato).
Purtroppo su macchine "normali", tipo PIII 600MHz è quasi impossibile
andare oltre a 1000 eventi al secondo senza impallare il sistema.
Maggiori prestazioni dovresti riuscire a raggiungerle scrivendo
un kernel driver apposito, ma lascerei stare in partenza la bega.
Solitamente le prestazioni che chiedi si ottengono tramite schede con un
loro sample buffer, campionatore, trasferimenti DMA, ecc.
Trovi un po' di tutto sul sito National Instruments (
www.ni.com
) e simili.
Ciao, Massimo.

 non puoi sapere quando ti arriverà il msg.
Già, senza contare che il tick di un timer è lo stesso del clock di sitema:
~1/18 di secondo.
Quindi non più di un ciclo ogni 50ms.
Ciao


Propio ora ho visto questo componente free che ti puo' servire:
MB HiTimer Control & Library 
lo trovi qui:
http://cuinl.tripod.com/activex-7.htm
Ciao


Lasciamo perdere... eh...        :(
ciao
ugo

 provocare un overflow dei server di google!
hehe, in effetti è "leggermente" una FAQ (con la Q vero?)
Ciao

 Mi serve per prendere dei dati da una linea della porta parallela.
Usa il timer del kernel (NtDelayExecution, libreria ntdll.dll - solo 
Windows NT), ha una risoluzione misurabile in nanosecondi (non ricordo 
però a quanto equivalga un nanosecondo)
La funzione è definita come:
Type TIME
 LowPart As Long
 HighPart As Long
End Type
Declare Function Lib "ntdll.dll" _
NtDelayExecution( _
 ByVal Alertable As Boolean, _
 Interval As TIME _
) _
As Long

bhe si usano i mezzi che si hanno a disposizione ehheheheh :))
verissimo :-P
ciao, hal

........
qualche vantaggio si potrebbe avere facendo girare il thread come
THREAD_PRIORITY_TIME_CRITICAL,
SetPriorityClass(GetCurrentProcess, REALTIME_PRIORITY_CLASS)
SetThreadPriority(GetCurrentThread, THREAD_PRIORITY_TIME_CRITICAL)
...ovviamente senza l'uso del WM_TIMER, ma con una routine fatta
apposta....... o no????
[_AmaRoK_]

 ha scritto nel messaggio
news:QfRj7.84035$TS4.6...@news2.tin.it...


 ha scritto nel messaggio
news:9mrbml$3i70b$1...@ID-56381.news.dfncis.de...

Se avete una soluzione migliore...

 ha scritto nel messaggio
news:QfRj7.84035$TS4.6...@news2.tin.it...


 wrote in message
QfRj7.84035$TS4.6...@news2.tin.it...



Io ne sarei quasi certo:
questo cmq dimostra quanto poche persone consultino i post passati...
ciao
ugo

Jarni ha scritto:

Uhm, non vorrei mai si pensasse che le battute avessero come obiettivo il
tuo intervento o, peggio, la tua persona :-(
Almeno per quanto mi riguarda, puoi escluderlo in pieno :-)
ciao, hal

 ha scritto nel messaggio
news:9n0o6c$4kgfm$1...@ID-56381.news.dfncis.de...

ok

 ha scritto nel messaggio
news:9n0m2h$jkn$1...@pegasus.tiscalinet.it...

Beh, facile, no?


1 miliardesimo di secondo, 10E-9.