Zum Hauptinhalt springen

Rawplayback Modul

Beschreibung

warnung

Das "rawplayback" Modul ist nur für System- und Unittests zu verwenden. Der Einsatz in einer Produktiv-Umgebung ist nicht zulässig!

Das rawplayback-Modul spielt eine vorbereitete Folge von Rohtelegrammen zeitgesteuert ab. Die Nachrichten werden aus einer externen Datei eingelesen und anschließend über die smartCORE Fast Message Dispatcher-Architektur versendet.

Die Zeitstempel in der Eingabedatei werden relativ zum Start eines Zyklus interpretiert. Damit kann eine feste Telegrammfolge mit definierter zeitlicher Staffelung reproduzierbar abgespielt werden.

Typische Anwendungsfälle sind:

  • Wiederholung aufgezeichneter Rohdatenfolgen zu Test- und Simulationszwecken
  • deterministische Wiedergabe eines bekannten Nachrichtenstroms
  • zyklisches Senden derselben Telegrammsequenz

Schnittstellen

  • Dateien (playbackFile)
  • smartCORE Fast Message Dispatcher

JSON-Konfiguration

Im folgenden Abschnitt werden Beispiele und Parameter des Moduls beschrieben.

Beispielkonfiguration (minimal)

{
"module": "rawplayback_instance",
"factory": "rawplayback",
"config": {
"playbackFile": "/opt/smartcore/data/rawplayback.txt"
}
}

Beispielkonfiguration (maximal)

{
"module": "rawplayback_instance",
"factory": "rawplayback",
"config": {
"playbackFile": "/opt/smartcore/data/rawplayback.txt",
"separator": ";",
"numCycles": 5,
"cycleOffset": 1000,
"exitOnEnd": true,
"exitDelay": 10
}
}

Parameterliste

Globale Parameter

ParameternameErforderlichDatentypsinnvoller WertebereichDefaultBeschreibung
playbackFileJaStringgültiger Dateipfad-Pfad zur Eingabedatei mit den abzuspielenden Nachrichten. Kann die Datei nicht geöffnet werden, startet das Modul nicht korrekt.
separatorNeinStringgenau 1 Zeichen, nicht .TabulatorTrennzeichen zwischen den drei Spalten einer Zeile in der Eingabedatei. Bei leerem oder ungültigem Wert bleibt der Default erhalten.
numCyclesNeinNumberGanzzahl >= 01Anzahl der vollständigen Wiedergabezyklen. 1 bedeutet einmaliges Abspielen. 0 führt effektiv zu keiner Wiedergabe. Ungültige Werte fallen auf 1 zurück.
cycleOffsetNeinNumberGanzzahl >= 0 (ms)0Zusätzliche Wartezeit in Millisekunden zwischen zwei Zyklen. Ungültige Werte fallen auf 0 zurück.
exitOnEndNeinBooltrue / falsefalseWenn true, wird smartCORE nach Abschluss aller Zyklen beendet.
exitDelayNeinNumberGanzzahl >= 0 (s)0Zusätzliche Wartezeit in Sekunden vor dem optionalen Beenden von smartCORE. Wirksam nur bei exitOnEnd=true. Ungültige Werte fallen auf 0 zurück.

Format der Playback-Datei

Jede nichtleere Zeile der Datei beschreibt genau eine Nachricht und muss aus drei Spalten bestehen:

  1. Zeitstempel
  2. Message-ID
  3. Nutzdaten

Das Spaltentrennzeichen ist standardmäßig ein Tabulator und kann über separator geändert werden.

Allgemeiner Aufbau

<timestamp><separator><message_id><separator><data>

Bedeutung der Spalten

SpalteBeschreibung
ZeitstempelRelativer Zeitpunkt innerhalb eines Zyklus. Der Ganzzahlanteil wird als Sekunden, der Nachkommateil als Nanosekunden interpretiert.
Message-IDNumerische Nachrichten-ID. Sie wird mit toUInt(..., 0) gelesen; damit sind dezimale und C/Qt-übliche Präfixe wie z. B. 0x... möglich.
DatenRohdaten der Nachricht. Unterstützt werden Hex, Binär oder Base64.

Unterstützte Datenformate

Hexadezimal

Präfix: 0x

Beispiel:

0.000000000    100    0x11 22 33 44

Erlaubte Trennzeichen innerhalb der Daten sind Leerzeichen, Punkt (.) und Unterstrich (_). Unvollständige Bytes werden nicht aufgefüllt, sondern als niederwertiger Teil eines Bytes übernommen.

Binär

Präfix: 0b

Beispiel:

0.050000000    100    0b00010001 00100010

Auch hier sind Leerzeichen, Punkt (.) und Unterstrich (_) innerhalb der Daten erlaubt. Unvollständige Bytes werden ebenfalls nicht aufgefüllt.

Base64

Ohne Präfix 0x oder 0b wird das Feld als Base64 interpretiert.

Beispiel:

0.100000000    100    ESIzRA==

Einschränkungen und Hinweise

Konfiguration

  • separator darf nur ein einzelnes Zeichen sein.
  • separator darf nicht identisch mit dem Dezimaltrennzeichen . sein, da sonst Zeitstempel nicht eindeutig geparst werden können.
  • Für numCycles, cycleOffset und exitDelay werden nur nichtnegative Ganzzahlen sinnvoll verarbeitet.
  • Ist playbackFile nicht lesbar oder nicht vorhanden, werden keine Nachrichten vorbereitet.

Eingabedatei

  • Jede verwendete Zeile muss genau drei Spalten enthalten.
  • Leere Zeilen werden ignoriert.
  • Fehlerhafte Zeilen werden protokolliert und übersprungen.
  • Der Zeitstempel ist relativ, nicht absolut. Er beschreibt also den Abstand zum Beginn des aktuellen Wiedergabezyklus.
  • Nachkommastellen im Zeitstempel werden auf Nanosekunden normiert. Mehr als 9 Nachkommastellen werden abgeschnitten, weniger als 9 werden mit Nullen aufgefüllt.
  • Für Hexdaten sind nur Zeichen aus [0-9A-Fa-f] sowie . _ und Whitespace erlaubt.
  • Für Binärdaten sind nur 0, 1, . _ und Whitespace erlaubt.
  • Base64-Daten werden ungeprüft über den Base64-Decoder verarbeitet; ungültige Inhalte führen je nach Decoder-Verhalten zu fehlerhaften oder leeren Daten.

Laufzeitverhalten

  • Das Modul sendet alle vorbereiteten Nachrichten in der Reihenfolge der Datei.
  • Eine explizite Sortierung der Zeitstempel findet im Modul nicht statt. Die Eingabedatei sollte daher bereits in der gewünschten zeitlichen Reihenfolge vorliegen.
  • Zwischen zwei Zyklen kann optional eine Pause (cycleOffset) eingefügt werden.
  • Ist exitOnEnd=true, beendet das Modul nach dem letzten Zyklus optional mit zusätzlicher Verzögerung (exitDelay) die smartCORE-Anwendung.

Beispiel einer kompletten Playback-Datei

Beispiel mit Tabulator als Spaltentrenner:

0.000000000    256    0x11 22 33 44
0.050000000 257 0b10101010 00001111
0.100000000 258 ESIzRA==

Modul-Informationen

InformationWert
AutorenoptiMEAS GmbH
ModultypProducer
AbhängigkeitenFast Message Dispatcher, lesbare Eingabedatei