Punto informatico Network
Login Esegui login | Non sei registrato? Iscriviti ora (è gratuito!)
Username: Password:
  • Annuncio Pubblicitario

[VB] Timer + preciso di 1ms

Il forum per tutti i developer. Leggere attentamente il regolamento di sezione prima di postare.

[VB] Timer + preciso di 1ms

Messaggioda M@ttia » gio lug 22, 2004 5:49 pm

Avevo visto una volta in internet un modo x implementare, tramite le API mi sembra, un timer in VB 6 che fosse
+ preciso di 1ms come quello attuale di basic... qualcuno sa niente in proppsito??? Grazie! [^]
Avatar utente
M@ttia
Moderatore
Moderatore
 
Messaggi: 8363
Iscritto il: lun giu 09, 2003 2:18 pm
Località: Ticino - Estero

Messaggioda Xerex » gio lug 22, 2004 6:14 pm

Non cnosco niente in proposito, però, pensandoci un modo un po' complicato ci potrebbe essere...

Crei un'applicazione che cattura un particolare segnale, e un'altra che produce segnali a ripetizione...
in quel modo hai un timer, il modo in cui potresti sfruttarlo però non lo so![angel]
Avatar utente
Xerex
Membro Ufficiale (Gold)
Membro Ufficiale (Gold)
 
Messaggi: 5948
Iscritto il: lun ago 05, 2002 9:36 am
Località: Parma(Pr)

Messaggioda Ices_Eyes » gio lug 22, 2004 6:25 pm

Io so dirti che i timer di vb in realtà hanno una precisione di 55ms,e non di 1, c'è però un api che si chiama (non mi ricordo)
che invece lo da corretto in tempi di clock...Ora vedo se la ritrovo...

Ciao [^]
Avatar utente
Ices_Eyes
Membro Ufficiale (Gold)
Membro Ufficiale (Gold)
 
Messaggi: 5543
Iscritto il: ven ott 24, 2003 10:37 am
Località: Prov. di Venezia


Messaggioda M@ttia » gio lug 22, 2004 7:17 pm

Ehm, credo opterò x la soluzione di Ices... [:-H]
Avatar utente
M@ttia
Moderatore
Moderatore
 
Messaggi: 8363
Iscritto il: lun giu 09, 2003 2:18 pm
Località: Ticino - Estero

Messaggioda Xerex » gio lug 22, 2004 7:39 pm

<blockquote id="quote"><font size="1" face="Verdana, Arial, Helvetica" id="quote">citazione:<hr height="1" noshade id="quote"><i>Messaggio inserito da M@ttia</i>
<br />Ehm, credo opterò x la soluzione di Ices... [:-H]
<hr height="1" noshade id="quote"></blockquote id="quote"></font id="quote">

Immaginavo[fischio]
Avatar utente
Xerex
Membro Ufficiale (Gold)
Membro Ufficiale (Gold)
 
Messaggi: 5948
Iscritto il: lun ago 05, 2002 9:36 am
Località: Parma(Pr)

Messaggioda Zane » ven lug 23, 2004 9:23 am

Ce l'ho io: ora devo fuggire, te lo posto entro il weekend!
Avatar utente
Zane
MLI Hero
MLI Hero
 
Messaggi: 7935
Iscritto il: lun ago 05, 2002 9:36 am
Località: Ferrara

Messaggioda Zane » ven lug 23, 2004 11:02 am

Codice: Seleziona tutto
Attribute VB_Name = "modTimer"
' Win32Api Dan Appleman

Public tempoinizio As Long 'Inizio del cronos
Public tempofine As Long    'Fine
Public risultatocronometro As Long  'SE
Public timePrecisioneMacchina As Long
Public timeResp As Long 'Tutto il resto che nn interessa

Public Type TIMECAPS
        wPeriodMin As Long
        wPeriodMax As Long
End Type

Public Type MMTIME
        wType As Long
        u As Long
End Type

Public Declare Function timeGetDevCaps Lib "winmm.dll" (lpTimeCaps As TIMECAPS, ByVal uSize As Long) As Long
'Interroga il sys e si fa dire qual è la precisione di gestione dei tempi
'Prende: un TIMECAPS (mette la rispsota), una dimensione del cestino di rispsota.



Public Declare Function timeBeginPeriod Lib "winmm.dll" (ByVal uPeriod As Long) As Long
Public Declare Function timeEndPeriod Lib "winmm.dll" (ByVal uPeriod As Long) As Long
Public Declare Function timeGetSystemTime Lib "winmm.dll" (lpTime As MMTIME, ByVal uSize As Long) As Long

Public Declare Function timeGetTime Lib "winmm.dll" () As Long
'Prende l'epoca in cui lo chiamo: facendo la differenza
'fra primo e seconda epoca ottengo quanto è passato
'Precisione di 5ms (difetto o eccesso, a seconda del più vicino)
'Miglioriamo (1ms) usando begin e end

Public Declare Function timeKillEvent Lib "winmm.dll" (ByVal uID As Long) As Long
Public Declare Function timeSetEvent Lib "winmm.dll" (ByVal uDelay As Long, ByVal uResolution As Long,
ByVal lpFunction As Long, ByVal dwUser As Long, ByVal uFlags As Long) As Long




