在 Python 中的特定时间内通过串口等待数据

Waiting for data by serial port during certain time in Python

我必须在一定时间内通过串口等待一定大小的数据。如果我这次获得的数据较少,那么我想避免读取数据。如果我早点获得足够的数据,那么我想阅读它们并停止等待数据。

我目前的解决方案是这样的:

serial.open()
start_time = time()
while serial.in_waiting < expected_data_size: # waiting certain size of data
    if time_to_wait < time() - start_time: # time is expired
        serial.close()
        return
data = serial.read(expected_data_size)
serial.close()

但我认为这不是好的解决方案,因为比较(在 "while" 和 "if" 块中)发生很多次,同时等待数据。

请告诉我,如何在 Python 中更好地实现它 3. 要使用串行端口,我使用 pySerial

提前致谢!

你不需要发明新轮子。 1)当你打开端口时,你应该设置超时。 2) 端口打开后,需要设置读取的数据大小 "read" API.

读取 API 将 return 数据大小或 return 如果发生超时,数据会减少。

查看文档中的示例:

>>> with serial.Serial('/dev/ttyS1', 19200, timeout=1) as ser:
...     x = ser.read()          # read one byte
...     s = ser.read(10)        # read up to ten bytes (timeout)