You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

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

火山引擎 最新活动