Inhaltsverzeichnis

Workshop - Mein erstes AddOn

Einleitung

Im Folgenden wird ausführlich beschrieben, wie man selber AddOns programmiert. Ein AddOn ist ein kleines Zusatzprogramm neben der eigentlichen Software von Cockpit XP, welches sich individuell selber programmieren lässt. Programmierkenntnisse sind sicherlich von Vorteil, aber nicht zwingende eine Voraussetzung. Mit etwas Mut und gutem Willen kann man relativ schnell die Funktionsweise der Addon-Programmierung erlernen und sich dann seine eigenen AddOns programmieren.

Vorrausetzungen für den Workshop

Bitte erst MeinErstesAddon.zip runterladen und in das Anwender-Verzeichnis von Cockpit-XP kopieren und entpacken.

https://www.dropbox.com/s/g6qn10a1v2avjpp/MeinErstesAddon.zip?dl=0

Als nächstes klicken wir auf ConfigCenter und dann auf AddOn Verwaltung😕\

Hier sollte dann der Ordner MeinErstesAddon wie folgt zu sehen sein:

Hier sieht man jetzt 3 Dateien:
- AddOn.cps.xml: das ist das eigentliche „Programm“
- ConfigPackage.xml: hier werden Variablen für die Konfig-Einstellungen erstellt, welche man dann später alle von „aussen“ einstellen kann
- Info.txt: zusätzliche Informationen in Textform zum AddOn

AddOn.cps.xml

Klickt man jetzt auf AddOn.cps.xml, dann öffnet sich die Programmierumgebung wie folgt:

Ereignisse

Was sind Ereignisse?
Für jedes dieser Ereignisse kann jeweils ein „Programm“ hinterlegt werden. Möchte man z.B. bei einem neuen Rundenrekord etwas ausgeben, dann klickt man auf Rundenrekord und programmiert dann dort ein „Programm“.

Was wollen wir programmieren?

Um mit der grundsätzlichen Funktion vertraut zu werden hab ich mir gedacht, wir programmieren mal einfach ein kleines AddOn, welches bei jeder Überfahrt Start/Ziel ansagt, welcher Fahrer gerade durchgefahren ist. Dafür klicken wir mal auf StartZiel, dann öffnet sich in der Mitte folgendes Fenster:

Durch klicken auf Ändern können wir zwischen begin und end dann anfangen zu editieren. Der Cursor blickt dann und die Zeile wird leicht gelb unterlegt.

Wie bereits erwähnt arbeitet CXP das StartZiel-Ereignis ab, sobald es „angestossen“ wird. Woher soll aber die Software jetzt wissen, welcher Fahrer gerade über StartZiel gefahren ist? Um diese Info zu erhalten gibt es den -nennen wir es mal Container- Cockpit.Slot. Cockpit.Slot „enthält“ jetzt die Info, welche wir brauchen und zwar Cockpit.SlotID. Cockpit.SlotID ist der Verursacher, welche gerade über Start-Ziel gefahren ist.

So, jetzt wird es Ernst:
Wir schreiben jetzt den Namen des Fahrers in die Variable Fahrername. Dafür gegeben wir folgenden Programmcode ein:
Fahrername:=Cockpit.FahrerName und beenden den Eintrag mit einem Semikolon „;“ (braucht der Editor um sauber zu erkennen wo die Programmierzeile aufhört).

Jetzt klicken wir mal auf Übernehmen……..Oups, jetzt kommt eine Fehlermeldung?!?!?!

Was ist passiert?
Der Editor checkt bei Übernahme auf Plausibilität wie z.B. ob alle Variablen sauber deklariert sind. In unserem Fall ist es nicht so. Wir müssen jetzt die Variable Fahrername noch sauber deklarieren.

Variablendeklaration

Grundsätzlich werden Variablen nach Programmzeile 0003 und vor der Programmzeile begin wie folgt deklariert:
Da es sich beim Fahrername um einen String handelt, muss man die Variable dementsprechend deklarieren.
Woher weiß ich den, um was für eine Art Variable es sich handelt?
Dafür klicken wir mal ganz rechts auf Functions und dann auf cpRenndaten

Dann hier nach Cockpit.FahrerName suchen und dort steht nach dem Doppelpunkt „:“ um welche Art von Variable es sich handelt, in unserem Fall also um einen String….
Also, jetzt deklarieren wir diesen üünrigens völlig frei wählbaren Variablennamen als String wie folgt:
Angabe Namen, dann ein Doppelpunkt „:“ und die Art der Variablen, abgeschlossen mit einem Semikolon „;“

var
Fahrername: String;

Die muss unbedingt vor begin rein-editiert werden !!

Drückt man jetzt auf Übernehmen, kommt keine Fehlermeldung mehr.

Was haben wir bis jetzt gelernt?

Und weiter geht’s.
Bisher haben wir ja nur den richtigen Namen in die Variable geschrieben, wir wollen ihn aber ja hören bei Überfahrt Start/Ziel. Dafür gibt es den Befehl cpSpeech(SpeechText:String).

Befehls-Struktur

Vorne steht immer der Befehl, gefolgt von einer Angabe in Klammer (). Innerhalb der Klammer wird noch angegeben, welche Variablen-Art benötigt wird. In unserem Fall brauchen wir einen String. Dieser String muss innerhalb der zwei Klammern stehen. Somit brauchen wir noch für die Ausgabe des Fahrernamens folgende Befehlszeile in unserem Programmcode: cpSpeech(Fahrername);
So sollte es dann aussehen und schon sind wir (fast) fertig…..
Es gibt eine Eigenart bei Cockpit XP, welche mit folgenden zwei Programmzeilen behoben wird:
Slot:=Cockpit.Slot; Cockpit.Slot:= Slot; Bitte nicht fragen was das soll….wird später noch ausführlich erklärt…
Also bitte einfach diese zwei Programmzeilen noch direkt nach begin einfügen, inkl. Der Variablendeklaration Slot: Integer;

So, jetzt ist unser kleines Programm endlich fertig…..😉……jetzt mal auf Speichern klicken….

Test vom AddOn

AddOns kann man natürlich direkt an der Bahn testen. Es gibt aber auch eine Möglichkeit über die Tastensimulation ein AddOn am Rechner (ohne Rennbahn) zu Testen.

Hier mal draufklicken, dann kann man die Tastensimulation aktivieren (dabei wird dann vor aktivieren ein Häkchen gesetzt). Jetzt noch geschwind das AddOn auch laden, einen RBS auswählen auf Start drücken und simulieren.

Tastensimulation

Zusätzlich zum RBS gibt es bei der Tastensimulation dann noch folgendes neues Fenster:

Wie simuliert man jetzt?

Mit unserem kleinen Addon müsste jetzt bei jedem Klick auf E1 im CU-Feld der Name des Fahrers angesagt werden.