Pregunta

Tengo un dispositivo externo que escupe paquetes UDP de datos binarios y el software que se ejecutan en un sistema embebido que necesita leer este flujo de datos, analizar y hacer somethign útil. Los datos binarios se registra en un archivo también. Me gustaría escribir un analizador que puede tomar fácilmente la entrada directamente, ya sea del flujo UDP, o un archivo, analizar los datos en un formato específico y luego dirigir la salida a un archivo (por ejemplo matlab archivo dat) o para otro proceso que va a hacer algo de procesamiento en tiempo real. ¿Hay recursos que me ayuden con esto y cuál es la mejor manera de ir sobre esto? Creo que podría tener sentido usar flujos de C ++, pero no estoy familiarizado con la creación de flujos de salida personalizados. Parece esto como un buen enfoque para tomar o hay una mejor manera de hacerlo?

Gracias.

¿Fue útil?

Solución

La belleza de datos binarios es que su es generalmente de formato muy fija. Un método típico de analizar es de declarar una estructura que se asigna a los paquetes recibidos, y luego utilizar sólo tipo-moldes para leer los campos como elementos de estructura.

La belleza es que esto no requiere de análisis.

usted tiene que tener cuidado con las reglas de estructura de embalaje, y endian-dad para hacer que el esquema de la estructura de la misma manera. Uso de la C "offsetof" y macros "sizeof" es útil para emitir alguna información de depuración para comprobar que su estructura es de hecho el mapeo a lo que creo que es la cartografía.

normas de embalaje normalmente se vea alterado por las directivas (como el de # pragma) opciones de línea de comandos o. Endian-ness le pegan con. Si su diferente de lo que utiliza su sistema embebido, declarar todos los campos como bytes, o usar algo como la macro "ntoh" para hacer el intercambio de bytes.

Otros consejos

La Nueva Jersey Código de Máquina Herramienta es un esquema para decodificar los patrones binarios arbitrarios. Fue diseñado originalmente para la decodificación de conjuntos de instrucciones, pero debe estar muy bien para la decodificación de formatos de mensaje. Usted proporciona una descripción del formato binario, sintetiza código para acceder a los campos de ese formato (cuando válida). De este modo se puede hacer referencia a los campos de mensajes utilizando la función de llamadas generadas en lugar de pensar en donde el campo es o cómo se codifica.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top