文章目录
前言
本文简单介绍了OpenMV的串口流和缓冲区。
流和缓冲区
1. 流(Stream)的含义
定义
流 是一种抽象的数据传输模型,代表连续的数据流动。在UART通信中,数据通过串行接口以字节流的形式逐位发送或接收。
流强调数据的顺序性和连续性,类似于水流,数据按发送顺序依次到达接收端。
在OpenMV中的体现
- 发送流:通过UART的write()方法发送数据时,数据以流的形式逐字节传输。
uart.write(b'Hello World') # 发送字节流
- 接收流:通过read()方法读取数据时,按接收顺序逐个字节处理。
data = uart.read(10) # 读取10个字节的流数据
- 特点
异步传输:数据发送和接收不需要严格的时钟同步,仅依赖波特率。
实时性:数据流可实时处理,适用于传感器数据采集等场景。
2. 缓冲区(Buffer)的含义
定义
缓冲区 是硬件或软件中用于临时存储数据的内存区域。在UART通信中,缓冲区分为发送缓冲区和接收缓冲区。
- 发送缓冲区:存储待发送的数据,由硬件逐步发送。
- 接收缓冲区:存储已接收但尚未被程序读取的数据。
在OpenMV中的实现
- 发送缓冲区:调用uart.write()时,数据首先写入发送缓冲区,由硬件异步发送。
uart.write(b'Data') # 数据存入发送缓冲区后立即返回,不阻塞程序
- 接收缓冲区:当UART接收到数据时,字节暂存于接收缓冲区,直到通过read()读取。
if uart.any(): # 检查接收缓冲区是否有数据
data = uart.read(uart.any()) # 读取全部缓冲区数据
</