You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python 3串口向LCD发送控制字符异常问题排查求助

问题

此前使用Python 2开发的LCD控制代码可正常实现光标控制、颜色切换、亮度调节及文本显示更新功能。迁移至Python 3后,屏幕虽能显示正常文本,但出现大量乱码,且颜色切换失效、文本位置偏移等问题。手动直接写入文本(如self.__serial.write("test".encode()))显示正常,问题根源在于控制字符的发送逻辑。

Python 2 可行代码

def __write(self, value):
    self.__serial.write(str(value))

# 用于带控制字符的命令,前缀为0xfe
def __write_array(self, array_values):
    array_values.insert(0, 0xfe)
    for item in array_values:
        self.__write(chr(item))

Python 3 修改后的写入函数

def __write(self, value):
    self.__serial.write(str(value).encode())

背景色设置示例函数

def set_background_color(self, value):
    _check_color(value)
    self.__state.background_color = value
    red = value[0]
    green = value[1]
    blue = value[2]
    self.__write_array([0xd0, red, green, blue])
    self.__state.background_color = value
    time.sleep(0.01)

(注:设置绿色时,__write_array处理后的目标数组为[254, 208, 0, 255, 0])

异常表现

屏幕显示乱码,写入的数据示例:
�þ�~Q^P^B�þT�þK�þ�~Y�~H�¾P�~H�þ@System Booting �þ�~P^@^@�ÿ þX�þH�þH�þH �þ�~P^@^@�ÿ�þ�~Y�~H�¾P�~H�þH�þH �þ�~P^@^@�ÿ�þ�~Y�~H�¾P�~H�þ�~P^@�ÿ^@�þH�þHa

解决方案

问题核心是Python 3严格区分字符串与字节类型,当前__write函数将数值转成字符串再编码的逻辑,会破坏控制字符的二进制结构,需做以下调整:

  1. 修复__write函数
    根据输入类型处理:字符串编码为字节,整数直接转为单字节,确保二进制数据正确:

    def __write(self, value):
        if isinstance(value, str):
            self.__serial.write(value.encode())
        elif isinstance(value, int):
            self.__serial.write(bytes([value]))
        else:
            self.__serial.write(value)
    
  2. 优化__write_array函数
    直接构造字节数组一次性发送,避免循环处理导致的错误,同时简化逻辑:

    def __write_array(self, array_values):
        array_values.insert(0, 0xfe)
        self.__serial.write(bytes(array_values))
    

    若需保留循环调用__write,则修改为直接传递整数:

    def __write_array(self, array_values):
        array_values.insert(0, 0xfe)
        for item in array_values:
            self.__write(item)
    
  3. 验证控制指令的二进制正确性
    以设置绿色为例,目标指令数组[254, 208, 0, 255, 0]需转为字节b'\xfe\xd0\x00\xff\x00'才能被屏幕正确识别。此前的错误逻辑会将整数254转为字符串"254"再编码为b'254',完全偏离了预期的控制字节格式。

内容的提问来源于stack exchange,提问作者Paul

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 21:27:11