【问题标题】:Class not changing state of pyserial connection when unplug device拔出设备时类不会改变 pyserial 连接的状态
【发布时间】:2021-11-05 22:51:32
【问题描述】:

我正在尝试为学校项目做简单的串行链接程序,但我有一个小问题。我创建了类来维护串行通信,但是当我拔出并重新插入串行端口时,它不会改变串行连接的状态(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()

【问题讨论】:

    标签: python python-3.x pyserial


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 2019-03-04
      • 2023-03-24
      • 2023-04-05
      • 2021-10-22
      • 2020-04-01
      • 1970-01-01
      • 1970-01-01
      • 2019-11-15
      • 2019-01-30
      相关资源
      最近更新 更多