Inhaltsverzeichnis
Cockpit.Sensorzeit
Cockpit-XP bietet mehrere Möglichkeiten, Zeitberechnungen durchzuführen. Die hier vorgestellte bezieht sich auf die an einem USB-Gerät angeschlossenen Sensoren zur Zeiterfassung.
Der Befehl Cockpit.Sensorzeit liefert den Zeitpunkt der Überfahrt eines Sensors, der an einem Cockpit-XP USB-Gerät angeschlossen ist. Es spielt keine Rolle, um welche Art Sensor es sich handelt. Prinzipiell könnte man davon ausgehen, dass Cockpit.Rennzeit und Cockpit.Sensorzeit gleiche Inhalte haben, da beide mit dem Start/der Freigabe einer Session beginnen und von 0
hochzählen.
Cockpit.Sensorzeit kommt z.B. zum Einsatz, wenn man Zeitunterschieden zwischen zwei Sensorüberfahrten berechnen möchte, z.B. zur eigenen Ermittlung von Sektor-/Zwischenzeiten.
Sowohl bei Cockpit.Rennzeit, Cockpit.RennzeitInvers als auch cpGetSystemTimeMs sind sonst Abweichungen gegenüber internen Variablen, z.B. Cockpit.Sektorzeit wahrscheinlich.
WICHTIG: Der interne Taktgeber der USB-Geräte wird NICHT angehalten, wenn eine Session unterbrochen (Chaos) ist. Entsprechend können sich mit zunehmender Dauer einer Session signifikante Unterschiede im Vergleich zu den anderen Zeitwerten ergeben.
Syntax
Befehl | Cockpit.Sensorzeit |
---|---|
Funktion | Liefert einen Zeitstempel der internen Zeitgeber der USB-Box in Millisekunden seit Rennfreigabe, wenn ein Sensor über- (Cockpit IR-Empfänger, Fotowiderstand) oder durchfahren (Gabellichtschranken) wird |
Typ | Integer |
Codebeispiel
{ Pascal Script Engine } { Event: DigInputEvent } { Parameter: Cockpit.Slot=<SlotPlatz;0/1=Status Eingang;>, Cockpit.Station=<EingangNummer>, Cockpit.Parameter=<DeviceNummer> } var message : String; diffZeit21 : Integer; begin // Aktivität auf USB-Gerät 1 erkannt if Cockpit.Parameter = 1 then begin // Eingang 1 hat ausgelöst if Cockpit.Station = 1 then begin // Zeitstempel 1 speichern cpSetIntegerVar('sensorZeit1', Cockpit.Sensorzeit); // Meldungstext erweitern cpSetStringVar('message', cpGetStringVar('message') + 'Zeit Sensor 1: '); cpSetStringVar('message', cpGetStringVar('message') + FormatFloat('#,##0', cpGetIntegerVar('sensorZeit1')) + ' ms'); cpSetStringVar('message', cpGetStringVar('message') + Chr(13) + Chr(10) ); end; // END if - Eingang 1 // Eingang 2 hat ausgelöst if Cockpit.Station = 2 then begin // Zeitstempel 2 speichern cpSetIntegerVar('sensorZeit2', Cockpit.Sensorzeit); // Meldungstext erweitern cpSetStringVar('message', cpGetStringVar('message') + 'Zeit Sensor 1: '); cpSetStringVar('message', cpGetStringVar('message') + FormatFloat('#,##0', cpGetIntegerVar('sensorZeit2')) + ' ms'); cpSetStringVar('message', cpGetStringVar('message') + Chr(13) + Chr(10) ); // Zeitdifferenz berechnen diffZeit21 := cpGetIntegerVar('sensorZeit2') - cpGetIntegerVar('sensorZeit1'); // Meldungstext erweitern cpSetStringVar('message', cpGetStringVar('message') + 'Differenz: '); cpSetStringVar('message', cpGetStringVar('message') + FormatFloat('#,##0', diffZeit21) + ' ms'); // Meldung anzeigen cpShowMessage(message); end; // END if - Eingang 2 end; // EDN if - USB-Gerät 1 end.
Das Bild das Ergebnis der Auswertung der beiden erfassten Zeitstempel von Sensor 1 und Sensor 2.
