4

我正在尝试编写一个连续读取串行输入的函数。该函数必须能够处理与串行端口的意外断开连接,并在可能的情况下重新连接。尽管阅读了关于 stackOverflow 的几个问题帖子并查看了 pySerial 文档,但我还没有找到解决方案。

这是我的代码:

def serialRead(serialPort, queue):
    """Adds serial port input to a queue."""

    ser = serial.Serial(serialPort - 1, timeout = 2)

    ser.parity = "O"
    ser.bytesize = 7

    while(True):
        try:
            if(ser == None):
                ser = serial.Serial(serialPort - 1, timeout = 2)

                ser.parity = "O"
                ser.bytesize = 7

                print("Reconnecting")

            queue.put(ser.read(27))
            ser.write(chr(6).encode())

            print("Writing Data...")

        except:
            if(not(ser == None)):
                ser.close()
                ser = None
                print("Disconnecting")

            print("No Connection")
            time.sleep(2)

这是我的输出:

Enter a Serial Port: 7
Writing Data...
Writing Data...
Writing Data...
Writing Data...

我从连接我的设备开始。离开程序运行后,“断开连接”或“无连接”均不显示,程序停止(它不会崩溃)。

4

1 回答 1

2

此代码有效。蝙蝠侠在 Arduino 连接上测试了该程序,我发现我的程序在一段时间后已成功重新连接到设备。我希望这段代码对那些遇到类似问题的人有用。

于 2014-07-17T15:02:39.880 回答