如何基于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
相关产品推荐
相关产品推荐

