【已解决】python串口打印数据显示为b‘xxx‘的解决办法

本文讲述了如何在Python中使用serial库处理串口数据时,遇到字符串显示为b...格式的问题,解释了原因(Python字符串为Unicode编码,需转化为字节),提供了通过.decode(UTF-8)解决的方法,并验证了其有效性。
摘要由CSDN通过智能技术生成

一、问题描述

        需要使用python的serial库去打印串口数据,期望打印出字符串数据。

        但实际上打印出来的结果为b'$GNGST,000202.20,,,,,,,*65\r\n'这种类型的。

        代码如下:

import serial
import serial.tools.list_ports
import datetime

ser = serial.Serial("COM8", 460800)    # 打开COM8,将波特率配置为460800,其余参数使用默认值
if ser.isOpen():                        # 判断串口是否成功打开
    print("打开串口成功。")
    print(ser.name)    # 输出串口号
    while True:
        com_input = ser.readline()
        if com_input:   # 如果读取结果非空,则输出
            print(f"{datetime.datetime.now()} {com_input}")
    ser.close()
else:
    print("打开串口失败。")

        输出结果:

二、原因分析

说白了 Python3的字符串的编码语言用的是unicode编码,由于Python的字符串类型是str,在内存中以Unicode表示,一个字符对应若干字节,如果要在网络上传输,或保存在磁盘上就需要把str变成以字节为单位的bytes

python对bytes类型的数据用带b前缀的单引号或双引号表示。

三、解决措施

        修改代码

ser.readline()
修改为
ser.readline().decode('UTF-8')

四、措施验证

        修改后,运行python文件。控制台可正常输出期望的文本。

        验证结束。

五、总结回顾

文章参考:【已解决】为什么Python打印数据显示为b‘XXX’格式_python打印xml文件有b-CSDN博客

关于python中 b'xxxx' 转化的问题-CSDN博客

  • 5
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
如果在 matplotlib 中,汉字显示为方块,通常是因为当前系统中没有安装支持中文的字体。此时可以通过以下方法解决: 1. 安装支持中文的字体,例如“微软雅黑”、“宋体”等。可以在 Windows 系统中的“控制面板” -> “字体”中进行安装。安装完成后,可以在 matplotlib 中设置字体为安装的字体,例如: ```python import matplotlib.pyplot as plt plt.rcParams['font.family'] = 'Microsoft YaHei' ``` 在上述代码中,我将字体设置为了“微软雅黑”。 2. 在 matplotlib 中使用自带的字体,例如“DejaVu Sans”、“DejaVu Serif”等。可以使用以下代码进行设置: ```python import matplotlib.pyplot as plt plt.rcParams['font.family'] = 'DejaVu Sans' ``` 在上述代码中,我将字体设置为了“DejaVu Sans”。 3. 如果你只需要在图的标题或标签中显示少量的中文字符,可以使用 Unicode 编码来代替中文字符,例如: ```python import matplotlib.pyplot as plt fig, ax = plt.subplots() # 画图 ax.plot(x, y) # 设置标题 ax.set_title('数据\u7c7b\u578b') # 显示图形 plt.show() ``` 在上述代码中,我使用了 Unicode 编码来代替中文字符,例如`\u7c7b`表示“类”,`\u578b`表示“型”。 需要注意的是,以上方法可能需要根据不同的操作系统和 matplotlib 版本进行微调。如果你仍然无法正常显示中文字符,可以尝试在 matplotlib 官方文档中查找解决方案。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值