class USB_VCP -- USB 虚拟通信端口

USB_VCP 类允许创建一个类似 stream 的对象,表示 USB 虚拟通信端口。它可用于通过 USB 与所连接的主机之间读写数据。

构造函数

class pyb.USB_VCP(id: int = 0)

创建一个新的 USB_VCP 对象。当暴露了多个 USB VCP 端口时,id 参数用于选择使用哪一个。

方法

init(*, flow: int = -1) None

配置 USB VCP 端口。如果 flow 参数不为 -1,则它设置流控制,即 USB_VCP.RTSUSB_VCP.CTS 的按位或。RTS 控制读取行为;CTS 控制写入行为。

setinterrupt(chr: int) None

设置用于中断正在运行的 Python 代码的字符。默认设置为 3(CTRL-C),当通过 USB VCP 端口收到 CTRL-C 字符时,会引发 KeyboardInterrupt 异常。

设置为 -1 可禁用此中断功能。当你想要通过 USB VCP 端口发送原始字节时,这很有用。

isconnected() bool

如果 USB 已作为串行设备连接,则返回 True,否则返回 False

debug_mode_enabled() bool

如果 OpenMV IDE 已连接到 OpenMV Cam,则返回 True

any() bool

如果有任何字符正在等待,则返回 True,否则返回 False

close() None

此方法不执行任何操作。它的存在是为了让 USB_VCP 对象能够像文件一样使用。

read(nbytes: int | None = None) bytes | None

从串行设备最多读取 nbytes 个字节,并将它们作为 bytes 对象返回。如果未指定 nbytes,则该方法读取串行设备上所有可用的字节。USB_VCP stream 隐式地以非阻塞模式工作,因此如果没有待处理的可用数据,此方法将立即返回 None 值。

readinto(buf: bytearray, maxlen: int | None = None) int | None

从串行设备读取字节并将它们存入 buf(应当是一个类缓冲区对象)。最多读取 len(buf) 个字节。如果给定了 maxlen,则最多读取 min(maxlen, len(buf)) 个字节。

返回读取并存入 buf 的字节数,如果没有待处理的可用数据则返回 None

readline() bytes | None

从串行设备读取一整行。

返回一个包含数据的 bytes 对象,其中包括末尾的换行符;如果没有待处理的可用数据则返回 None

readlines() List[bytes]

从串行设备尽可能多地读取数据,并将其按行分割。

返回一个 bytes 对象的列表,每个对象为其中的一行。每一行都将包含换行符。

write(buf: bytes | bytearray | str) int

buf 中的字节写入串行设备。

返回写入的字节数。

recv(data: int | bytearray, *, timeout: int = 5000) bytes | int

在总线上接收数据:

  • data 可以是一个整数,即要接收的字节数,也可以是一个可变缓冲区,将用接收到的字节填充。

  • timeout 是等待接收的超时时间,单位为毫秒。

返回值:如果 data 是整数,则返回一个包含所接收字节的新缓冲区,否则返回读入 data 的字节数。

send(data: int | bytes | bytearray, *, timeout: int = 5000) int

通过 USB VCP 发送数据:

  • data 是要发送的数据(一个要发送的整数,或一个缓冲区对象)。

  • timeout 是等待发送的超时时间,单位为毫秒。

返回值:发送的字节数。

irq(handler: Callable[[USB_VCP], None] | None = None, trigger: int = IRQ_RX, hard: bool = False) None

注册 handler,使其在 trigger 所指定的事件发生时被调用。handler 函数必须恰好接受一个参数,即 USB VCP 对象。传入 None 可禁用该回调。

trigger 的有效值为:

  • USB_VCP.IRQ_RX:有新数据可从 USB VCP 对象读取。

常量

RTS: int

用于 init() 的流控制标志。启用 RTS 会使设备在读取缓冲区已满时限制主机的传输。

CTS: int

用于 init() 的流控制标志。启用 CTS 会使设备在写入期间遵循主机的流控制(阻塞直到主机准备好接收)。可以与 RTS 进行 OR 运算。

IRQ_RX: int

irq() 触发器:当有新数据可从 USB VCP 对象读取时触发。