是否可以使用 PySerial 以编程方式检查新连接?
Is it possible to programmatically check for a new connection using PySerial?
我发现 this post 提出了类似的问题。但是,答案不是我期望找到的,所以我将尝试以不同的方式提出问题。
让我们假设函数 searching_for_connection
将 运行 在 while True
循环中无限期地执行。对于该功能,我们将循环并执行检查以查看是否已与 /dev/ttyAMA0
建立了新连接。如果该连接存在,则退出循环,完成 searching_for_connection
,然后开始其他一些进程。这可能吗?我该怎么做?
我目前的方法是发送回车符 return 并检查响应。我的问题是这种方法非常参差不齐,并没有为我产生一致的结果。此方法有时有效,有时会停止工作
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
我发现 this post 提出了类似的问题。但是,答案不是我期望找到的,所以我将尝试以不同的方式提出问题。
让我们假设函数 searching_for_connection
将 运行 在 while True
循环中无限期地执行。对于该功能,我们将循环并执行检查以查看是否已与 /dev/ttyAMA0
建立了新连接。如果该连接存在,则退出循环,完成 searching_for_connection
,然后开始其他一些进程。这可能吗?我该怎么做?
我目前的方法是发送回车符 return 并检查响应。我的问题是这种方法非常参差不齐,并没有为我产生一致的结果。此方法有时有效,有时会停止工作
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