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.
