跳转到内容

确定设备类型

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 绕过 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"; }

如果您不确定设备需要哪种类型,请从这里开始:

Windows 是否将其枚举为 HID 设备?
├─ 是 → 从 "hid" 开始
│ 如果写入命令失败 → 尝试 "rawusb"
│ 如果设备还需要大型批量传输 → 使用 "hybrid"
├─ 否,它是 COM/串口 → "serial"
├─ 否,它在网络上 → "network"
└─ 否,它是 SMBus 设备(内存、GPU) → "smbus"

最可靠的检查方法是打开 USBDeview设备管理器,查看设备类别。类别为 HID 表示 "hid"。类别为 USBlibusb 表示 "rawusb"。如果两者都有,可能需要 "hybrid"

如有疑问,先尝试 "hid"。如果 device.write() 返回错误或设备没有响应,则切换到 "rawusb"