6.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 秒。 timeout_char
的默认值为 0,如果您的代码必须阻塞等待 UART 缓冲区中的空间,则导致驱动程序放弃发送字符,这是您不想要的(通常)。
无论如何,一旦您有了 UART 对象,发送数据就很容易。只需执行操作:
uart.write("Hello World\n")
就这样。
但是,如果您想发送二进制数据,请使用 struct
模块。struct
模块将让您轻松序列化数据。以下是一个示例:
import ustruct
uart.write(ustruct.pack("<lhb", a_32_bit_value, a_16_bit_value, a_8_bit_value))
上面的第一个字符串告诉 ustruct 如何将数据打包成字节流。 “<” 表示数据将以小端格式打包。 “l” 表示打包一个长整型, “h” 表示打包一个短整型,”b” 表示打包一个字节。有关更多信息,请参阅 Python 结构化模块。
现在,如果您想接收数据,只需使用 pyb.UART.any()
方法以及 pyb.UART.read()
方法。请注意,您需要编写某种状态机来可靠地接收数据。例如,请参阅 Examples->Pixy Emulation->pixy_uart_emulation.py
示例。