场景:在使用serial时,运行程序前是断开连接的,运行程序执行ser.open()报出了以下错误:
serial.serialutil.SerialException: Port is already open.意为当前请求打开的串口已经打开过了。
报错的代码
import serial # 创建串口连接对象 ser = serial.Serial('com5', 115200) ser.open() ser.close()
起初解决方法:在打开前加一个检测,若串口已打开则不管,若未打开则打开
import serial # 创建串口连接对象 ser = serial.Serial('com5', 115200) if not ser.isOpen(): ser.open() # 安全地打开端口 else: print("端口已经打开") ser.close()
后来,我有一个猜想,是否是将串口参数定义在了Serial中导致创建串口对象的同时打开了连接端口,于是有了如下代码:
import serial # 创建串口连接对象 ser = serial.Serial() ser.port = 'com5' ser.baudrate = 115200 # 打开串口连接 ser.open() ser.close()
果然,正常关闭连接后,重新运行就不再报错了。