ps2io – 支持 PS/2 协议

ps2io 模块包含提供 PS/2 通信的类。

警告

此模块在某些 SAMD21 版本中不可用。有关更多信息,请参阅 Module Support Matrix - 模块支持表 - 哪些模块适用于哪些主板

如果程序在使用后继续,所有类都会更改硬件状态,并且在不再需要它们时应取消初始化。为此,请调用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 对象。

参数
  • data_pin (Pin) – 连接到数据线的引脚。

  • clock_pin (Pin) – 连接到时钟线的引脚。该引脚必须支持中断。

从 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().