5.1.4. UART控制

OpenMV Cam在引脚P4(TX)和P5(RX)上有一个主UART,可以用于串行通信。要创建一个UART对象,请执行以下操作:

import pyb

uart = pyb.UART(3, 115200, timeout_char = 1000)

首先,让我们分解一下我们做了什么。第一个参数是UART总线。这是OpenMV Cam上的UART总线的索引。 你必须用这个值调用UART构造函数,因为我们正在利用MicroPython的pyboard的 pyb 模块。 第二个值是波特率,它可以是任何你喜欢的标准波特率值。最后,第三个参数告诉驱动程序如果UART繁忙, 在发送字符之间等待最多1秒。如果您的代码必须阻止等待UART缓冲区中的空间(通常情况下不需要),则 timeout_char 默认值为0会导致驱动程序不发送字符。

无论如何,一旦你有一个UART对象,然后发送数据很容易。这样做:

uart.write("Hello World\n")

就是这样。

但是,如果您想要发送二进制数据,请使用该 ustruct 模块。该 ustruct 模块将让你轻松地序列化数据。这是一个例子:

import ustruct

uart.write(ustruct.pack("<lhb", a_32_bit_value, a_16_bit_value, a_8_bit_value))

上面的第一个字符串告诉我们如何将数据打包到字节流中。“<”表示数据将以小端格式打包。 “l”表示打包长字节,“h”表示打包短字节,“b”表示打包一个字节。有关更多信息,请参阅 ython结构模块

现在,如果你想接收数据,只需要使用 UART.any() 方法和 UART.read() 方法。请注意,您需要编写某种状态机来可靠的接收数据。 例如,请参阅示例 Examples->Pixy Emulation->pixy_uart_emulation.py .