Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1228to1232
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Timerfunktion für Prozesse im 5ms Bereich

Timerfunktion für Prozesse im 5ms Bereich
David
Guten Tag,
ich arbeite momentan an einer konfigurationssoftware für eine USB Messkarte über VBA. DAS ganze ist aufgeteilt in 2 Arbeitsblätter. eines zur Einstellung und Konfiguration und ein anderes zur Aufnahme und grafischen Darstellung der Messwerte.
Mein Problem ist nun folgendes. Es handelt sich um sich relativ schnell ändernde messwerte so das ich einen Zeitstempel benötige der etwas schneller ist als 5ms pro Messzyklus.
momentan arbeite ich mit der Timer Funktion (Sekunden seit Mitternacht). Ich gebe eine Startzeit vor und nach jedem Messvorgang ziehe ich aktuelle Zeit von der Startzeit ab. Das Problem besteht nun darin, dass ein Messvorgang etwa 5ms dauert aber die Timerfunktion sich nur in etwa 15ms Schritten ändert. Somit habe ich zu gleichen Zeiten verschiedene Messwerte was so schwierig auswertbar ist.
Gibt es irgendwelche alternativen von Windows um genauere Zeiten zu erhalten? Wenn ja wo kann ich diese finden.

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Timerfunktion für Prozesse im 5ms Bereich
08.09.2011 13:34:36
Felix
Hallo David,
habe da eine Timerklasse über die API,
glaube von ActiveVB, ist aber sehr verbreitet im Internet.

Attribute VB_Name = "mdlTimer"
Option Explicit
Declare Function SetTimer Lib "user32" _
(ByVal hwnd As Long, _
ByVal nIDEvent As Long, _
ByVal uElapse As Long, _
ByVal lpTimerFunc As Long) As Long
Declare Function KillTimer Lib "user32" _
(ByVal hwnd As Long, _
ByVal nIDEvent As Long) As Long
Private lngTimerID As Long
Private blnTimer As Boolean
Private Sub CallbackProc(ByVal hwnd As Long, _
ByVal uMsg As Long, _
ByVal idEvent As Long, _
ByVal dwTime As Long)
'Hier passiert die Magie. Bspw. eine Sub aufrufen!
End Sub
Public Sub StartTimer()
If Not blnTimer Then
lngTimerID = SetTimer(0, 0, 1000, AddressOf CallbackProc) '1000 = Anzahl MS
If lngTimerID = 0 Then
MsgBox "Fehler!"
Exit Sub
End If
blnTimer = True
Else
MsgBox "Timer läuft bereits"
End If
End Sub
Public Sub StopTimer()
If blnTimer Then
lngTimerID = KillTimer(0, lngTimerID)
If lngTimerID = 0 Then
MsgBox "Fehler!"
End If
blnTimer = False
Else
MsgBox "Timer läuft nicht"
End If
End Sub
Public Function TimerIsOn() As Boolean
TimerIsOn = blnTimer
End Function

Anzeige
AW: Timerfunktion für Prozesse im 5ms Bereich
08.09.2011 13:52:17
David
Danke erstmal für die Antwort, aber ich befürchte, dass es nicht das ist was ich suche. Der Messprozess läuft kontinuierlich ab, ich gebe nur die Anzahl der Messungen vor und andere Einstellungen vor. Der von dir Vorgegebene Quelltext gibt mir einen Timer vor der dann abläuft. Für meine Zwecke nicht zwingend geeignet da ich nur Zeitstempel benötige nach einem Messvorgang.
Ich habe schon mehrere Zeitfunktionen durchprobiert. Die Excel eigene Timer-funktion ( Welche die Sekunden seit Mitternacht angibt) und GetTickCount() aus der Kernel32.dll ( Welche die Milisekunden Seit Systemstart angibt. ). Beide liefern leider nur alle 15 - 16 milisekunden einen neuen Wert. habe es auch in C# probiert und kam da zu der selben Zeitdifferenz.
Ich vermute nun das mein eigentliches Problem Windows ist, welches nicht schnell genug auf meine Zeitwünsche reagieren kann.
Falls ich jedoch etwas übersehen habe bin ich gerne für weitere Vorschläge offen.
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige