Inhaltsverzeichnis
Cockpit.Zwischenzeit
Einleitung
Cockpit-XP unterscheidet zwischen Sektorzeit und Zwischenzeit. Für beide Varianten gibt es entsprechende Befehle im AddOn.
Allerdings ist der Programmieraufwand derzeit etwas höher als bei der Topspeed. Da es kein eigenes Event gibt, geht die Verarbeitung nur über das DigInputEvent.
Um hier funktionierenden Code zu erhalten, muss für jeden Eingang in der Rennbahn neben der Funktion Zwischenzeit (Station) auch Ereignis erzeugen: Fahrzeug eingestellt sein. Zusätzlich wird es erforderlich, die Nummer der USB-Geräte zu notieren. Es kann vorkommen, dass die Sensoren auf mehr als ein USB-Gerät verteilt sind.
Cockpit.Zwischenzeit addiert mit jedem Sektor die gefahrene Zeit in diesem Streckenabschnitt. Daraus ergeben sich folgende Vergleichswert (hier mit 3 Sektormessungen):
Zwischenzeit 1 = Sektorzeit 1
Zwischenzeit 2 = Sektorzeit 1 + Sektorzeit 2
Zwischenzeit 3 = Sektorzeit 1 + Sektorzeit 2 + Sektorzeit 3 oder Rundenzeit
Die Zeiten für alle Sektorenmesspunkte lässt sich mit dem Befehl Cockpit.ResetZwischenzeit auf 0 setzen.
Syntax
| Befehl | Cockpit.Zwischenzeit |
|---|---|
| Funktion | Enthält die Zwischenzeit für einen Messpunkt als Integerwert |
| Typ | Integer |
Codebeispiel
Der Umfang des Beispielcodes zeigt gut den Unterschied im Aufwand verglichen mit dem Topspeed-Befehl.
{ Pascal Script Engine }
{ Event: DigInputEvent }
{ Parameter:
Cockpit.Slot=<SlotPlatz; 0/1=Status Eingang;>,
Cockpit.Station=<EingangNummer>,
Cockpit.Parameter=<DeviceNummer> }
const
USBBoxNr1 = 1;
USBBoxNr2 = 2;
var
slot : Integer;
eingangNr : Integer;
sektorzeit : Integer;
zwischenzeit : Integer;
rundenzeit : Integer;
msg : String;
begin
// Ereignis an USB-Box 1 erkannt
if Cockpit.Parameter = USBBoxNr1 then
begin
// Nummer des Eingangs, der aktiviert wurde
eingangNr := Cockpit.Station;
// Slot speichern und einstellen
slot := Cockpit.Slot;
Cockpit.Slot := slot;
// je nach Eingangsnummer Messpunkt einstellen
// und Sektor-/Zwischenzeit erfassen
case eingangNr of
1..4 :
// Eingänge 1-4 = Sektor 3
begin
Cockpit.Station := 3;
sektorzeit := Cockpit.Sektorzeit;
zwischenzeit := Cockpit.Zwischenzeit;
rundenzeit := Cockpit.Rundenzeit;
end;
5..8 :
// Eingänge 5-8 = Sektor 2
begin
Cockpit.Station := 2;
sektorzeit := Cockpit.Sektorzeit;
zwischenzeit := Cockpit.Zwischenzeit;
end;
end;
// Meldung zusammenstellen
msg := msg + Chr(13) + Chr(10);
msg := msg + 'Sektor [' + IntToStr(Cockpit.Station) + ']: ';
msg := msg + cpIntToStr3(sektorzeit) + 's';
msg := msg + Chr(13) + Chr(10);
msg := msg + 'Zwischenzeit: ' + cpIntToStr3(zwischenzeit) + 's';
// Rundenzeit nur bei Sektor 3 einblenden
if Cockpit.Station = 3 then
begin
msg := msg + Chr(13) + Chr(10);
msg := msg + 'Rundenzeit: ' + cpIntToStr3(rundenzeit) + 's';
end;
// Meldung anzeigen
cpShowMessage(msg);
end; // END if - USB-Box 1
// Ereignis an USB-Box 1 erkannt
if Cockpit.Parameter = USBBoxNr2 then
begin
// Nummer des Eingangs, der aktiviert wurde
eingangNr := Cockpit.Station;
// Slot speichern und einstellen
slot := Cockpit.Slot;
Cockpit.Slot := slot;
// je nach Eingangsnummer Messpunkt einstellen
// und Sektor-/Zwischenzeit erfassen
case eingangNr of
1..4 :
// Eingänge 1-4 = Sektor 1
begin
Cockpit.Station := 1;
sektorzeit := Cockpit.Sektorzeit;
zwischenzeit := Cockpit.Zwischenzeit;
end;
end;
// Meldung zusammenstellen
msg := msg + Chr(13) + Chr(10);
msg := msg + 'Sektor [' + IntToStr(Cockpit.Station) + ']: ';
msg := msg + cpIntToStr3(sektorzeit) + 's';
msg := msg + Chr(13) + Chr(10);
msg := msg + 'Zwischenzeit: ' + cpIntToStr3(zwischenzeit) + 's';
// Meldung anzeigen
cpShowMessage(msg);
end; // END if - USB-Box 2
end.
Dieser Code zeigt die Sektor- und Zwischenzeiten an. Zum Vergleich ist mit dem Windows Rechner die Summe der Sektorzeiten addiert. Schön zu sehen, wie sich Sektor- und Zwischenzeit unterscheiden. Ebenfalls gut erkennbar, das Zwischenzeit = der Rundenzeit bzw. der Summe aller 3 Sektorzeiten entspricht.


