我正在使用 MCU TM4C123GH6PM 开展一个项目,我正在从另一个 MCU 获取数据。因此,当我从 MCU#2 获取数据时,我将其发送到 COM 端口。基本上我发送的是这种形式的帧:
header="#", Bytes:0,0,0,0,0,0,62,64, terminator='\0';
putty 显示的内容如下:
#>@
我不明白,为什么我无法在 putty 上显示我的字节。
我使用此代码获取数据并将其传输到腻子:
while (1)
{
if (UARTCharsAvail(UART1_BASE)){
UARTCharPut(UART0_BASE,(unsigned char)UARTCharGet(UART1_BASE));
}
}
我在 MCU#1、MCU#2 和 putty 上使用波特率 9600。有什么问题?
编辑:因为原始字节包含 8 位,而 putty 是基于 ascii 的,而 ASCII 字符有 7 位。这就是为什么我无法显示我的字节数的原因。这意味着在 putty 上显示这些字节是不可能的。 我的分析对吗????
最佳答案
应该没有问题。 PuTTY 将字节解释为字符,并且示例中的数字(0、62 和 64)映射到不可见的内容以及 >
和 @
。查看任何ASCII table .
您似乎希望 PuTTY 以十六进制显示内容,但它不会那样做,至少默认情况下不会。它适用于人类可读的文本。您当然可以选择以 ASCII 格式发送内容(即将单字节 0
转换为例如 "00"
或 "0x00"
),在您的 MCU 应用程序中。
更清楚地说,没有“十六进制值”这样的东西。一个值可以用十六进制呈现,但这并不会使值本身不同。十进制整数16和十六进制整数0x10是同一个数,毕竟是数。它呈现的基础是呈现细节,而您没有考虑这些会造成混淆的事情。
关于无法在腻子中正确显示十六进制值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32783464/