Aller au contenu principal

Module Rawplayback

Description​

attention

Le module « rawplayback » doit être utilisé exclusivement pour les tests système et les tests unitaires. Son utilisation dans un environnement de production n'est pas autorisée !

Le module rawplayback rejoue, de manière cadencée dans le temps, une séquence préparée de télégrammes bruts. Les messages sont lus depuis un fichier externe, puis envoyés via l'architecture Fast Message Dispatcher de smartCORE.

Les horodatages du fichier d'entrée sont interprétés relativement au début d'un cycle. Une séquence fixe de télégrammes, avec un échelonnement temporel défini, peut ainsi être rejouée de manière reproductible.

Les cas d'usage typiques sont :

  • répétition de séquences de données brutes enregistrées à des fins de test et de simulation
  • relecture déterministe d'un flux de messages connu
  • envoi cyclique de la même séquence de télégrammes

Interfaces​

  • Fichiers (playbackFile)
  • smartCORE Fast Message Dispatcher

Configuration JSON​

La section suivante décrit des exemples et les paramètres du module.

Exemple de configuration (minimale)​

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

Exemple de configuration (maximale)​

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

Liste des paramètres​

Paramètres globaux​

Nom du paramètreObligatoireType de donnéesPlage de valeurs utileDéfautDescription
playbackFileOuiStringchemin de fichier valide-Chemin du fichier d'entrée contenant les messages à rejouer. Si le fichier ne peut pas être ouvert, le module ne démarre pas correctement.
separatorNonStringexactement 1 caractère, pas .TabulationSéparateur entre les trois colonnes d'une ligne du fichier d'entrée. Si la valeur est vide ou invalide, la valeur par défaut est conservée.
numCyclesNonNumberentier >= 01Nombre de cycles de lecture complets. 1 signifie une seule lecture. 0 n'aboutit en pratique à aucune lecture. Les valeurs invalides retombent sur 1.
cycleOffsetNonNumberentier >= 0 (ms)0Temps d'attente supplémentaire en millisecondes entre deux cycles. Les valeurs invalides retombent sur 0.
exitOnEndNonBooltrue / falsefalseSi true, smartCORE est arrêté après l'achèvement de tous les cycles.
exitDelayNonNumberentier >= 0 (s)0Temps d'attente supplémentaire en secondes avant l'arrêt facultatif de smartCORE. Effectif uniquement avec exitOnEnd=true. Les valeurs invalides retombent sur 0.

Format du fichier de lecture (playback)​

Chaque ligne non vide du fichier décrit exactement un message et doit se composer de trois colonnes :

  1. Horodatage
  2. ID du message
  3. Données utiles

Le séparateur de colonnes est par défaut une tabulation et peut être modifié via separator.

Structure générale​

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

Signification des colonnes​

ColonneDescription
HorodatageInstant relatif au sein d'un cycle. La partie entière est interprétée comme des secondes, la partie décimale comme des nanosecondes.
ID du messageID de message numérique. Il est lu avec toUInt(..., 0) ; les préfixes décimaux et ceux usuels en C/Qt, p. ex. 0x..., sont donc possibles.
DonnéesDonnées brutes du message. Hexadécimal, binaire ou Base64 sont pris en charge.

Formats de données pris en charge​

Hexadécimal​

Préfixe : 0x

Exemple :

0.000000000 100 0x11 22 33 44

Les séparateurs autorisés au sein des données sont l'espace, le point (.) et le trait de soulignement (_). Les octets incomplets ne sont pas complétés ; ils sont repris comme partie de poids faible d'un octet.

Binaire​

Préfixe : 0b

Exemple :

0.050000000 100 0b00010001 00100010

Ici aussi, l'espace, le point (.) et le trait de soulignement (_) sont autorisés au sein des données. Les octets incomplets ne sont également pas complétés.

Base64​

Sans préfixe 0x ou 0b, le champ est interprété comme du Base64.

Exemple :

0.100000000 100 ESIzRA==

Restrictions et remarques​

Configuration​

  • separator ne doit être qu'un seul caractère.
  • separator ne doit pas être identique au séparateur décimal ., sinon les horodatages ne peuvent pas être analysés sans ambiguïté.
  • Pour numCycles, cycleOffset et exitDelay, seuls des entiers non négatifs sont traités de façon pertinente.
  • Si playbackFile n'est pas lisible ou n'existe pas, aucun message n'est préparé.

Fichier d'entrée​

  • Chaque ligne utilisée doit contenir exactement trois colonnes.
  • Les lignes vides sont ignorées.
  • Les lignes erronées sont consignées dans le journal et ignorées.
  • L'horodatage est relatif, non absolu. Il décrit donc l'écart par rapport au début du cycle de lecture en cours.
  • Les décimales de l'horodatage sont normalisées en nanosecondes. Plus de 9 décimales sont tronquées, moins de 9 sont complétées par des zéros.
  • Pour les données hexadécimales, seuls les caractères de [0-9A-Fa-f] ainsi que . _ et les espaces blancs sont autorisés.
  • Pour les données binaires, seuls 0, 1, . _ et les espaces blancs sont autorisés.
  • Les données Base64 sont traitées par le décodeur Base64 sans vérification ; des contenus invalides entraînent, selon le comportement du décodeur, des données erronées ou vides.

Comportement à l'exécution​

  • Le module envoie tous les messages préparés dans l'ordre du fichier.
  • Aucun tri des horodatages n'a lieu dans le module. Le fichier d'entrée doit donc déjà se présenter dans l'ordre chronologique souhaité.
  • Une pause (cycleOffset) peut être insérée en option entre deux cycles.
  • Si exitOnEnd=true, le module arrête l'application smartCORE après le dernier cycle, éventuellement avec un délai supplémentaire (exitDelay).

Exemple de fichier de lecture (playback) complet​

Exemple avec une tabulation comme séparateur de colonnes :

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

Informations sur le module​

InformationValeur
AuteursoptiMEAS GmbH
Type de moduleProducer
DépendancesFast Message Dispatcher, fichier d'entrée lisible