Class 拔下设备时不改变 pyserial 连接的状态

Class not changing state of pyserial connection when unplug device

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

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()

再次打开