Python使用pySerial串口通信报错:'str' object has no attribute '_port_handle'
解决pySerial初始化时的AttributeError问题
嘿,我一眼就看出问题所在啦😉
问题根源
你直接调用了serial.Serial.__init__方法,这可是个典型的用法错误!__init__是类的实例构造方法,它的第一个参数必须是类的实例本身(也就是我们常说的self)。你现在把"COM11"当成第一个参数传进去,Python就会把这个字符串当成self来处理,但字符串对象根本没有_port_handle这个属性,自然就抛出AttributeError了。
正确的写法
你应该创建serial.Serial类的实例,而不是直接调用它的__init__方法:
import serial # 创建串口实例 ser = serial.Serial("COM11", 115200, serial.EIGHTBITS, serial.PARITY_NONE, serial.STOPBITS_ONE)
如果想让代码可读性更强,推荐用关键字参数的写法:
import serial ser = serial.Serial( port="COM11", baudrate=115200, bytesize=serial.EIGHTBITS, parity=serial.PARITY_NONE, stopbits=serial.STOPBITS_ONE )
后续操作提示
创建好实例ser之后,你就可以用它来进行串口读写了,举两个简单例子:
- 发送数据:
ser.write(b"Hello Serial!") - 读取一行数据:
received_data = ser.readline()
内容的提问来源于stack exchange,提问作者Lenn00




