6.1.4. 串口控制

znzpi AI相机由多个串口,其中UART2为linux调试串口,UART0为蓝牙串口,UART1可以自由使用。

import pyb

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

首先,我们看一下如何设置。UART的第一个参数,是znzpi AI相机的UART总线的id。这个参数必须使用在UART的结构中,是因为我们已经不在 pyb 这个MicroPython的模块中。第二个参数是波特率,一个表面发送速率的参数。最后第三个参数告诉驱动在如果UART忙,发送字符的时候的等待时间。默认的 timeout_char 是0

一旦获得了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 Struct Module

如果你需要接收数据,只需要用 pyb.UART.any() 方法以及 pyb.UART.read() 方法。注意为了接收稳定,你需要编写一些状态机代码。例如 Examples->Pixy Emulation->pixy_uart_emulation.py 这个例子。