用Python读取串口。缓冲区是如何工作的?
我想了解一下串口(com port)上的缓冲区是怎么工作的。下面的代码是我读取串口的一部分。我在想,如果我执行了 serial_connection.close()
和 serial_connection.open()
,会不会丢失任何数据,还是说数据会保留在缓冲区里?你可能会问我为什么要关闭再打开串口……原因是这是一个虚拟串口,不知道为什么,当我连接它太长时间后,数据就停止传输了……
import serial
serial_connection = serial.Serial(
port = self.SERIAL_PORT,
baudrate = self.BAUD_RATE,
timeout = 10
)
while true:
serial_connection.close()
serial_connection.open()
line = serial_connection.readline()
print line
1 个回答
4
PySerial有一个单独的线程在那儿监听数据,这样可以确保不会丢失任何信息。不过,操作系统本身并不会存储数据。在你关闭端口和重新打开端口的那段短时间内,有可能会丢失一些数据。