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 invertierten 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.RennzeitInvers);
// Meldungstext erweitern
cpSetStringVar('message', cpGetStringVar('message') +
'Zeit Sensor 1: ' +
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.RennzeitInvers);
// 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: ' + 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.
