Python中的SerialTimeoutException无法按预期工作

Pat*_*ick 4 python serial-port

有时我没有通过串行接口获取任何数据,我想以下列方式通过异常捕获此情况:

ser          = serial.Serial(3)
ser.baudrate = 115200
timeout      = 1

while (some condidion)
  try:
    dump = ser.read(40)
  except ser1.SerialTimeoutException:
    print('Data could not be read')

ser.close()
Run Code Online (Sandbox Code Playgroud)

但是,当我运行这个程序时,如果缓冲区中没有数据并且我陷入无限循环,则永远不会捕获异常.谁知道我在这里做错了什么?

glg*_*lgl 7

我甚至不知道那个例外.在查看API文档之后,您将看到此异常仅适用于write().

如果你read(),你将只有一个缩短甚至空的输出.

这仅适用于您以超时打开连接的情况.有点像serial.Serial(3, timeout=.1).