4

我有一个 Xilinx Virtex-II Pro FPGA 板,它通过 RS232 连接到 iRobot Create。

iRobot 将字节整数流作为命令。

我发现 printf 实际上会通过串行端口发送(Hypterminal 能够接收我打印的任何内容),并且我认为我可以使用 printf 将我的数据发送到 iRobot。

问题是 printf 似乎格式化了 ascii 输出的数据,但我真的很喜欢它只是简单地发送原始数据。

我想要类似的东西:

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

但是,我希望它不是被格式化的十六进制,而是实际发送的 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 回答