在不丢失数据的情况下使用串行

Working with serial without data loss

我正在使用 pySerial 监听串口。仅当我获得可以处理的数据块时才处理数据。简单的事件调度器监听来自 readet 的事件,然后处理事件数据。处理可能涉及 IO、网络和其他类型的耗时 OS 操作。但是谁会在处理最后一个数据时从串口读取数据呢?

例如

    Port stream >> | 1111111111111111 | 222222 | 2222222 | 33333
                   ---------------------------------------------
Programm thread >> | listen port 1 -> | handle | listen2 | .....

那么处理及时的端口数据会丢失吗?就像 2?

包的开始

如何保证来自端口的所有数据都得到及时处理?

在 python 中使用循环缓冲区和线程将是一个解决方案。另一种方法是实现不同的协议,以便发送方在发送新数据之前等待侦听器确认接收