【发布时间】:2016-11-08 03:37:48
【问题描述】:
我正在尝试通过 UART 向我的 AVR 发送十六进制数据。问题是,我不能发送超过两对十六进制。我需要发送两个以上,比如 9-10。
例如:
我只能发送0x2f 和0x3f。
如果我发送更多,它总是减去。
我需要发送0xff234f3a3f。
我的代码:
sendString("wish me luck\n");
while(1)
{
char str[35];
int i;
printf("enter the code :\n");
scanf("%x", &i);
printf("%#x (%d)\n",i,i);
}
我做错了什么?
【问题讨论】:
-
对不起,我发错了。但即使使用此代码,它仍然只能发送两对十六进制。仅此而已,该怎么办?
-
很好奇。第一个代码使用了 30 个
char数组,现在代码使用了int。为什么使用类型int和"%x"?您的文档对"%x"应该使用什么类型有什么看法? -
nah.. 它只是以前代码的剩余部分,但这里的主要重点是发送超过 2 对 hexdata。 %x 是我在互联网上找到的唯一可以做我想做的数据类型
-
int i;声明仅服务于 16 位(2 字节)的内存。 10 hex 需要 10x8 位内存。 AVR中最长的数据类型只有64位(uint64_t)
-
您想从什么发送到您的 AVR?你的代码运行了吗?或者您想从您的 AVR 发送?我真的不清楚。