printf rawデータ - 文字を送信しないようにprintfまたはprintを入手してください

StackOverflow https://stackoverflow.com/questions/8365062

質問

RS232を介してiRobot Createに接続されているXilinx Virtex-II Pro FPGAボードがあります。

iRobotは、コマンドとしてバイト整数のストリームを取ります。

PrintFが実際にシリアルポートを介して送信することがわかりました(Thepterminalは私が印刷するものをすべて受け取ることができます)。PrintFを使用してIROBOTにデータを送信できると考えています。

問題は、printfがASCII出力のデータをフォーマットしているように見えることですが、データを生で送信するだけで本当に好きです。

次のようなものが欲しい:

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

しかし、16進数がフォーマットされる代わりに、実際の0x80値を送信したいと思います。

何か案は?

役に立ちましたか?

解決

使用する fwrite:

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

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

任意のファイルハンドルに書き込むことができます。 stdout あなたを反映するための単なる例です printf.

POSIXシステムでは、プラットフォーム固有のものを使用することもできます write ファイル記述子に書き込む関数。

他のヒント

フォーマットを使用します "%c%c%c" 代わりは。

代わりにFWRITEを使用します。 printfは定義上、ASCIIプリンターです。

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

あなたが望むもののようです。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top