ข้ามไปยังเนื้อหา

การระบุประเภทอุปกรณ์

export Type() จะบอก SignalRGB ว่าควรใช้โปรโตคอลการสื่อสาร USB แบบใดสำหรับปลั๊กอินของคุณ การเลือกประเภทผิดเป็นหนึ่งในสาเหตุที่พบบ่อยที่สุดที่ทำให้ปลั๊กอินไม่สามารถสื่อสารกับอุปกรณ์ได้

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

สตริงประเภทโปรโตคอลอุปกรณ์โดยทั่วไป
"hid"HID (Human Interface Device)คีย์บอร์ด เมาส์ หูฟัง และอุปกรณ์ต่อพ่วงสำหรับผู้บริโภคส่วนใหญ่
"rawusb"การถ่ายโอน USB แบบ raw bulk/interrupt ผ่าน libusbชุดระบายความร้อน AIO หน้าจอ LCD ฮาร์ดแวร์แบบกำหนดเอง คอนโทรลเลอร์ไฟ
"hybrid"ทั้ง HID และ raw USB พร้อมกันอุปกรณ์ที่ใช้ HID สำหรับคำสั่งควบคุม แต่ใช้ USB แบบ bulk สำหรับข้อมูลขนาดใหญ่ (เช่น จอ Alienware, AIO ASUS Ryuo)
"serial"พอร์ตซีเรียล/COMคอนโทรลเลอร์ที่ใช้ Arduino, Hyte CNVS
"smbus"SMBus / I²Cแรม, GPU, หัวต่อบนเมนบอร์ดที่เข้าถึงผ่าน SMBus
"network"ซ็อกเก็ตเครือข่าย (TCP หรือ UDP)คอนโทรลเลอร์ที่เชื่อมต่อผ่าน Wi-Fi หรือ Ethernet

สตริงประเภทไม่คำนึงถึงตัวพิมพ์เล็กใหญ่ — "HID", "Hid" และ "hid" ใช้ได้ทั้งหมด แต่ ตามธรรมเนียมจะใช้ตัวพิมพ์เล็ก


HID เป็นประเภทที่พบบ่อยที่สุด ระบบปฏิบัติการจะให้ SignalRGB เข้าถึงอุปกรณ์ได้โดยตรงโดยไม่ต้องใช้ไดรเวอร์แบบกำหนดเอง ใช้ประเภทนี้สำหรับคีย์บอร์ด เมาส์ หูฟัง และอุปกรณ์ต่อพ่วงสำหรับผู้บริโภคส่วนใหญ่

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

เมื่อใช้ HID คุณจะใช้ device.write() / device.send_report() สำหรับการเขียน และ device.read() / device.get_report() สำหรับการอ่าน ดูรายละเอียดได้ที่ การเขียนและการอ่าน


Raw USB จะข้ามเลเยอร์ HID และสื่อสารกับอุปกรณ์โดยตรงผ่าน libusb คุณจำเป็นต้องใช้ประเภทนี้เมื่อ:

  • อุปกรณ์ไม่ใช่อุปกรณ์คลาส HID
  • คุณต้องการการถ่ายโอนแบบ bulk ที่มีขนาดใหญ่กว่าขีดจำกัดขนาดแพ็กเก็ตของ HID
  • อุปกรณ์ต้องการการเข้าถึงระดับ libusb (เช่น สำหรับการสตรีมภาพไปยัง LCD)
export function Type() { return "rawusb"; }

เมื่อใช้ raw USB คุณจะใช้ฟังก์ชัน device.write() และ device.read() เหมือนเดิม แต่ตอนนี้ฟังก์ชันเหล่านี้จะแมปไปยังการถ่ายโอนแบบ bulk/interrupt ของ libusb แทน HID คุณยังสามารถใช้ device.bulk_transfer() และ device.control_transfer() เพื่อการควบคุมที่มากขึ้นได้ ดู การสื่อสารขั้นสูง


ใช้ "hybrid" เมื่ออุปกรณ์ใช้ HID สำหรับคำสั่งบางอย่าง (เช่น การยืนยันตัวตนหรือการกำหนดค่า) และใช้การถ่ายโอน raw USB แบบ bulk สำหรับคำสั่งอื่น ๆ (เช่น การสตรีมข้อมูลภาพไปยัง LCD) ทั้งเอนด์พอยต์ HID และเอนด์พอยต์ raw USB จะถูกเปิดพร้อมกัน

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

สำหรับอุปกรณ์ที่เชื่อมต่อผ่านพอร์ต COM ให้นำเข้า @SignalRGB/serial และใช้เมธอดอ่าน/เขียนของโมดูลนี้ ดู การสื่อสารขั้นสูง สำหรับ API ซีเรียลฉบับเต็ม

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

หากคุณไม่แน่ใจว่าอุปกรณ์ของคุณต้องใช้ประเภทใด ให้เริ่มจากตรงนี้:

Does Windows enumerate it as a HID device?
├─ Yes → start with "hid"
│ If write commands fail → try "rawusb"
│ If the device also needs large bulk transfers → use "hybrid"
│
├─ No, it's a COM/serial port → "serial"
│
├─ No, it's on the network → "network"
│
└─ No, it's an SMBus device (RAM, GPU) → "smbus"

วิธีตรวจสอบที่น่าเชื่อถือที่สุดคือเปิด USBDeview หรือ Device Manager แล้วดูคลาสของอุปกรณ์ คลาส HID หมายถึง "hid" คลาส USB หรือ libusb หมายถึง "rawusb" หากคุณเห็นทั้งสองอย่าง อาจต้องใช้ "hybrid"

หากไม่แน่ใจ ให้ลอง "hid" ก่อน หาก device.write() ส่งคืนข้อผิดพลาดหรืออุปกรณ์ไม่ตอบสนอง ให้เปลี่ยนไปใช้ "rawusb"