无法正确显示putty中的十六进制值

时间:2015-09-25 13:36:17

标签: c embedded microcontroller putty

我正在使用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上显示这些字节不可能我的分析是否正确????

2 个答案:

答案 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。