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.



Start - FAQ - Glossar - Sitemap - Impressum