python - 在 Python 中 5 秒后停止等待串行响应

标签 python serial-port wait

我试图从串行端口获得响应,但有时会没有。这使得我的脚本永远等待,因此我必须杀死它。

是否有一种简单方法让我的代码等待例如 5 秒,如果没有响应则继续执行脚本?

我的代码如下所示:

import serial
ser = serial.Serial('COM3', 9600)

test = '2ho0'

ser.write(str.encode(test))
data = ser.readline()
print(data)

我已经尝试过this解决方案,但在打印 5 次 Hello world 后它并没有停止。相反,它会继续写入 Hello World,直到我收到运行时错误

超过herehere我尝试了很多答案,但也没有成功。

编辑:我想知道是否可以有类似的东西:

ser.serialReplyAvailable()

这也适合我。

感谢您的建议。

最佳答案

您可以指定一个读取超时,这将使 ser.readline() 要么在请求的数据可用时立即返回,要么返回超时之前读取的任何内容。检查 pySerial 文档,那里有更多内容。

ser = serial.Serial('COM3', 9600, timeout=5)

关于python - 在 Python 中 5 秒后停止等待串行响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59085969/

相关文章:

c# - 为什么使用 SerialPort.CatchReceivedEvents() 线程数不断增加

java - 为什么要对字符串或其他对象使用 wait 方法?

java - 所有代码执行后应用程序未终止

python - 正则表达式识别不同形式的年份

python - 在 Python 中更清楚地了解 "=="和 "is"

python - 使用 Pandas 创建日期范围列表

python - 使用 biopython 计算对齐中相同站点百分比的更快方法

python - 使用 Python 进行实时串行数据记录 - 设计建议

flash - 使用 Adob​​e Flash 与串行端口通信

sockets - 带有select的TCP客户端,在连接等待输入之后