Public Const TIME_SMPTE = &H8     '  ora SMPTE
Public Const TIME_SAMPLES = &H2     '  numero di campioni di onde
Public Const TIME_PERIODIC = 1  '  programma per evento periodico continuo
Public Const TIME_ONESHOT = 0  '  timer di programma per evento singolo
Public Const TIME_NOTIMEMARKER = &H4         '  non usa indicatore di ora
Public Const TIME_NOSECONDS = &H2         '  non usa secondi
Public Const TIME_NOMINUTESORSECONDS = &H1         '  non usa minuti o secondi
Public Const TIME_MS = &H1     '  tempo in millisecondi
Public Const TIME_MIDI = &H10    '  ora MIDI
Public Const TIME_FORCE24HOURFORMAT = &H8         '  usa sempre formato 24 ore
Public Const TIME_BYTES = &H4     '  offset byte corrente
Public Const TIMERR_BASE = 96 '  era 128, modificato in base a Win 31 Sonic
Public Const TIMERR_NOCANDO = (TIMERR_BASE + 1) '  richiesta non completata
Public Const TIMERR_NOERROR = (0)  '  nessun errore
Public Const TIMERR_STRUCT = (TIMERR_BASE + 33) '  dimensioni struttura ora




Public Sub timeInit()
    Dim cestinodirisposta As TIMECAPS
    Dim grandezzacestino As Long
    Dim risposta As Long
   
    grandezzacestino = Len(cestinodirisposta)
    syscaps = modTimer.timeGetDevCaps(cestinodirisposta, grandezzacestino)
   
    timePrecisioneMacchina = cestinodirisposta.wPeriodMax
    timePrecisioneMacchina = cestinodirisposta.wPeriodMin
   
End Sub
Più o meno: nn riesco a darti altri dettagli xchè al momento nn ho VB installato ([nomi]!) e ho dovuto guardare il codice in notepad..
Avatar utente
Zane
MLI Hero
MLI Hero
 
Messaggi: 7935
Iscritto il: lun ago 05, 2002 9:36 am
Località: Ferrara

Messaggioda M@ttia » ven lug 23, 2004 2:29 pm

Grazie ora faccio io [^] [brindisi]
Avatar utente
M@ttia
Moderatore
Moderatore
 
Messaggi: 8363
Iscritto il: lun giu 09, 2003 2:18 pm
Località: Ticino - Estero

Messaggioda Ices_Eyes » ven lug 23, 2004 2:41 pm

Ecco...Io avevo trovato quella che avevo usato, che era la timeGetTime, ma a questo punto non so che precisione avesse...[?]

Ciao [^]

PS le modifiche ai vari post le ho fatte cercando di far visualizzare la pagina senza la barra di scorimento orizontale che a volte appare (1024x768),un po' è servito, ma non del tutto...[:(!]
Avatar utente
Ices_Eyes
Membro Ufficiale (Gold)
Membro Ufficiale (Gold)
 
Messaggi: 5543
Iscritto il: ven ott 24, 2003 10:37 am
Località: Prov. di Venezia

Messaggioda M@ttia » ven lug 23, 2004 6:04 pm

Ehm, sto provando ad usare questa funzione, ma non riesco ancora a capirla bene.. ho messo tutto in un modulo tranne il sub finale che lo metto come codice del form, e fin qui tutto ok, ma poi se chiamo la funzione timeInit() mi da errore... [?] (nel senso, non capisco come faccio ad integrarla con un timer...) [:-H]
Avatar utente
M@ttia
Moderatore
Moderatore
 
Messaggi: 8363
Iscritto il: lun giu 09, 2003 2:18 pm
Località: Ticino - Estero

Messaggioda Ices_Eyes » ven lug 23, 2004 6:19 pm

E'??? [?]
Avatar utente
Ices_Eyes
Membro Ufficiale (Gold)
Membro Ufficiale (Gold)
 
Messaggi: 5543
Iscritto il: ven ott 24, 2003 10:37 am
Località: Prov. di Venezia

Messaggioda M@ttia » ven lug 23, 2004 7:29 pm

Niente tutto a posto, colpa mia che avevo cannato una cosetta... [:-H]
Avatar utente
M@ttia
Moderatore
Moderatore
 
Messaggi: 8363
Iscritto il: lun giu 09, 2003 2:18 pm
Località: Ticino - Estero


Torna a Programmazione

Chi c’è in linea

Visitano il forum: Nessuno e 3 ospiti

cron
Powered by phpBB © 2002, 2005, 2007, 2008 phpBB Group
Traduzione Italiana phpBB.it

megalab.it: testata telematica quotidiana registrata al Tribunale di Cosenza n. 22/09 del 13.08.2009, editore Master New Media S.r.l.; © Copyright 2008 Master New Media S.r.l. a socio unico - P.I. 02947530784. GRUPPO EDIZIONI MASTER Spa Tutti i diritti sono riservati. Per la pubblicità: Master Advertising