确定设备类型
Type() 导出函数告诉 SignalRGB 为您的插件使用哪种 USB 通信协议。选择错误的类型是插件无法与设备通信的最常见原因之一。
export function Type() { return "hid"; }| 类型字符串 | 协议 | 典型设备 |
|---|---|---|
"hid" | HID(人机接口设备) | 键盘、鼠标、耳机、大多数消费类外设 |
"rawusb" | 通过 libusb 进行原始 USB 批量/中断传输 | AIO 散热器、LCD 屏幕、自定义硬件、灯光控制器 |
"hybrid" | HID 和原始 USB 同时使用 | 使用 HID 进行控制命令但使用 USB 批量传输进行大数据的设备(例如 Alienware 显示器、ASUS Ryuo AIO) |
"serial" | 串口/COM 端口 | 基于 Arduino 的控制器、Hyte CNVS |
"smbus" | SMBus / I²C | 内存条、GPU、通过 SMBus 访问的主板接头 |
"network" | 网络套接字(TCP 或 UDP) | Wi-Fi 或以太网连接的控制器 |
类型字符串不区分大小写 — "HID"、"Hid" 和 "hid" 都有效,但小写是惯例。
HID 是最常见的类型。操作系统让 SignalRGB 直接访问设备,无需自定义驱动程序。用于键盘、鼠标、耳机和大多数消费类外设。
export function Type() { return "hid"; }使用 HID 时,您使用 device.write() / device.send_report() 进行写入,使用 device.read() / device.get_report() 进行读取。有关详细信息,请参阅写入和读取。
原始 USB
Section titled “原始 USB”原始 USB 绕过 HID 层,使用 libusb 直接与设备通信。在以下情况下需要此类型:
- 设备不是 HID 类设备
- 您需要大于 HID 数据包大小限制的批量传输
- 设备需要 libusb 级别访问(例如 LCD 图像流)
export function Type() { return "rawusb"; }使用原始 USB 时,您使用相同的 device.write() 和 device.read() 函数,但它们现在映射到 libusb 批量/中断传输,而不是 HID。您也可以使用 device.bulk_transfer() 和 device.control_transfer() 进行更多控制。请参阅高级通信。
当设备使用 HID 进行某些命令(例如身份验证或配置)并使用原始 USB 批量传输进行其他命令(例如将图像数据流传输到 LCD)时,请使用 "hybrid"。HID 端点和原始 USB 端点同时打开。
export function Type() { return "hybrid"; }用于通过 COM 端口连接的设备。导入 @SignalRGB/serial 并使用其读取/写入方法。有关完整的串口 API,请参阅高级通信。
import { serial } from "@SignalRGB/serial";export function Type() { return "serial"; }如何确定正确类型
Section titled “如何确定正确类型”如果您不确定设备需要哪种类型,请从这里开始:
Windows 是否将其枚举为 HID 设备?├─ 是 → 从 "hid" 开始│ 如果写入命令失败 → 尝试 "rawusb"│ 如果设备还需要大型批量传输 → 使用 "hybrid"│├─ 否,它是 COM/串口 → "serial"│├─ 否,它在网络上 → "network"│└─ 否,它是 SMBus 设备(内存、GPU) → "smbus"最可靠的检查方法是打开 USBDeview 或设备管理器,查看设备类别。类别为 HID 表示 "hid"。类别为 USB 或 libusb 表示 "rawusb"。如果两者都有,可能需要 "hybrid"。
如有疑问,先尝试 "hid"。如果 device.write() 返回错误或设备没有响应,则切换到 "rawusb"。