System Communication Earth



Beispiel mit zwei Runnable in einer Activity

Wir entwerfen die Systemkommunikation mit zwei Runnables in einer Activity.

1. Vorbereitung.

1.1 Erst die Orderstruktur definieren. Wie brauchen vier Hauptordners.

  • YamlModell – Kommunikationsmodell
  • Templates – Templates für Code-Generierung
  • generated – generierte Header- und Source-Dateien
  • build – Build-Toolchain

toolModel

Kopieren Sie den mitgelieferten include-Ordner mit den zugehörigen Header-Dateien in den Projektordner. Für Testzwecke können Sie die main.cpp und die CMakeLists.txt verwenden.

1.2 Mitgelieferte Templates ins Templates oder kopieren.

Es ist wichtig Dateinamestruktur „activity.yaml“ zu beachten. Wir können unsere Activity beliebig benennen, aber „activity.yaml“ ist festdefiniert.

imports: []

timeoutMs: 1000

runnableInstances: []

Damit ist die Vorarbeit erledigt. Jetzt können wir mit dem ScomEditor ein Kommunikationsmodell entwickeln.

2. Systemkommunikation in ScomEditor entwerfen.

Mit einem Doppelklick auf die ScomEditor.exe starten wir den ScomEditor. Beim Start wählen wir den Ordner YamlModel aus. Die Datei Activity1.activity.yaml wird automatisch eingelesen.

2.1 Einstellungen vom ScomEditor setzen.

Klicken Sie auf "Settings-Button".

In den "SettingOptions" konfigurieren wir die Pfade, wie auf der Abbildung 1 zu sehen.

ScomEditorWorkflow
Abbildung 1
  • Templates Files - Beispiel01\Templates
  • Generated Files - Beispiel01\Project\generated
  • Cmake Build - Beispiel01\Project\build

2.2 Runnables hinzufügen.

Markieren Sie Activity1 in der Baumstruktur und wählen Sie per Rechtsklick "Create new runnable".

ScomEditorWorkflow
Abbildung 2

Das erste Runnable ist fertig. Erstellen Sie das zweite Runnable auf dieselbe Weise. Benennen Sie die erstellten Runnables in Runnable1 und Runnable2 um. Sie können einfach per Doppelklick mit der linken Maustaste auf ein Runnable klicken, um die Namen neu zu vergeben. In jedem Runnable werden automatisch zwei Ports (Input und Output) erstellt. Benennen Sie diese Ports in PortIn und PortOut um.

ScomEditorWorkflow
Abbildung 3

2.3 Verbindungen zwischen Ports erstellen.

Generell können Sie Verbindungen nur von einem Output-Port zu einem Input-Port erstellen. Klicken Sie auf Runnable1:PortOut1 und wählen Sie mit der rechten Maustaste "Create new Connection".

ScomEditorWorkflow
Abbildung 4

Wählen Sie im neuen Dialogfenster den Verweis zu Runnable2:PortIn aus:

  • Activity Name – Activity1
  • Runnable Name - Runnable2
  • Port Name – PortIn

ScomEditorWorkflow
Abbildung 5

Schließlich speichern Sie die Connection mit dem „Save Connection“.

Die erste Port-Verbindung ist fertig. Erstellen Sie die zweite Port-Verbindung zwischen Runnable2:PortOut und Runnable1:PortIn auf dieselbe Weise wie die erste.

ScomEditorWorkflow
Abbildung 6

Speichern Sie dieses Kommunikationsmodell über den Button "Save Yaml".

Das Kommunikationsmodell ist damit erstellt. Im Ordner YamlModel finden Sie alle zum Kommunikationsmodell zugehörigen Yaml-Dateien. Wenn Sie in der Übersicht des Kommunikationsmodells auf Runnable1 klicken, sehen Sie alle Verbindungen zwischen den Runnables über Ports, die farblich gekennzeichnet sind. Klicken Sie auf portOutput, um alle Verbindungen von diesem Port zu sehen.

3. C++-Code aus dem YAML-Kommunikationsmodell generieren.

Klicken Sie auf den Button „Generate Code“.

Der C++ Code wurde auf Basis von Templates generiert.Wenn in den Settings die Option „CMake Build aktiv“ aktiviert ist, wird CMake ausgeführt und der Code kompiliert.

ScomEditorWorkflow
Abbildung 7

In Abbildung 7 sehen Sie den generierten Content:

  • ScomTask – Scheduling.
  • Runnable1Runnable, Runnable2Runnable – Implementation der Runnables.
  • DB – verwendete Runnable-Datentypen.