Zeitmessprotokoll » Historie » Version 8
Steffen Christgau, 12.08.2019 22:18
1 | 1 | Steffen Christgau | h1. Zeitmessprotokoll |
---|---|---|---|
2 | |||
3 | 8 | Steffen Christgau | {{toc}} |
4 | |||
5 | 1 | Steffen Christgau | Neben der Unterstützung für Software-Protokollen von Hardware-Herstellern, wie Omega oder Tag Heuer, zwecks Unterstützung von Zielkameras oder hoch-präzisen Uhren bietet Aquarius ein Software-Protokoll mit dem sich Zeitmessung umsetzen lässt. Das Protokoll lässt sich unabhängig vom Transportmedium (TCP/IP, serielle Schnittstelle) unter @Datei -> Verbindungseinstellungen@ einrichten. |
6 | |||
7 | h2. Datenformat |
||
8 | |||
9 | 5 | Steffen Christgau | Daten werden im Protokoll zeilenweise übertragen. Als Zeilenumbruch werden sowohl CR-LF-Sequenzen (vgl. ASCII-Code) und einzelne LF-Zeichen akzeptiert. Gesendet werden immer CR-LF-Sequenzen. |
10 | 1 | Steffen Christgau | |
11 | 6 | Steffen Christgau | Eine Zeile, die an Aquarius gesendet wird, besteht aus einem Kommando und optionalen Argumenten. Argumente werden durch Leerzeichen vom Kommando sowie voneinander getrennt. Argumente bestehen aus Schlüssel-Wert-Paaren. Dem Namen (Schlüssel) des Argumente folgt ein "=", darauf der jeweilige Wert. |
12 | 1 | Steffen Christgau | |
13 | Beispiel: @COMMAND arg1=value1 arg2=value2@ |
||
14 | |||
15 | 7 | Steffen Christgau | Antworten (sofern vorgesehen) werden von Aquarius ebenfalls zeilenweise gesendet. Eine Leerzeile folgt einer mehrzeiligen Antwort, um deren Ende zu signalisieren. |
16 | 1 | Steffen Christgau | |
17 | Groß- und Kleinschreibung ist grundsätzlich relevant. |
||
18 | |||
19 | h2. Kommandos |
||
20 | |||
21 | h3. Status-Abfrage |
||
22 | |||
23 | 3 | Steffen Christgau | Mit dem Kommando @STATUS@ (keine Argumente) werden die gestarteten Läufe und die gestarteten Boote abgefragt. Die Antwort enthält so viele Zeilen (ohne abschließende Leerzeile) wie gestartete Boote vorliegen. Neben der Laufnummer werden die (individuelle) Startzeit, Startbahn und Startnummer der Boote übermittelt. Die Startzeit wird im Format @hh:mm:ss.ddd@ (ddd = Tausendstel der Sekunde) übertragen. Die Angaben sind durch ein einzelnes Leerzeichen voneinander getrennt. |
24 | 1 | Steffen Christgau | |
25 | 3 | Steffen Christgau | Beispiel (Pfeile am Beginn der Zeile signalisieren die Richtung der Daten, Aquarius links, Client rechts): |
26 | 1 | Steffen Christgau | |
27 | 2 | Steffen Christgau | <pre> |
28 | < STATUS |
||
29 | > 12 1 1 12:00:53.934 |
||
30 | > 12 2 2 12:00:53.934 |
||
31 | > 12 3 3 12:00:53.934 |
||
32 | > |
||
33 | 4 | Steffen Christgau | </pre>Hier starten im Lauf mit der Nummer 12, drei Boote auf den Bahnen 1 bis 3 mit identischen Startnummern. Startzeit für alle Boote ist kurz nach 12:00 Uhr. Eine Sortierung der Datensätze ist nicht definiert. Die Leerzeile signalisiert das Ende der Datensätze. |
34 | 2 | Steffen Christgau | |
35 | 1 | Steffen Christgau | h3. Zeitmessdaten senden |
36 | |||
37 | 2 | Steffen Christgau | Um Zeiten an Aquarius zu senden, muss das Kommando @TIME@ abgesetzt werden. Es können die folgenden Argumente angegeben werden, die alle optional sind: |
38 | |||
39 | * time: Tageszeit für die Zeitmessdaten. Wird diese Argument nicht angegeben, wird die aktuelle Zeit auf dem empfangenden Aquarius-Rechner verwendet. |
||
40 | * bib: Startnummer des Boots, für das die Zeit aufgezeichnet werden soll. |
||
41 | * lane: Startbahn des Boots, für das die Zeit aufgezeichnet werden soll. |
||
42 | * comp: Nummer des Laufs, für den die Zwischenzeit gelten soll. |
||
43 | * split: Nummer der Zwischenzeit. 0 bedeutet Start, 1 die erste Zwischenzeit und so fort. Das Ziel hat die Nummer 64. |
||
44 | * dist: Streckenmarke (in Meter), an der die Zeit gemessen worden ist. Bei einem 2000-Meter-Rennen mit drei Zwischenzeiten liegt die erste Zwischenzeit bei Streckenmarke 1500, die dritte bei 500. Bei einem Rennen über 1000 Meter mit einer Zwischenzeit liegt die erste (und einzige) Marke ebenfalls bei 500 Meter. So genügt es, die feste Position statt der variablen Zwischenzeitnummer zu übertragen. |
||
45 | |||
46 | Es gelten folgende Einschränkungen: |
||
47 | 1 | Steffen Christgau | * Die Startnummer (bib) hat Vorrang gegenüber der Bahn (lane) wenn beide angegeben werden. |
48 | 2 | Steffen Christgau | * Wenn die Zwischenzeitnummer (split) und Distanz (dist) gleichzeitig angegeben werden, hat die Zwischenzeitnummer Vorrang. |
49 | 4 | Steffen Christgau | * Zeit muss im Format hh:mm:ss.ddd (d = Tausendstel) angegeben werden |
50 | 2 | Steffen Christgau | |
51 | Auf dieses Kommando wird keine Antwort gesendet. |
||
52 | |||
53 | Beispiele: |
||
54 | |||
55 | # Neue Zielzeit (automatisch ermittelt) für undefiniertes Boot |
||
56 | <pre> |
||
57 | < TIME |
||
58 | </pre> |
||
59 | # explizite Zeitangabe für ein Boot |
||
60 | <pre> |
||
61 | < TIME time=17:00:00.100 split=1 bib=27 comp=8 |
||
62 | 1 | Steffen Christgau | </pre>Startnummer 27 hat in Lauf 8 die erste Zwischenzeit um sehr kurz nach 17 Uhr überquert. |
63 | 2 | Steffen Christgau | # mit Streckenmarke und Bahn |
64 | <pre> |
||
65 | 4 | Steffen Christgau | < TIME time=17:00:00.100 dist=1500 lane=3 comp=8 |
66 | 2 | Steffen Christgau | </pre>Das Boot auf Bahn 3 hat in Lauf 8 die Streckenmarke bei 1500 Meter um sehr kurz nach 17 Uhr überquert. |
67 | 8 | Steffen Christgau | |
68 | h3. {NEW} Liste der in Zeitmessung geöffneten Läufe |
||
69 | |||
70 | Mit Kommando @?OPEN@ können die auf dem Rechner, zu dem die Verbindung hergestellt worden ist, geöffneten Läufe abgefragt werden. Die Antwort enthält die Liste geöffneten der Läufe mit ihrer Laufnummer, der Datenbank-ID und ihrem Zustand (geplant, gestartet, etc.). Beispiel: |
||
71 | |||
72 | <pre> |
||
73 | < ?OPEN |
||
74 | > 437 1 3 |
||
75 | > 438 2 1 |
||
76 | > 439 3 1 |
||
77 | > |
||
78 | </pre> |
||
79 | |||
80 | Der Zustand eines Laufs kann dabei folgende Werte annehmen: {TODO} |
||
81 | |||
82 | h3. Benachrichtigung über geänderte Läufe |
||
83 | |||
84 | Wird ein Lauf in der Zeitmessung der verbundenen Rechners geöffnet oder geschlossen, wird eine entsprechende einzeilige Benachrichtigung versendet. Diese Beginnt mit einem Ausrufezeichen, dem das Wort @OPEN@ folgt und schließlich ein Plus oder ein Minus. Mit Leerzeichen getrennt wird die Datenbank-ID und die Laufnummer ausgegeben. Beispiel: |
||
85 | |||
86 | <pre> |
||
87 | > !OPEN- 437 1 |
||
88 | > !OPEN+ 440 4 |
||
89 | </pre> |
||
90 | |||
91 | Der im vorherigen Beispiel noch geöffnete (erste) Lauf ist geschlossen worden. Im Anschluss wurde der Lauf mit der Nummer 4 und Datenbank-ID 440 geöffnet. |
||
92 | |||
93 | h3. {NEW} Startliste eines Laufs abfragen |
||
94 | |||
95 | Das Kommando @?STARTLIST@ ermöglicht das Abfragen der Startliste eines Laufs. Dies kann entweder über die Datenbank-ID (Parameter @id@) oder die im Zeitplan vergebene Laufnummer (Parameter @nr@) erfolgen. Die ID wird bei gleichzeitiger Angabe beider Informationen bevorzugt. Zu beachten ist, dass nur Startlisten von Läufen abgefragt werden können, die auf dem anfragten Rechner in der Zeitmessung geöffnet sind. Die Antwort enthält dabei die Bahn, die Startnummer, den Status des Boots und die Kurzbezeichnung des Bootes auf der jeweiligen Bahn. Eventuell frei gelassene Bahnen werden nicht angezeigt. Der Status des Boots gibt Auskunft über eine eventuelle Abmeldung. Bei einem Wert von 0 liegt keine Abmeldung vor. Eine 1 signalisiert das Gegenteil. Die Bootsbezeichnung wird von einfachen Anführungsstrichen umgeben. Treten im Bootsnamen selbst einfache Anführungsstriche auf, werden diese verdoppelt (_RC 'A' von 1980_ -> _'RC ''A'' von 1980'_) |
||
96 | |||
97 | Beispiel: |
||
98 | <pre> |
||
99 | < ?STARTLIST id=440 |
||
100 | > 2 13 0 'RC Stadt A' |
||
101 | > 3 14 1 'RK Dorf D' |
||
102 | > 5 15 0 'Rgm. Insel ''C'' / Dorf D' |
||
103 | > 6 15 0 'RC Stadt A' |
||
104 | > |
||
105 | </pre> |