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 的位元 OR 運算。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 物件讀取時觸發。