การควบคุมพัดลม
ปลั๊กอินสามารถเปิดให้ระบบการระบายความร้อนของ SignalRGB ควบคุมความเร็วพัดลมและรายงานอุณหภูมิได้ เมื่อเปิดใช้งาน ผู้ใช้สามารถตั้งค่าเส้นโค้งพัดลม ตรวจสอบ RPM และดูค่าอุณหภูมิได้โดยตรงใน SignalRGB
รูปแบบทั่วไปของปลั๊กอินที่รองรับการควบคุมพัดลมมีดังนี้:
- export
SupportsFanControl()ที่ส่งคืนtrueเพื่อบอก SignalRGB ว่าอุปกรณ์นี้มีพัดลมที่ควบคุมได้ - ตรวจหาว่ามีพัดลมตัวใดเชื่อมต่ออยู่ (ผ่านคำสั่งเฉพาะของอุปกรณ์หรือการสำรวจค่า RPM)
- เรียก
device.createFanControl()สำหรับพัดลมแต่ละตัวที่ตรวจพบในInitialize() - ทุกเฟรมใน
Render(): อ่านค่า RPM ปัจจุบันจากอุปกรณ์แล้วรายงานด้วยdevice.setRPM()จากนั้นอ่านความเร็วที่ต้องการจากdevice.getFanLevel()แล้วนำไปใช้กับอุปกรณ์
ตรวจสอบ device.fanControlDisabled() เสมอก่อนเรียกฟังก์ชันระดับพัดลมใด ๆ การควบคุมพัดลมอาจใช้งานไม่ได้เนื่องจากผู้ใช้ไม่มี SignalRGB Pro หรือผู้ใช้ปิดใช้งานด้วยตนเอง
การ export ของปลั๊กอิน
หัวข้อที่มีชื่อว่า “การ export ของปลั๊กอิน”SupportsFanControl()
หัวข้อที่มีชื่อว่า “SupportsFanControl()”export จากปลั๊กอินเพื่อประกาศว่าอุปกรณ์นี้รองรับการควบคุมพัดลม SignalRGB จะเรียกฟังก์ชันนี้ระหว่างการเริ่มต้นเพื่อตัดสินใจว่าจะแสดง UI การระบายความร้อนสำหรับอุปกรณ์หรือไม่
export function SupportsFanControl() { return true; }หากไม่มี export นี้หรือส่งคืน false คุณยังคงเข้าถึง API การควบคุมพัดลมได้ แต่ UI การระบายความร้อนจะไม่ปรากฏสำหรับอุปกรณ์
เมธอดตัวควบคุมพัดลม
หัวข้อที่มีชื่อว่า “เมธอดตัวควบคุมพัดลม”device.fanControlDisabled()
หัวข้อที่มีชื่อว่า “device.fanControlDisabled()”ส่งคืน true หากการควบคุมพัดลมไม่พร้อมใช้งานในขณะนี้ — อาจเป็นเพราะผู้ใช้ไม่มี SignalRGB Pro หรือผู้ใช้ปิดใช้งานระบบการระบายความร้อนด้วยตนเอง
ตรวจสอบสิ่งนี้เสมอก่อนเรียก device.getFanLevel() หรือ device.getNormalizedFanLevel()
| ค่าที่ส่งคืน | ชนิด | คำอธิบาย |
|---|---|---|
| Disabled | boolean | true หาก API การระบายความร้อนไม่พร้อมใช้งาน |
if (device.fanControlDisabled()) { return;}device.createFanControl(fanId)
หัวข้อที่มีชื่อว่า “device.createFanControl(fanId)”สร้างตัวควบคุมพัดลมด้วย ID ที่ระบุ เรียกฟังก์ชันนี้ใน Initialize() สำหรับพัดลมแต่ละตัวที่อุปกรณ์มี หากมีตัวควบคุมที่ใช้ ID นั้นอยู่แล้ว การเรียกจะถูกละเว้น
| พารามิเตอร์ | ชนิด | คำอธิบาย | ตัวอย่าง |
|---|---|---|---|
| FanId | string | ตัวระบุที่ไม่ซ้ำกันสำหรับตัวควบคุมพัดลมนี้ | "Fan1" |
device.createFanControl("Fan1");device.createFanControl("Fan2");device.removeFanControl(fanId)
หัวข้อที่มีชื่อว่า “device.removeFanControl(fanId)”ลบตัวควบคุมพัดลมที่มี ID ที่ระบุ ใช้ฟังก์ชันนี้เมื่อตรวจไม่พบพัดลมอีกต่อไปหรือเมื่ออุปกรณ์ถูกตัดการเชื่อมต่อ
| พารามิเตอร์ | ชนิด | คำอธิบาย | ตัวอย่าง |
|---|---|---|---|
| FanId | string | ID ของตัวควบคุมพัดลมที่จะลบ | "Fan1" |
device.getFanLevel(fanId)
หัวข้อที่มีชื่อว่า “device.getFanLevel(fanId)”ส่งคืนความเร็วพัดลมที่ต้องการสำหรับตัวควบคุมพัดลมที่ระบุเป็นเปอร์เซ็นต์ (0–100) ซึ่งคำนวณจากการตั้งค่าเส้นโค้งพัดลมปัจจุบันของผู้ใช้
| พารามิเตอร์ | ชนิด | คำอธิบาย | ตัวอย่าง |
|---|---|---|---|
| FanId | string | ID ของตัวควบคุมพัดลม | "Fan1" |
| ค่าที่ส่งคืน | ชนิด | คำอธิบาย | ตัวอย่าง |
|---|---|---|---|
| FanSpeed | int | ความเร็วที่ต้องการ 0–100 | 42 |
let speed = device.getFanLevel("Fan1"); // e.g. 42 (meaning 42%)device.getNormalizedFanLevel(fanId)
หัวข้อที่มีชื่อว่า “device.getNormalizedFanLevel(fanId)”ส่งคืนความเร็วพัดลมที่ต้องการเป็นค่าทศนิยมแบบนอร์มัลไลซ์ (0.0–1.0) มีประโยชน์เมื่ออุปกรณ์ต้องการ duty cycle แบบเศษส่วนแทนเปอร์เซ็นต์
| พารามิเตอร์ | ชนิด | คำอธิบาย | ตัวอย่าง |
|---|---|---|---|
| FanId | string | ID ของตัวควบคุมพัดลม | "Fan1" |
| ค่าที่ส่งคืน | ชนิด | คำอธิบาย | ตัวอย่าง |
|---|---|---|---|
| FanSpeed | float | ความเร็วที่ต้องการ 0.0–1.0 | 0.42 |
let speed = device.getNormalizedFanLevel("Fan1"); // e.g. 0.42device.setRPM(fanId, rpm)
หัวข้อที่มีชื่อว่า “device.setRPM(fanId, rpm)”รายงานค่า RPM ที่วัดได้ในปัจจุบันสำหรับตัวควบคุมพัดลม ค่านี้จะแสดงใน UI การระบายความร้อนและกราฟการตรวจสอบระบบ
| พารามิเตอร์ | ชนิด | คำอธิบาย | ตัวอย่าง |
|---|---|---|---|
| FanId | string | ID ของตัวควบคุมพัดลม | "Fan1" |
| RPM | int | ความเร็วพัดลมปัจจุบันเป็น RPM | 1337 |
let rpm = ReadRPMFromDevice("Fan1");device.setRPM("Fan1", rpm);เมธอดเซ็นเซอร์อุณหภูมิ
หัวข้อที่มีชื่อว่า “เมธอดเซ็นเซอร์อุณหภูมิ”ปลั๊กอินยังสามารถส่งค่าอุณหภูมิไปยังระบบการระบายความร้อนของ SignalRGB ได้ด้วย ค่าเหล่านี้จะปรากฏในการตรวจสอบระบบ และสามารถใช้เป็นแหล่งอินพุตสำหรับเส้นโค้งพัดลมได้
device.createTemperatureSensor(sensorId)
หัวข้อที่มีชื่อว่า “device.createTemperatureSensor(sensorId)”สร้างเซ็นเซอร์อุณหภูมิด้วย ID ที่ระบุ เรียกฟังก์ชันนี้ใน Initialize() สำหรับแหล่งอุณหภูมิแต่ละแหล่งที่อุปกรณ์มี
| พารามิเตอร์ | ชนิด | คำอธิบาย | ตัวอย่าง |
|---|---|---|---|
| SensorId | string | ตัวระบุที่ไม่ซ้ำกันสำหรับเซ็นเซอร์นี้ | "Coolant Temp" |
device.createTemperatureSensor("Coolant Temp");device.removeTemperatureSensor(sensorId)
หัวข้อที่มีชื่อว่า “device.removeTemperatureSensor(sensorId)”ลบเซ็นเซอร์อุณหภูมิที่มี ID ที่ระบุ
| พารามิเตอร์ | ชนิด | คำอธิบาย | ตัวอย่าง |
|---|---|---|---|
| SensorId | string | ID ของเซ็นเซอร์ที่จะลบ | "Coolant Temp" |
device.SetTemperature(sensorId, temperature)
หัวข้อที่มีชื่อว่า “device.SetTemperature(sensorId, temperature)”รายงานอุณหภูมิปัจจุบันสำหรับเซ็นเซอร์ที่ระบุ เรียกฟังก์ชันนี้ทุกเฟรมหลังจากอ่านค่าจากอุปกรณ์แล้ว
| พารามิเตอร์ | ชนิด | คำอธิบาย | ตัวอย่าง |
|---|---|---|---|
| SensorId | string | ID ของเซ็นเซอร์ | "Coolant Temp" |
| Temperature | float | อุณหภูมิปัจจุบันเป็นองศาเซลเซียส | 34.5 |
let temp = ReadTemperatureFromDevice();device.SetTemperature("Coolant Temp", temp);ตัวอย่างฉบับเต็ม
หัวข้อที่มีชื่อว่า “ตัวอย่างฉบับเต็ม”export function SupportsFanControl() { return true; }
export function Initialize() { device.createFanControl("Fan1"); device.createFanControl("Fan2"); device.createTemperatureSensor("Coolant Temp");}
export function Render() { // Report current RPM — required every frame or speed will hardlock device.setRPM("Fan1", ReadRPM(1)); device.setRPM("Fan2", ReadRPM(2));
// Report current temperature device.SetTemperature("Coolant Temp", ReadTemp());
// Apply desired speed to hardware if (!device.fanControlDisabled()) { SetDeviceFanSpeed(1, device.getFanLevel("Fan1")); SetDeviceFanSpeed(2, device.getFanLevel("Fan2")); }}
export function Shutdown() { device.removeFanControl("Fan1"); device.removeFanControl("Fan2"); device.removeTemperatureSensor("Coolant Temp");}