我有一个Xilinx Virtex-II Pro FPGA板,通过RS232连接到iRobot Create。
iRobot将字节整数流作为命令。
我发现printf实际上会通过串口发送(Hypterminal能够接收我打印的任何内容),并且我认为我可以使用printf将我的数据发送到iRobot。
问题是printf似乎格式化了ascii输出的数据,但我真的很喜欢它只是简单地发送数据。
我想要像:
printf(%x %x %x, 0x80, 0x88, 0x08);
但是不是十六进制格式化,我希望它是发送的实际0x80值。
有什么想法吗?
答案 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);
似乎就是你想要的。