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

如何基于Python serial模块创建继承Serial的类并封装成模块

修正方案

你的代码存在几个关键问题,以下是修正后的实现:

1. 修正py232.py模块代码

原代码错误地在继承Serial后又重新创建新的Serial实例,且父类初始化调用有误,同时缺少发送数据的方法。修正后:

from serial import Serial, STOPBITS_ONE, PARITY_NONE

class SerialPort(Serial):
    def __init__(self, com_port):
        # 直接调用父类构造函数完成串口初始化
        super().__init__(
            port=com_port,
            baudrate=9600,
            bytesize=8,
            stopbits=STOPBITS_ONE,
            parity=PARITY_NONE,
            timeout=2
        )
    
    def sndSerial(self, data):
        # 串口仅支持字节类型数据,需将字符串编码后发送
        self.write(data.encode('utf-8'))

2. 调用模块的正确方式

在其他脚本中按以下方式使用:

import py232

# 传入COM端口实例化串口对象
s = py232.SerialPort('COM6')

# 调用发送方法传递字符串
s.sndSerial('test')

# 程序结束前可主动关闭串口(可选,进程退出时会自动释放)
# s.close()

关键修正点说明

  • 父类初始化:改用super().__init__()正确调用Serial的构造函数,直接完成当前对象的串口初始化,无需额外创建新实例。
  • 命名规范:类名改为SerialPort(符合Python大驼峰命名规范),参数名com_port语义更清晰。
  • 发送方法实现:补充snSerial方法,将字符串编码为串口可识别的字节数据后发送。
  • 导入优化:直接导入所需常量,避免重复引用serial模块。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 18:31:10