lớp USB_VCP -- cổng truyền thông ảo USB¶
Lớp USB_VCP cho phép tạo đối tượng giống stream đại diện cho cổng truyền thông ảo USB. Nó có thể được dùng để đọc và ghi dữ liệu qua USB tới máy chủ đã kết nối.
Hàm khởi tạo¶
- class pyb.USB_VCP(id: int = 0)¶
Tạo đối tượng
USB_VCPmới. Tham số id chọn cổng USB VCP nào sẽ được dùng khi có nhiều hơn một cổng được cung cấp.Phương thức¶
- init(*, flow: int = -1) None¶
Cấu hình cổng USB VCP. Nếu tham số flow không phải
-1, nó sẽ đặt kiểm soát luồng, là phép OR theo bit củaUSB_VCP.RTSvàUSB_VCP.CTS.RTSkiểm soát hành vi đọc;CTSkiểm soát hành vi ghi.
- setinterrupt(chr: int) None¶
Đặt ký tự làm ngắt mã Python đang chạy. Mặc định được đặt là 3 (CTRL-C), và khi nhận được ký tự CTRL-C qua cổng USB VCP, ngoại lệ KeyboardInterrupt sẽ được đưa ra.
Đặt thành -1 để tắt tính năng ngắt này. Điều này hữu ích khi bạn muốn gửi byte thô qua cổng USB VCP.
- close() None¶
Phương thức này không làm gì. Nó tồn tại để đối tượng USB_VCP có thể hoạt động như một file.
- read(nbytes: int | None = None) bytes | None¶
Đọc tối đa
nbytestừ thiết bị serial và trả về chúng dưới dạng đối tượng bytes. Nếunbyteskhông được chỉ định thì phương thức đọc tất cả các byte hiện có từ thiết bị serial. USB_VCP stream hoạt động ngầm định ở chế độ không chặn, vì vậy nếu không có dữ liệu đang chờ, phương thức này sẽ trả về ngay lập tức với giá trịNone.
- readinto(buf: bytearray, maxlen: int | None = None) int | None¶
Đọc các byte từ thiết bị serial và lưu chúng vào
buf, đây phải là đối tượng giống bộ đệm. Đọc tối đalen(buf)byte. Nếumaxlenđược chỉ định thì đọc tối đamin(maxlen, len(buf))byte.Trả về số byte đã đọc và lưu vào
bufhoặcNonenếu không có dữ liệu đang chờ.
- readline() bytes | None¶
Đọc toàn bộ một dòng từ thiết bị serial.
Trả về đối tượng bytes chứa dữ liệu, bao gồm ký tự xuống dòng ở cuối, hoặc
Nonenếu không có dữ liệu đang chờ.
- readlines() List[bytes]¶
Đọc càng nhiều dữ liệu càng tốt từ thiết bị serial, chia thành các dòng.
Trả về danh sách các đối tượng bytes, mỗi đối tượng là một dòng. Mỗi dòng sẽ bao gồm ký tự xuống dòng.
- write(buf: bytes | bytearray | str) int¶
Ghi các byte từ
buflên thiết bị serial.Trả về số byte đã ghi.
- recv(data: int | bytearray, *, timeout: int = 5000) bytes | int¶
Nhận dữ liệu trên bus:
datacó thể là một số nguyên (số byte cần nhận) hoặc bộ đệm có thể ghi, sẽ được điền bằng các byte nhận được.timeoutlà thời gian chờ tính bằng mili giây để chờ nhận.
Giá trị trả về: nếu
datalà số nguyên thì trả về bộ đệm mới chứa các byte đã nhận, ngược lại trả về số byte đã đọc vàodata.
- send(data: int | bytes | bytearray, *, timeout: int = 5000) int¶
Gửi dữ liệu qua USB VCP:
datalà dữ liệu cần gửi (một số nguyên để gửi, hoặc đối tượng bộ đệm).timeoutlà thời gian chờ tính bằng mili giây để chờ gửi.
Giá trị trả về: số byte đã gửi.
- irq(handler: Callable[[USB_VCP], None] | None = None, trigger: int = IRQ_RX, hard: bool = False) None¶
Đăng ký handler để được gọi mỗi khi xảy ra sự kiện được chỉ định bởi trigger. Hàm handler phải nhận đúng một đối số là đối tượng USB VCP. Truyền vào
Noneđể tắt hàm gọi lại.Các giá trị hợp lệ cho trigger là:
USB_VCP.IRQ_RX: có dữ liệu mới sẵn sàng để đọc từ đối tượng USB VCP.
Hằng số¶
- RTS: int¶
Cờ kiểm soát luồng cho
init(). BậtRTSkhiến thiết bị điều tiết quá trình truyền của máy chủ khi bộ đệm đọc đầy.