4

RS232 経由で iRobot Create に接続された Xilinx Virtex-II Pro FPGA ボードがあります。

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

printf が実際にシリアル ポート経由で送信することがわかりました (Hypterminal は、印刷したものをすべて取得できます)。また、printf を使用してデータを iRobot に送信できると考えています。

問題は、printf が ascii 出力用にデータをフォーマットしているように見えることですが、私はそれが単純にデータをそのまま送信することを本当に望んでいます。

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

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

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

何か案は?

4

3 に答える 3

10

使用fwrite:

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

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

任意のファイル ハンドルに書き込むことができます。stdoutをミラーリングする例にすぎませんprintf

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

于 2011-12-03T02:43:42.747 に答える
9

"%c%c%c"代わりに形式を使用してください。

于 2011-12-03T02:47:15.093 に答える
3

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

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

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

于 2011-12-03T02:45:53.440 に答える