无法在腻子中正确显示十六进制值

标签 c embedded microcontroller putty

我正在使用 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/

相关文章:

c - 为什么我从 scanf 中收到段错误(核心转储)?

embedded - 是否可以检测到 Cortex M3 上的 DMA channel 何时空闲?

linux - 为 RFS 选择 squashfs

c - 如何在 C 中对变化的变量(例如计时器)进行快照?

c++ - 如何使用微 Controller 计算总时间

c - 具有无符号字符的模运算符

c - 如何设计一个 IF 语句来仅打印目录中特定类型的文件? (正文中有更多解释)

c - scons 包含目录不起作用

Windows CE 还是 Windows Embedded Standard?

microcontroller - 如何编写控制电机的程序