Printf Raw Data - Ottieni printf o stampa per non inviare caratteri
-
27-10-2019 - |
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?
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.