串口

uart 模块允许您使用串行接口与连接到您的电路板的设备进行通信。

职能

microbit.uart.init(baudrate=9600, bits=8, parity=None, stop=1, *, tx=None, rx=None)

使用指定的txrx引脚上的指定参数初始化串行通信。请注意,为了正确通信,两个通信设备上的参数必须相同。

警告

在外部引脚上初始化 UART 将导致 USB 上的 Python 控制台无法访问,因为它使用相同的硬件。要恢复控制台,您必须重新初始化 UART,而不为 tx或传递任何内容 rx(或传递None给这些参数)。这意味着调用uart.init(115200)足以恢复 Python 控制台。

baudrate定义的通信的速度。常见的波特率包括:

  • 9600
  • 14400
  • 19200
  • 28800
  • 38400
  • 57600
  • 115200

bits定义中的字节大小被发送,和所述板仅支持8.parity 参数定义的奇偶校验是如何检查,并且它可以是None, microbit.uart.ODDmicrobit.uart.EVEN。该stop 参数表示停止位的数量,对于该板必须为 1。

如果txrx 未指定,则使用内部 USB-UART TX/RX 引脚连接到 micro:bit 上的 USB 串行转换器,从而将 UART 连接到您的 PC。您可以通过将所需的引脚对象传递给txrx参数来指定所需的任何其他引脚。

笔记

连接设备时,请确保“交叉”电线——电路板上的 TX 引脚需要与设备上的 RX 引脚相连,而 RX 引脚需要与设备上的 TX 引脚相连。还要确保两个设备的接地引脚都已连接。

uart.any()

True如果有数据在等待,则返回,否则返回False.

uart.read([nbytes])

读取字节。如果 nbytes指定,则最多读取那么多字节,否则读取尽可能多的字节。

返回值:一个字节对象或None超时。

一个 bytes 对象包含一个字节序列。因为 ASCII字符可以放在单个字节中,这种类型的对象通常用于表示简单的文本并提供操作方法,例如您可以使用该print() 函数显示文本。

您还可以将此对象转换为字符串对象,如果存在非 ASCII 字符,则可以指定编码:

msg_bytes = uart.read()
msg_str = str(msg, 'UTF-8')

笔记

所有 UART 读取的超时取决于波特率,否则无法通过 Python 更改。超时时间(以毫秒为单位)由下式给出: microbit_uart_timeout_char = 13000 / baudrate + 1

笔记

内部 UART RX 缓冲区为 64 字节,因此请确保在缓冲区已满之前读取数据,否则部分数据可能会丢失。

警告

接收0x03将通过引发键盘中断来停止您的程序。您可以使用 micropython.kbd_intr().

uart.readall()

从 1.0 版开始移除。

相反,使用 uart.read()不带参数,这将读取尽可能多的数据。

uart.readinto(buf[, nbytes])

将字节读入buf. 如果nbytes指定,则最多读取那么多字节。否则,最多读取len(buf) 字节。

返回值:读取并存储到 bufNone 超时时的字节数。

uart.readline()

读取一行,以换行符结尾。

返回值:读取或None 超时的行。换行符包含在返回的字节中。

uart.write(buf)

将缓冲区写入总线,它可以是字节对象或字符串:

uart.write('hello world')
uart.write(b'hello world')
uart.write(bytes([1, 2, 3]))

返回值:写入或None超时的字节数。