คลาส USB_VCP -- พอร์ตสื่อสารเสมือน USB¶
คลาส USB_VCP ช่วยให้สร้างออบเจกต์คล้าย stream ที่แทนพอร์ตสื่อสารเสมือน USB ใช้เพื่ออ่านและเขียนข้อมูลผ่าน USB ไปยังโฮสต์ที่เชื่อมต่ออยู่ได้
คอนสตรักเตอร์¶
- class pyb.USB_VCP(id: int = 0)¶
สร้างออบเจกต์
USB_VCPใหม่ อาร์กิวเมนต์ id เลือกว่าจะใช้พอร์ต USB VCP ใดเมื่อมีการเปิดเผยมากกว่าหนึ่งพอร์ตเมธอด¶
- init(*, flow: int = -1) None¶
กำหนดค่าพอร์ต USB VCP หากอาร์กิวเมนต์ flow ไม่ใช่
-1จะตั้งค่าการควบคุมการไหล ซึ่งเป็น bitwise-OR ของUSB_VCP.RTSและUSB_VCP.CTSRTSควบคุมพฤติกรรมการอ่านCTSควบคุมพฤติกรรมการเขียน
- setinterrupt(chr: int) None¶
ตั้งค่าอักขระที่ขัดจังหวะการทำงานของโค้ด Python ที่กำลังรัน ค่าเริ่มต้นคือ 3 (CTRL-C) และเมื่อได้รับอักขระ CTRL-C ผ่านพอร์ต USB VCP จะเกิดข้อยกเว้น KeyboardInterrupt
ตั้งค่าเป็น -1 เพื่อปิดใช้งานฟีเจอร์การขัดจังหวะนี้ มีประโยชน์เมื่อต้องการส่งไบต์ดิบผ่านพอร์ต 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เพื่อปิดใช้งาน callbackค่าที่ใช้ได้สำหรับ trigger ได้แก่:
USB_VCP.IRQ_RX: มีข้อมูลใหม่พร้อมสำหรับการอ่านจากออบเจกต์ USB VCP
ค่าคงที่¶
- RTS: int¶
แฟล็กควบคุมการไหลสำหรับ
init()การเปิดใช้งานRTSจะทำให้อุปกรณ์จำกัดการส่งข้อมูลของโฮสต์เมื่อบัฟเฟอร์อ่านเต็ม