การระบุประเภทอุปกรณ์
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
หัวข้อที่มีชื่อว่า “Raw USB”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"