Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it L'avatar di Gugu
    Registrato dal
    Nov 2002
    Messaggi
    523

    Funzione GetTickCount

    Ciao ragazzi,
    ho provato ad utilizzare la funzione gettickcount per leggere un tempo in millisecondi.
    perchè l'ultima cifra del numero restituito dalla funzione non sono
    precisi i millisecondi??
    Per esempio, un po' di campionature sono:

    20004331
    20004331
    20004331
    20004331
    20004341
    20004341
    20004341
    20004341
    20004352
    20004352
    20004352

    eccc..

    perchè?
    mi aspettavo una cosa del genere..
    20004331
    20004333
    20004334
    20004336
    20004341
    20004343
    ecc..
    ciao
    Ciao
    Andrea

  2. #2
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,463

    Moderazione

    Di quale linguaggio (e versione) parliamo?
    Ripassare il Regolamento...
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  3. #3
    Utente di HTML.it L'avatar di Gugu
    Registrato dal
    Nov 2002
    Messaggi
    523
    chiedo scusa..
    VISUAL BASIC 6.

    Ciao.
    Ciao
    Andrea

  4. #4
    Posta un pò il codice che hai usato..

    ciao

  5. #5
    Utente di HTML.it L'avatar di Gugu
    Registrato dal
    Nov 2002
    Messaggi
    523
    ma non è importante il codice..
    in qualsiasi modo lo usi!

    ti posto il codice di un esempio che ho trovato su internet:
    codice:
    Do: DoEvents
    list1.additem GetTickCount
    Loop Until Command1.Caption = "Start"
    nel mio caso vorrei leggere i millisecondi in cui si scatena
    un certo evento che è molto veloce (fai conto 1 ogni 2 o 5 ms)

    Non è importante il codice perchè ho provato in diversi modi.
    Altrimenti facciamo così:
    postami tu il codice di un esempio funzionante..
    Ciao
    Andrea

  6. #6
    Avevo chiesto il codice perchè volevo essere sicuro che fosse stato scritto tutto bene.
    Cmq prova questo codice:

    codice:
    Private Declare Function timeGetTime Lib "winmm.dll" () As Long
    Private Declare Function GetTickCount& Lib "kernel32" ()
    
    Private Sub Command1_Click()
    Do: DoEvents
    List1.AddItem Str(GetTickCount) & " " & timeGetTime
    Loop Until List1.ListCount = 20
    End Sub
    Nonostante ci siano problemi anche con la funzione timegettime ti ho postato questo esempio in quanto si vede come la seconda funzione sia più precisa di gettickcount: timegettime ha un intervallo di campionamento minore della prima funzione.
    Non so se ti potrà essere ugualmente utile, cmq fammi sapere..

    CIAO

  7. #7
    Utente di HTML.it L'avatar di Gugu
    Registrato dal
    Nov 2002
    Messaggi
    523
    Ho provato la ma differenza non è apprezzabile..
    nel mio pc risultano uguali i valori dalle 2 funzioni,
    solo ogni tanto ho qualche differenza ma il risultato è lo stesso:
    cambia la penultima cifra mentre l'ultima non è attendibile!
    Non esiste una funzione diversa più precisa??
    Esisterà bene un clock millesimale sul pc!!
    Nessun modo per leggerlo?
    Non mi interessa definire esattamente il millesimo di secondo..
    ma la cosa che mi da piuttosto noia è che se faccio 5 letture
    consecutive ho lo stesso numero per poi cambiare la penultima cifra!
    Anche una dll, qualcosa critto in C da richiamare...
    Boo..
    Grazie 1000 per l'aiuto...
    ciao
    Ciao
    Andrea

  8. #8
    Utente di HTML.it L'avatar di Gugu
    Registrato dal
    Nov 2002
    Messaggi
    523
    RISOLTO!!!

    Utilizzando la funzione che mi hai suggerito, aggiungendo la funzione:
    codice:
    Private Declare Function timeGetTime Lib "winmm.dll" () As Long
    Private Declare Function timeBeginPeriod Lib "winmm.dll" (ByVal uPeriod As Long) As Long
    
    Do: DoEvents
    timeBeginPeriod 1
    TEMPO1 = timeGetTime - INIZIO
    List2.AddItem TEMPO1
    Loop Until TEMPO1 = 60000
    Ho provato a vedere nella list2 e ho visto che vedo scorrere finalmente le cifre dei millesimi correttamente (quella che cambia
    più frequentemente è l'ultima) e si incremente di uno alla volta.
    con la funzione cos' scritta vedo più letture ogni millisecondo..
    ma va bene, ora sistemo la cosa.
    IMPORTANTE PER TUTTI E' CHE HO SCOPERTO CHE CON WIN2000, XP NECESSARIAMENTE VA SPECIFICATA LA RISOLUZIONE CON timeBeginPeriod
    PERCHE' DI DAFAULT E' 10!!!!
    MENTRE PER WIN95, WIN 98 E' 1.
    Tutto qui!
    Ciao ciao
    Ciao
    Andrea

  9. #9
    Sinceramente non lo sapevo..cmq grazie..


    CIAO

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.