class USB_VCP -- USB 仮想通信ポート

USB_VCP クラスは、USB 仮想通信ポートを表す stream ライクなオブジェクトの作成を可能にします。接続されたホストとの間で USB 経由でデータを読み書きするために使用できます。

コンストラクタ

class pyb.USB_VCP(id: int = 0)

新しい USB_VCP オブジェクトを作成します。id 引数は、複数の USB VCP ポートが公開されている場合に使用するポートを選択します。

メソッド

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

シリアルデバイスから 1 行全体を読み取ります。

末尾の改行文字を含むデータを格納した bytes オブジェクト、または保留中のデータが利用できない場合は None を返します。

readlines() List[bytes]

シリアルデバイスから可能な限り多くのデータを読み取り、行に分割します。

bytes オブジェクトのリストを返します。各オブジェクトは 1 行です。各行には改行文字が含まれます。

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

trigger で指定したイベントが発生するたびに呼び出される handler を登録します。handler 関数は引数を正確に 1 つ取る必要があり、それは 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 オブジェクトから読み取り可能な新しいデータがあるときに発火します。