Domanda

Ho una scheda FPGA Xilinx Virtex-II Pro che è allegata tramite RS232 a un IROBOT Create.

L'irobot prende un flusso di numeri interi di byte come comandi.

Ho scoperto che Printf in realtà invierà oltre la porta seriale (l'ipterminale è in grado di raccogliere tutto ciò che ho stampato) e immagino che posso usare printf per inviare i miei dati all'irobot.

Il problema è che Printf sembra formattare i dati per l'uscita ASCII, ma mi piacerebbe davvero che semplicemente inviasse i dati RAW.

Vorrei qualcosa di simile:

printf(%x %x %x, 0x80, 0x88, 0x08);

Ma invece di formattare esadecimale, vorrei che fosse il valore 0x80 effettivo inviato.

Qualche idea?

È stato utile?

Soluzione

Uso fwrite:

char buf[] = { 0x80, 0x80, 0x80 };

fwrite(buf, 1, sizeof(buf), stdout);

Puoi scrivere su qualsiasi maniglia di file; stdout è solo un esempio per rispecchiare il tuo printf.

Su un sistema Posix, puoi anche utilizzare la piattaforma specifica write funzione che scrive a un descrittore di file.

Altri suggerimenti

Usa il formato "%c%c%c" invece.

Utilizzeresti invece FWRITE. Printf è per definizione una stampante ASCII.

char buf[] = {0x80, 0x80, 0x80};
fwrite(buf, 1, 3, stdout);

Sembra essere quello che vuoi.

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