Module Rawplayback
Description
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ètre | Obligatoire | Type de données | Plage de valeurs utile | Défaut | Description |
|---|---|---|---|---|---|
playbackFile | Oui | String | chemin 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. |
separator | Non | String | exactement 1 caractère, pas . | Tabulation | Sé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. |
numCycles | Non | Number | entier >= 0 | 1 | Nombre de cycles de lecture complets. 1 signifie une seule lecture. 0 n'aboutit en pratique à aucune lecture. Les valeurs invalides retombent sur 1. |
cycleOffset | Non | Number | entier >= 0 (ms) | 0 | Temps d'attente supplémentaire en millisecondes entre deux cycles. Les valeurs invalides retombent sur 0. |
exitOnEnd | Non | Bool | true / false | false | Si true, smartCORE est arrêté après l'achèvement de tous les cycles. |
exitDelay | Non | Number | entier >= 0 (s) | 0 | Temps 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 :
- Horodatage
- ID du message
- 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
| Colonne | Description |
|---|---|
| Horodatage | Instant 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 message | ID 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ées | Donné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
separatorne doit être qu'un seul caractère.separatorne doit pas être identique au séparateur décimal., sinon les horodatages ne peuvent pas être analysés sans ambiguïté.- Pour
numCycles,cycleOffsetetexitDelay, seuls des entiers non négatifs sont traités de façon pertinente. - Si
playbackFilen'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
| Information | Valeur |
|---|---|
| Auteurs | optiMEAS GmbH |
| Type de module | Producer |
| Dépendances | Fast Message Dispatcher, fichier d'entrée lisible |