printf原始数据 - 获取printf或print以不发送字符

时间:2011-12-03 02:41:20

标签: c serial-port printf fpga serial-communication

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

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

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

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

我想要像:

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

但是不是十六进制格式化,我希望它是发送的实际0x80值。

有什么想法吗?

3 个答案:

答案 0 :(得分:9)

使用fwrite

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

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

你可以写任何文件句柄; stdout只是一个反映您printf

的示例

在Posix系统上,您还可以使用写入文件描述符的特定于平台的write函数。

答案 1 :(得分:9)

请改为使用格式"%c%c%c"

答案 2 :(得分:3)

你会使用fwrite代替。根据定义,Printf是ascii打印机。

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

似乎就是你想要的。