Przejdź do głównej zawartości

Określanie typu urządzenia

Eksport Type() mówi SignalRGB, którego protokołu komunikacji USB należy użyć dla twojej wtyczki. Wybranie złego typu jest jednym z najczęstszych powodów niepowodzenia komunikacji wtyczki z urządzeniem.

export function Type() { return "hid"; }

Ciąg typuProtokółTypowe urządzenia
"hid"HID (Human Interface Device)Klawiatury, myszy, zestawy słuchawkowe, większość urządzeń peryferyjnych dla konsumentów
"rawusb"Surowe przesyły bulk/interrupt USB przez libusbChłodzenia AIO, wyświetlacze LCD, niestandardowy sprzęt, kontrolery oświetlenia
"hybrid"Zarówno HID, jak i surowy USB jednocześnieUrządzenia używające HID do poleceń sterujących, ale bulk USB do dużych danych (np. monitory Alienware, AIO Asus Ryuo)
"serial"Szeregowy/port COMKontrolery oparte na Arduino, Hyte CNVS
"smbus"SMBus / I²CPamięci RAM, GPU, nagłówki płyty głównej dostępne przez SMBus
"network"Gniazdo sieciowe (TCP lub UDP)Kontrolery połączone przez Wi-Fi lub Ethernet

Ciągi typów nie rozróżniają wielkości liter — "HID", "Hid" i "hid" wszystkie działają, ale małe litery są konwencją.


HID jest najczęstszym typem. System operacyjny daje SignalRGB bezpośredni dostęp do urządzenia bez potrzeby niestandardowego sterownika. Używaj tego dla klawiatur, myszy, zestawów słuchawkowych i większości urządzeń peryferyjnych dla konsumentów.

export function Type() { return "hid"; }

W przypadku HID używasz device.write() / device.send_report() do operacji zapisu i device.read() / device.get_report() do operacji odczytu. Zobacz Zapisy i odczyty, aby uzyskać szczegóły.


Raw USB omija warstwę HID i komunikuje się bezpośrednio z urządzeniem przez libusb. Potrzebujesz tego, gdy:

  • Urządzenie nie jest urządzeniem klasy HID
  • Potrzebujesz przesyłów bulk większych niż limit rozmiaru pakietu HID
  • Urządzenie wymaga dostępu na poziomie libusb (np. do strumieniowania obrazów LCD)
export function Type() { return "rawusb"; }

W przypadku raw USB używasz tych samych funkcji device.write() i device.read(), ale są one teraz mapowane na przesyły bulk/interrupt libusb zamiast HID. Możesz również używać device.bulk_transfer() i device.control_transfer() dla większej kontroli. Zobacz Zaawansowana komunikacja.


Użyj "hybrid", gdy urządzenie używa HID do niektórych poleceń (np. uwierzytelnianie lub konfiguracja) i surowych przesyłów bulk USB do innych (np. strumieniowanie danych obrazu do LCD). Zarówno punkty końcowe HID, jak i surowy USB są otwierane jednocześnie.

export function Type() { return "hybrid"; }

Dla urządzeń połączonych przez port COM. Importuj @SignalRGB/serial i używaj metod odczytu/zapisu. Zobacz Zaawansowana komunikacja dla pełnego API szeregowego.

import { serial } from "@SignalRGB/serial";
export function Type() { return "serial"; }

Jeśli nie jesteś pewien, jakiego typu potrzebuje twoje urządzenie, zacznij tutaj:

Czy Windows rozpoznaje je jako urządzenie HID?
├─ Tak → zacznij od "hid"
│ Jeśli polecenia zapisu zawodzą → spróbuj "rawusb"
│ Jeśli urządzenie również potrzebuje dużych przesyłów bulk → użyj "hybrid"
├─ Nie, to jest port COM/szeregowy → "serial"
├─ Nie, jest w sieci → "network"
└─ Nie, jest to urządzenie SMBus (RAM, GPU) → "smbus"

Najbardziej niezawodnym sposobem sprawdzenia tego jest otwarcie USBDeview lub Menedżera urządzeń i sprawdzenie klasy urządzenia. Klasa HID oznacza "hid". Klasa USB lub libusb oznacza "rawusb". Jeśli widzisz obie, może być potrzebny "hybrid".

W razie wątpliwości najpierw spróbuj "hid". Jeśli device.write() zwraca błąd lub urządzenie nie odpowiada, przełącz się na "rawusb".