確定裝置類型
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 | RAM 條、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 裝置(RAM、GPU)→ "smbus"最可靠的檢查方法是開啟 USBDeview 或裝置管理員,並查看裝置類別。HID 類別意味著 "hid"。USB 或 libusb 類別意味著 "rawusb"。如果兩者都有,則可能需要 "hybrid"。
如有疑問,先嘗試 "hid"。如果 device.write() 返回錯誤或裝置沒有響應,則切換到 "rawusb"。