Saltar al contenido principal

Módulo Rawplayback

Descripción​

aviso

El módulo "rawplayback" debe utilizarse únicamente para pruebas de sistema y pruebas unitarias. ¡No se permite su uso en un entorno de producción!

El módulo rawplayback reproduce con control temporal una secuencia preparada de telegramas sin procesar. Los mensajes se leen de un archivo externo y a continuación se envían mediante la arquitectura Fast Message Dispatcher de smartCORE.

Las marcas de tiempo del archivo de entrada se interpretan en relación con el inicio de un ciclo. De este modo, una secuencia fija de telegramas con un escalonamiento temporal definido puede reproducirse de forma reproducible.

Los casos de uso habituales son:

  • Repetición de secuencias de datos sin procesar grabadas con fines de prueba y simulación
  • Reproducción determinista de un flujo de mensajes conocido
  • Envío cíclico de la misma secuencia de telegramas

Interfaces​

  • Archivos (playbackFile)
  • smartCORE Fast Message Dispatcher

Configuración JSON​

En la sección siguiente se describen ejemplos y parámetros del módulo.

Configuración de ejemplo (mínima)​

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

Configuración de ejemplo (máxima)​

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

Lista de parámetros​

Parámetros globales​

Nombre del parámetroObligatorioTipo de datosRango de valores razonableValor por defectoDescripción
playbackFileSíStringruta de archivo válida-Ruta del archivo de entrada con los mensajes que se van a reproducir. Si no se puede abrir el archivo, el módulo no se inicia correctamente.
separatorNoStringexactamente 1 carácter, no .TabuladorSeparador entre las tres columnas de una línea del archivo de entrada. Si el valor está vacío o no es válido, se mantiene el valor por defecto.
numCyclesNoNumberentero >= 01Número de ciclos de reproducción completos. 1 significa una única reproducción. 0 supone, en la práctica, que no se reproduce nada. Los valores no válidos vuelven a 1.
cycleOffsetNoNumberentero >= 0 (ms)0Tiempo de espera adicional en milisegundos entre dos ciclos. Los valores no válidos vuelven a 0.
exitOnEndNoBooltrue / falsefalseSi es true, smartCORE se cierra tras finalizar todos los ciclos.
exitDelayNoNumberentero >= 0 (s)0Tiempo de espera adicional en segundos antes del cierre opcional de smartCORE. Solo es efectivo con exitOnEnd=true. Los valores no válidos vuelven a 0.

Formato del archivo de reproducción​

Cada línea no vacía del archivo describe exactamente un mensaje y debe constar de tres columnas:

  1. Marca de tiempo
  2. ID de mensaje
  3. Datos útiles

El separador de columnas es por defecto un tabulador y puede modificarse mediante separator.

Estructura general​

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

Significado de las columnas​

ColumnaDescripción
Marca de tiempoInstante relativo dentro de un ciclo. La parte entera se interpreta como segundos y la parte decimal como nanosegundos.
ID de mensajeID numérico del mensaje. Se lee con toUInt(..., 0); por tanto, son posibles tanto decimales como los prefijos habituales de C/Qt, p. ej. 0x....
DatosDatos sin procesar del mensaje. Se admiten hexadecimal, binario o Base64.

Formatos de datos admitidos​

Hexadecimal​

Prefijo: 0x

Ejemplo:

0.000000000 100 0x11 22 33 44

Los separadores permitidos dentro de los datos son el espacio, el punto (.) y el guion bajo (_). Los bytes incompletos no se rellenan, sino que se toman como la parte de menor peso de un byte.

Binario​

Prefijo: 0b

Ejemplo:

0.050000000 100 0b00010001 00100010

Aquí también se permiten espacios, punto (.) y guion bajo (_) dentro de los datos. Los bytes incompletos tampoco se rellenan.

Base64​

Sin el prefijo 0x ni 0b, el campo se interpreta como Base64.

Ejemplo:

0.100000000 100 ESIzRA==

Limitaciones y notas​

Configuración​

  • separator solo puede ser un único carácter.
  • separator no puede ser idéntico al separador decimal ., ya que de lo contrario las marcas de tiempo no se pueden analizar de forma inequívoca.
  • Para numCycles, cycleOffset y exitDelay solo se procesan de forma razonable enteros no negativos.
  • Si playbackFile no es legible o no existe, no se prepara ningún mensaje.

Archivo de entrada​

  • Cada línea utilizada debe contener exactamente tres columnas.
  • Las líneas vacías se ignoran.
  • Las líneas erróneas se registran y se omiten.
  • La marca de tiempo es relativa, no absoluta. Es decir, describe la distancia al inicio del ciclo de reproducción actual.
  • Los decimales de la marca de tiempo se normalizan a nanosegundos. Los decimales que superen 9 se truncan; si hay menos de 9, se rellenan con ceros.
  • Para los datos hexadecimales solo se permiten caracteres de [0-9A-Fa-f], así como . _ y espacios en blanco.
  • Para los datos binarios solo se permiten 0, 1, . _ y espacios en blanco.
  • Los datos Base64 se procesan con el decodificador Base64 sin comprobarlos; los contenidos no válidos dan lugar, según el comportamiento del decodificador, a datos erróneos o vacíos.

Comportamiento en tiempo de ejecución​

  • El módulo envía todos los mensajes preparados en el orden del archivo.
  • El módulo no realiza una ordenación explícita de las marcas de tiempo. Por ello, el archivo de entrada debería estar ya en el orden temporal deseado.
  • Entre dos ciclos puede insertarse opcionalmente una pausa (cycleOffset).
  • Con exitOnEnd=true, el módulo cierra la aplicación smartCORE tras el último ciclo, opcionalmente con un retardo adicional (exitDelay).

Ejemplo de un archivo de reproducción completo​

Ejemplo con tabulador como separador de columnas:

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

Información del módulo​

InformaciónValor
AutoresoptiMEAS GmbH
Tipo de móduloProducer
DependenciasFast Message Dispatcher, archivo de entrada legible