ps2io
– 支持 PS/2 协议
该 ps2io
模块包含提供 PS/2 通信的类。
如果程序在使用后继续,所有类都会更改硬件状态,并且在不再需要它们时应取消初始化。为此,请调用deinit()
或使用上下文管理器。有关更多信息,请参阅
Lifetime 和 ContextManagers。
在这些板上可用
- ATMegaZero ESP32-S2
- Adafruit EdgeBadge
- Adafruit Feather M4 CAN
- Adafruit Feather M4 Express
- Adafruit FunHouse
- Adafruit Grand Central M4 Express
- Adafruit Hallowing M4 Express
- Adafruit ItsyBitsy M4 Express
- Adafruit MagTag
- Adafruit Matrix Portal M4
- Adafruit Metro ESP32S2
- Adafruit Metro M4 Airlift Lite
- Adafruit Metro M4 Express
- Adafruit Monster M4SK
- Adafruit PyGamer
- Adafruit PyPortal
- Adafruit PyPortal Pynt
- Adafruit PyPortal Titano
- Adafruit Pybadge
- Adafruit Trellis M4 Express
- AloriumTech Evo M51
- Artisense Reference Design RD00
- BDMICRO VINA-D51
- BastWiFi
- CP32-M4
- Capable Robot Programmable USB Hub
- CircuitBrains Deluxe
- CrumpS2
- DynOSSAT-EDU-OBC
- ESP 12k NodeMCU
- Feather ESP32S2 without PSRAM
- FeatherS2
- FeatherS2 Neo
- FeatherS2 PreRelease
- Franzininho WIFI w/Wroom
- Franzininho WIFI w/Wrover
- Gravitech Cucumber M
- Gravitech Cucumber MS
- Gravitech Cucumber R
- Gravitech Cucumber RS
- HMI-DevKit-1.1
- Kaluga 1
- LILYGO TTGO T8 ESP32-S2 w/Display
- LoC BeR M4 base board
- MORPHEANS MorphESP-240
- Mini SAM M4
- Oak Dev Tech PixelWing ESP32S2
- Robo HAT MM1 M4
- S2Mini
- SAM32v26
- Saola 1 w/Wroom
- Saola 1 w/Wrover
- Seeeduino Wio Terminal
- Silicognition LLC M4-Shim
- SparkFun MicroMod SAMD51 Processor
- SparkFun Thing Plus - SAMD51
- TG-Boards' Datalore IP M4
- Targett Module Clip w/Wroom
- Targett Module Clip w/Wrover
- The Open Book Feather
- TinyS2
- UARTLogger II
- microS2
- nanoESP32-S2 w/Wrover
- nanoESP32-S2 w/Wroom
-
class
ps2io.
Ps2
(data_pin: microcontroller.Pin, clock_pin: microcontroller.Pin)
与 PS/2 键盘或鼠标通信
Ps2 实现了 PS/2 键盘/鼠标串行协议,用于传统设备。它类似于 UART,但只有两条线(数据和时钟)。PS/2 设备为 5V,因此必须使用双向电平转换器将 I/O 线连接到 3.3V 板的引脚。
创建与给定引脚关联的 Ps2 对象。
- 参数
-
从 PS/2 键盘读取一个字节并打开 Scroll Lock LED:
import ps2io
import board
kbd = ps2io.Ps2(board.D10, board.D11)
while len(kbd) == 0:
pass
print(kbd.popleft())
print(kbd.sendcmd(0xed))
print(kbd.sendcmd(0x01))
-
deinit
(self) → None
取消初始化 Ps2 并释放任何硬件资源以供重用。
-
__enter__
(self) → Ps2
上下文管理器使用的无操作。
-
__exit__
(self) → None
退出上下文时自动取消初始化硬件。有关更多信息,请参阅
Lifetime 和 ContextManagers。
-
popleft
(self) → int
删除并返回最旧的接收字节。当缓冲区为空时,引发 IndexError 异常。
-
sendcmd
(self, byte: int) → int
向 PS/2 发送一个命令字节。返回响应字节,通常是一般确认值 (0xFA)。某些命令会返回可通过popleft()
.
在失败的情况下引发 RuntimeError。可以通过调用找到根本原因clear_errors()
。建议在
clear_errors()
之前调用 sendcmd()
t以刷新任何以前的错误。
- 参数
byte (int) – 命令的字节值
-
clear_errors
(self) → None
返回并清除带有最新记录的通信错误的位图。
接收错误(异步出现,因为接收到数据):
0x01: 起始位不为 0
0x02: 超时
0x04: 奇偶校验位错误
0x08: 停止位不是 1
0x10: 缓冲区溢出,丢弃最新数据
传输错误(只能在 sendcmd() 过程中出现):
0x100: 时钟引脚没有及时到 LO
0x200: 时钟引脚没有及时进入 HI
0x400: 数据引脚未确认
0x800: 时钟引脚未确认
0x1000: 设备未响应 RTS
0x2000: 设备没有及时发送响应字节
-
__bool__
(self) → bool
-
__len__
(self) → int
返回缓冲区中接收到的字节数,可用于popleft()
.