Domanda

Ho un dispositivo esterno che sputa fuori i pacchetti UDP di dati binari e del software in esecuzione su un sistema embedded che ha bisogno di leggere questo flusso di dati, analizzare e fare somethign utile. I dati binari viene registrato in un file pure. Vorrei scrivere un parser che può facilmente portare l'ingresso direttamente sia dal flusso UDP, oppure un file, analizzare i dati in un formato specifico e quindi indirizzare l'output a un file (ad esempio MATLAB file dat) o ad un altro processo che farà qualche trattamento in tempo reale. Ci sono delle risorse che mi avrebbe aiutato con questo e qual è il modo migliore per andare su questo? Penso che potrebbe avere senso utilizzare i flussi C ++, ma io non sono a conoscenza con la creazione di flussi di output personalizzati. Questo sembra un buon approccio per prendere o c'è un modo migliore per andare a questo proposito?

Grazie.

È stato utile?

Soluzione

La bellezza di dati binari è che la sua è generalmente di formato molto fisso. Un tipico metodo di analisi è dichiarare una struttura che mappa sui pacchetti ricevuti, e quindi utilizzare solo tipo-cast per leggere i campi come elementi della struttura.

Il bello è che questo non richiede analisi.

bisogna stare attenti a regole struttura di imballaggio, e endian-ness per rendere la mappa della struttura esattamente allo stesso modo. L'uso del macro "sizeof" C "offsetof" ed è utile per emettere alcune informazioni di debug per controllare che la struttura è infatti la mappatura a ciò che si pensa che è la mappatura.

regole di imballaggio in genere può essere alterato o da direttive (ad esempio di # pragma) opzioni della riga di comando o. Endian-ness si è bloccato con. Se il suo diverso da quello che utilizza il sistema embedded, dichiarare tutti i campi come byte, o usare qualcosa come la macro "ntoh" per fare lo scambio di byte.

Altri suggerimenti

Il New Jersey Codice Macchina Toolkit è uno schema di decodifica modelli binari arbitrari. È stato originariamente progettato per la decodifica di set di istruzioni, ma dovrebbe essere più che bene per la decodifica dei formati dei messaggi. Si fornisce una descrizione del formato binario, sintetizza il codice per accedere ai campi di quel formato (se valido). Così è possibile fare riferimento ai campi di messaggio utilizzando la funzione generato chiamate piuttosto che pensare a dove il campo è o come è codificato.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top