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

직렬 장치에서 한 줄 전체를 읽습니다.

후행 개행 문자를 포함한 데이터를 담은 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

trigger로 지정된 이벤트가 발생할 때마다 호출될 handler를 등록합니다. 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 객체에서 읽을 새 데이터가 사용 가능할 때 발생합니다.