C printf raw data——获取printf或print以不发送字符

C printf raw data——获取printf或print以不发送字符,c,serial-port,printf,fpga,serial-communication,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值,而不

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

iRobot将字节整数流作为命令

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

问题是printf似乎为ascii输出格式化数据,但我真的希望它只发送原始数据

我想要一些像:

printf(%x %x %x, 0x80, 0x88, 0x08);
但我希望它是实际发送的0x80值,而不是格式化十六进制

有什么想法吗?

使用:

您可以写入任何文件句柄
stdout
只是一个镜像您的
printf
的示例


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

您可以使用fwrite。Printf定义为ascii打印机

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

似乎正是您想要的。

使用格式
%c%c”

这很好!但是我不知道我的邮箱地址,。。。我想我可以试着四处挖掘。我的想法是只使用RS232 RX输出的内存地址。。。这个主意听起来对吗?你为什么需要地址?您很高兴早些时候使用了
printf
,这与
fprintf(stdout,…)
。。。现在的问题是什么?你绝对不能写任何随机数。它必须是你合法获得的
文件*
。嗯。。。我一直在使用printf,但我似乎无法包含stdio.h库,我的编译器似乎不喜欢它。。。我我不知所措。使用stdout会给我一个错误,包括库也会给我一个错误。这似乎是最终的答案。我发现我可以在我使用的平台中使用一个名为STDOUT_BASE_ADDR的等价物。我没有马上做标记,因为我最终发现我用来连接机器人的电线坏了,花了好几个小时才弄清楚。再次感谢Kerrek!美好的对于长字符串,这比我一直使用的“%c%c%c”格式要好得多。编译器是否支持:
printf(0x80,0x88,0x08)
printf(“,0x80,0x88,0x08)
char buf[] = {0x80, 0x80, 0x80};
fwrite(buf, 1, 3, stdout);