是否可以使用 PySerial 以编程方式检查新连接?

问题描述

我发现 this 帖子提出了类似的问题。然而,答案并不是我所期望的,所以我将尝试以不同的方式提出问题。

假设函数 searching_for_connection 将在 while True 循环中无限期运行。在该函数中,我们将循环并执行检查以查看是否已与 /dev/ttyAMA0 建立了新连接。如果该连接存在,则退出循环,完成 searching_for_connection,并开始其他一些进程。这是可能的,我将如何去做?

我目前的方法是发送回车并检查响应。我的问题是这种方法非常参差不齐,并没有为我产生一致的结果。有时这种方法有效,有时它会停止工作

def serial_device_connected(serial_device: "serial.Serial") -> bool:
    try:
        serial_device.write(b"\r")
        return bool(serial_device.readlines())
    except serial.SerialException
        return False

解决方法

我建议延迟时间让设备有时间响应。

import time

def serial_device_connected(serial_device: "serial.Serial") -> bool:
    try:
        serial_device.write(b"\r")
        time.sleep(0.01)
        return bool(serial_device.readlines())
    except serial.SerialException
        return False