我正在使用MCU TM4C123GH6PM进行一个项目,我从另一个MCU获取数据。因此,当我从MCU#2获取数据时,我将其发送到COM端口。基本上我发送的是那种形式的框架:
header="#", Bytes:0,0,0,0,0,0,62,64, terminator='\0';
什么putty显示如下:
#>@
我不明白,为什么我无法在putty上显示我的字节。
我使用此代码获取数据并将其传输到putty:
while (1)
{
if (UARTCharsAvail(UART1_BASE)){
UARTCharPut(UART0_BASE,(unsigned char)UARTCharGet(UART1_BASE));
}
}
我在MCU#1,MCU#2和putty上使用baudrate 9600。有什么问题?
编辑:因为原始字节包含8位而putty是基于ascii而ASCII字符有7位。这就是为什么我无法显示我的字节。这意味着在putty上显示这些字节不可能。 我的分析是否正确????
答案 0 :(得分:2)
可能没问题。 PuTTY将字节解释为字符,示例中的数字(0,62和64)映射到不可见的内容以及>
和@
。查看任何ASCII table。
您似乎期望PuTTY以十六进制显示内容,但它不会这样做,至少在默认情况下不会。它适用于人类可读的文本。您当然可以选择在您的MCU应用程序中以ASCII格式发送事物(即将单字节0
转换为例如"00"
或"0x00"
)。
更清楚地说,没有“十六进制值”这样的东西。值可以以十六进制显示,但这不会使值本身不同。十进制整数16和十六进制整数0x10是相同的数字,毕竟是数字。它呈现的基础是一个演示细节,你没有考虑到这些造成混淆的事情。
答案 1 :(得分:1)
问题是MCU#2不是以ASCII格式发送数据,而是以原始二进制形式发送数据。您需要指定协议是ASCII格式还是二进制格式,然后相应地实现。
Putty是一个基于ASCII的终端,只能显示ASCII。