Hinweis: Diese Webseite dient als Archiv und wird nicht mehr aktualisiert. Aktuelle Artikel gibt es unter http://bwir.de

Visual Basic Timer mit hoher Geschwindigkeit

"High Resolution Timer" für Anwendungen, bei denen der langsame Standardtimer nicht ausreicht

 

Dieser Artikel befindet sich im Archiv und wird nicht mehr aktualisiert. Informationen können ggf. veraltet, unvollständig oder fehlerhaft sein.

Der Standard-Timer unter Visual Basic ist ziemlich langsam. Meist erreicht er nur einen Intervall von 50ms. Das ist für manche Anwendungen zu wenig. Schneller geht's mit einem sog. "High Resolution Timer" - dort sind Intervalle von bis zu 1ms möglich. Allerdings sollte man nicht vergessen, dass Windows kein Echtzeit-Betriebssystem ist. Die Geschwindigkeit variiert also je nach Umgebungssituation.

Ich verwende hierzu den CCRP-Timer, der neben der normalen Timerfunktion noch andere Funktionen wie Countdown-Zähler enthält. Man kann ihn unter http://ccrp.mvps.org/ kostenlos herunterladen.

Installation

Zuerst kopiert man die im Archiv befindlichen Dateien ccrpTmr6.dll, ccrpTmr6.dep und ccrpTmr6.tlb ins Windows Systemverzeichnis (meist C:\Windows\System). Dann öffnet man eine Eingabeaufforderung, wechselt mit

 cd %windir%\system

ins Windows Systemverzeichnis und registriert nun mit folgendem Befehl die DLL

 regsvr32 ccrpTmr6.dll

Verwendung des Timers

Um den Timer in einem Projekt zu verwenden, muss man ihn über das Menü "Projekt -> Verweise..." hinzufügen. Seine Bezeichnung lautet dort "CCRP High Performance Timer Objects".

Nun kann man den Timer folgendermaßen initialisieren und verwenden

  
Private WithEvents Timer1 As ccrpTimer 'Timer1 am Programmanfang deklarieren
 
Private Sub Form_Load()
Set Timer1 = New ccrpTimer             'Timer1 initialisieren
With Timer1                            'Einstellungen vornehmen
      .EventType = TimerPeriodic       'Art des Timers
      .Interval = 1                    'Intervall in ms
      .Stats.Frequency = 1             '"Arbeitsfrequenz" des Timers in ms
      .Enabled = True                  'Aktiviert Ja/Nein
End With
End Sub
 
Private Sub Timer1_Timer(ByVal Milliseconds As Long) 'Prozedur des Timers
'Auszuführender Code
End Sub
 

Bei Art des Timers kann auch TimerOneShot angegeben werden - dann wird nach der eingegeben Zeit die Prozedur exakt einmal ausgeführt. Um die Hardware nicht unnötig zu belasten, sollte die "Arbeitsfrequenz" nur so hoch gestellt werden, wie es der Intervall benötigt.

Weitere Informationen findet man in der mitgelieferten Hilfedatei ccrpTmr6.chm.

Kommentar verfassen

Name:
E-Mail:
Optional - wird vor Spam geschützt
Kommentar:
HTML-Code ist nicht möglich
Tipp: Abonnieren Sie diese Kommentare als RSS-Feed, um über neue Einträge auf dem Laufenden zu sein.