Cockpit-XP bietet mehrere Möglichkeiten, Zeitberechnungen durchzuführen. Die hier vorgestellte bezieht sich auf die vorgegebene Zeit für einen Rennmodus (Training, Quali, Rennen).
Der Befehl Cockpit.Rennzeit liefert den Zeitpunkt ab dem Start/der Freigabe einer Session.
Ist eingestellt, dass die Rennzeit erst mit der ersten Überfahrt von Start/Ziel beginnt, gilt bis dahin der initiale Wert. Bei einem Training, einer Qualifikation beginnt die Zeit mit Wert 0
und zählt dann hoch, bis die Session beendet ist.
In einem Rennen in der Initalwert die Vorgabezeit in Millisekunden. Bei einem 5 Minuten Rennen ist der Startwert 300.000 ms
.
Cockpit.RennzeitInvers basiert in allen 3 Rennmodi auf dem Startwert 0
. Der Einsatz ist sinnvoll, wenn man für die Ermittlung von Zeitdifferenzen die Formeln nicht für Rennen und Training/Quali doppelt und mit umgekehrter Subtraktion verwenden möchte.
WICHTIG:
Cockpit.Rennzeit und Cockpit.RennzeitInvers erhalten ihre Werte erst mit dem Start einer Session. Im Event StartRealTime ist der Wert noch 0
.
Ist der Modus Freies Training gewählt, gibt es keine Zeitvorgabe und die Werte von Cockpit.Rennzeit und Cockpit.RennzeitInvers sind ebenfalls 0
.
Befehl | Cockpit.Rennzeit |
---|---|
Funktion | Liefert die laufende Zeit ab dem Start/der Freigabe einer Session. |
Typ | Integer |
In dem folgenden Beispiel wird die Differenz zwischen zwei Sensoren aus der Rennzeit berechnet.
{ 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.Rennzeit); // 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.Rennzeit); // 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 links zeigt das Ergebnis der Auswertung mit eingestellter Rundenvorgabe (10 Runden). In der Mitte die gleichen Werte mit Zeitvorgabe (10 min.) und rechts die Zeiten in einem Freien Training.
Die Zeitdifferenzen zwischen Rennzeit/RennzeitInvers und Sensorzeit ist die Reaktionszeit beim Start einer Session. Die Rennzeit läuft erst bei Überfahrt des 1. Sensors, die Sensorzeit mit der Freigabe der Session.