类在拔下设备时未更改pyserial连接的状态



我正在尝试为学校项目做简单的串行链接程序,但我遇到了小问题。我创建了一个类来维护串行通信,但当我拔下并插回串行端口时,它不会改变串行连接的状态(self.ser和初始化时仍然有相同的对象(。我希望它重新连接并继续工作。你能帮我告诉我我做错了什么吗?我是蟒蛇的新手。非常感谢!

import serial
import uuid

class SerialWrapper:
def __init__(self):
self.ser = serial.Serial("COM3", 9600)
def handleconnect(self):
try:
if self.ser is None:
self.ser = serial.Serial("COM3", 9600)
self.ser.close()
self.ser.open()
print("Reconnecting...")
except:
if not (self.ser is None):
self.ser.close()
self.ser = None
print("Disconnecting")
else:
print("No Connection")
def serialwrite(self, data):
self.handleconnect()
try:
datalength = self.ser.write(data.encode())
print("Writing data...")
return datalength
except:
print("Error in writing data")
def serialread(self, datalength):
self.handleconnect()
try:
data = self.ser.read(datalength).decode()
print("Reading data...")
return data
except:
print("Error in reading data")

def main():
ser = SerialWrapper()
while 1:
value = uuid.uuid4().hex
length = ser.serialwrite(value)
print(ser.serialread(length))

main()

所以我发现在每个周期结束时,必须用self.ser.close()关闭端口,然后在新周期开始时用self.ser.open()再次打开

最新更新