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

การควบคุมพัดลม

ปลั๊กอินสามารถเปิดให้ระบบการระบายความร้อนของ SignalRGB ควบคุมความเร็วพัดลมและรายงานอุณหภูมิได้ เมื่อเปิดใช้งาน ผู้ใช้สามารถตั้งค่าเส้นโค้งพัดลม ตรวจสอบ RPM และดูค่าอุณหภูมิได้โดยตรงใน SignalRGB

รูปแบบทั่วไปของปลั๊กอินที่รองรับการควบคุมพัดลมมีดังนี้:

  1. export SupportsFanControl() ที่ส่งคืน true เพื่อบอก SignalRGB ว่าอุปกรณ์นี้มีพัดลมที่ควบคุมได้
  2. ตรวจหาว่ามีพัดลมตัวใดเชื่อมต่ออยู่ (ผ่านคำสั่งเฉพาะของอุปกรณ์หรือการสำรวจค่า RPM)
  3. เรียก device.createFanControl() สำหรับพัดลมแต่ละตัวที่ตรวจพบใน Initialize()
  4. ทุกเฟรมใน Render(): อ่านค่า RPM ปัจจุบันจากอุปกรณ์แล้วรายงานด้วย device.setRPM() จากนั้นอ่านความเร็วที่ต้องการจาก device.getFanLevel() แล้วนำไปใช้กับอุปกรณ์

ตรวจสอบ device.fanControlDisabled() เสมอก่อนเรียกฟังก์ชันระดับพัดลมใด ๆ การควบคุมพัดลมอาจใช้งานไม่ได้เนื่องจากผู้ใช้ไม่มี SignalRGB Pro หรือผู้ใช้ปิดใช้งานด้วยตนเอง


export จากปลั๊กอินเพื่อประกาศว่าอุปกรณ์นี้รองรับการควบคุมพัดลม SignalRGB จะเรียกฟังก์ชันนี้ระหว่างการเริ่มต้นเพื่อตัดสินใจว่าจะแสดง UI การระบายความร้อนสำหรับอุปกรณ์หรือไม่

export function SupportsFanControl() { return true; }

หากไม่มี export นี้หรือส่งคืน false คุณยังคงเข้าถึง API การควบคุมพัดลมได้ แต่ UI การระบายความร้อนจะไม่ปรากฏสำหรับอุปกรณ์


ส่งคืน true หากการควบคุมพัดลมไม่พร้อมใช้งานในขณะนี้ — อาจเป็นเพราะผู้ใช้ไม่มี SignalRGB Pro หรือผู้ใช้ปิดใช้งานระบบการระบายความร้อนด้วยตนเอง

ตรวจสอบสิ่งนี้เสมอก่อนเรียก device.getFanLevel() หรือ device.getNormalizedFanLevel()

ค่าที่ส่งคืนชนิดคำอธิบาย
Disabledbooleantrue หาก API การระบายความร้อนไม่พร้อมใช้งาน
if (device.fanControlDisabled()) {
return;
}

สร้างตัวควบคุมพัดลมด้วย ID ที่ระบุ เรียกฟังก์ชันนี้ใน Initialize() สำหรับพัดลมแต่ละตัวที่อุปกรณ์มี หากมีตัวควบคุมที่ใช้ ID นั้นอยู่แล้ว การเรียกจะถูกละเว้น

พารามิเตอร์ชนิดคำอธิบายตัวอย่าง
FanIdstringตัวระบุที่ไม่ซ้ำกันสำหรับตัวควบคุมพัดลมนี้"Fan1"
device.createFanControl("Fan1");
device.createFanControl("Fan2");

ลบตัวควบคุมพัดลมที่มี ID ที่ระบุ ใช้ฟังก์ชันนี้เมื่อตรวจไม่พบพัดลมอีกต่อไปหรือเมื่ออุปกรณ์ถูกตัดการเชื่อมต่อ

พารามิเตอร์ชนิดคำอธิบายตัวอย่าง
FanIdstringID ของตัวควบคุมพัดลมที่จะลบ"Fan1"

ส่งคืนความเร็วพัดลมที่ต้องการสำหรับตัวควบคุมพัดลมที่ระบุเป็นเปอร์เซ็นต์ (0–100) ซึ่งคำนวณจากการตั้งค่าเส้นโค้งพัดลมปัจจุบันของผู้ใช้

พารามิเตอร์ชนิดคำอธิบายตัวอย่าง
FanIdstringID ของตัวควบคุมพัดลม"Fan1"
ค่าที่ส่งคืนชนิดคำอธิบายตัวอย่าง
FanSpeedintความเร็วที่ต้องการ 0–10042
let speed = device.getFanLevel("Fan1"); // e.g. 42 (meaning 42%)

ส่งคืนความเร็วพัดลมที่ต้องการเป็นค่าทศนิยมแบบนอร์มัลไลซ์ (0.0–1.0) มีประโยชน์เมื่ออุปกรณ์ต้องการ duty cycle แบบเศษส่วนแทนเปอร์เซ็นต์

พารามิเตอร์ชนิดคำอธิบายตัวอย่าง
FanIdstringID ของตัวควบคุมพัดลม"Fan1"
ค่าที่ส่งคืนชนิดคำอธิบายตัวอย่าง
FanSpeedfloatความเร็วที่ต้องการ 0.0–1.00.42
let speed = device.getNormalizedFanLevel("Fan1"); // e.g. 0.42

รายงานค่า RPM ที่วัดได้ในปัจจุบันสำหรับตัวควบคุมพัดลม ค่านี้จะแสดงใน UI การระบายความร้อนและกราฟการตรวจสอบระบบ

พารามิเตอร์ชนิดคำอธิบายตัวอย่าง
FanIdstringID ของตัวควบคุมพัดลม"Fan1"
RPMintความเร็วพัดลมปัจจุบันเป็น RPM1337
let rpm = ReadRPMFromDevice("Fan1");
device.setRPM("Fan1", rpm);

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

สร้างเซ็นเซอร์อุณหภูมิด้วย ID ที่ระบุ เรียกฟังก์ชันนี้ใน Initialize() สำหรับแหล่งอุณหภูมิแต่ละแหล่งที่อุปกรณ์มี

พารามิเตอร์ชนิดคำอธิบายตัวอย่าง
SensorIdstringตัวระบุที่ไม่ซ้ำกันสำหรับเซ็นเซอร์นี้"Coolant Temp"
device.createTemperatureSensor("Coolant Temp");

ลบเซ็นเซอร์อุณหภูมิที่มี ID ที่ระบุ

พารามิเตอร์ชนิดคำอธิบายตัวอย่าง
SensorIdstringID ของเซ็นเซอร์ที่จะลบ"Coolant Temp"

รายงานอุณหภูมิปัจจุบันสำหรับเซ็นเซอร์ที่ระบุ เรียกฟังก์ชันนี้ทุกเฟรมหลังจากอ่านค่าจากอุปกรณ์แล้ว

พารามิเตอร์ชนิดคำอธิบายตัวอย่าง
SensorIdstringID ของเซ็นเซอร์"Coolant Temp"
Temperaturefloatอุณหภูมิปัจจุบันเป็นองศาเซลเซียส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");
}