问题描述
我发现 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