التحكم في المراوح
يمكن للإضافات إتاحة التحكم في سرعة المراوح والإبلاغ عن درجات الحرارة لنظام التبريد في SignalRGB. عند تفعيل ذلك، يمكن للمستخدمين ضبط منحنيات المراوح ومراقبة عدد الدورات في الدقيقة (RPM) وعرض قراءات درجات الحرارة مباشرة في SignalRGB.
النمط العام للإضافة التي تدعم التحكم في المراوح هو:
- صدّر
SupportsFanControl()بحيث تُرجعtrueلإبلاغ SignalRGB بأن هذا الجهاز يحتوي على مراوح قابلة للتحكم. - اكتشف المراوح المتصلة (عبر أوامر خاصة بالجهاز أو من خلال استطلاع قيم RPM).
- استدعِ
device.createFanControl()لكل مروحة مكتشفة داخلInitialize(). - في كل إطار داخل
Render(): اقرأ قيمة RPM الحالية من الجهاز وأبلغ عنها باستخدامdevice.setRPM()، ثم اقرأ السرعة المطلوبة منdevice.getFanLevel()وطبّقها على الجهاز.
تحقق دائمًا من device.fanControlDisabled() قبل استدعاء أي من دوال مستوى المروحة. فقد يكون التحكم في المراوح غير متاح لأن المستخدم لا يملك SignalRGB Pro، أو لأن المستخدم قد عطّله يدويًا.
تصدير الإضافة
Section titled “تصدير الإضافة”SupportsFanControl()
Section titled “SupportsFanControl()”تُصدَّر من الإضافة للإعلان عن أن هذا الجهاز يدعم التحكم في المراوح. يستدعيها SignalRGB أثناء التهيئة ليقرر ما إذا كان سيعرض واجهة التبريد للجهاز.
export function SupportsFanControl() { return true; }إذا كان هذا التصدير غير موجود أو أرجع false، فستظل واجهة برمجة التحكم في المراوح متاحة، لكن واجهة التبريد لن تظهر للجهاز.
طرق وحدة التحكم في المروحة
Section titled “طرق وحدة التحكم في المروحة”device.fanControlDisabled()
Section titled “device.fanControlDisabled()”تُرجع true إذا كان التحكم في المراوح غير متاح حاليًا — إما لأن المستخدم لا يملك SignalRGB Pro، أو لأنه عطّل نظام التبريد يدويًا.
تحقق دائمًا من هذا قبل استدعاء device.getFanLevel() أو device.getNormalizedFanLevel().
| القيمة المُرجعة | النوع | الوصف |
|---|---|---|
| Disabled | boolean | true إذا كانت واجهة برمجة التبريد غير متاحة |
if (device.fanControlDisabled()) { return;}device.createFanControl(fanId)
Section titled “device.createFanControl(fanId)”تُنشئ وحدة تحكم في مروحة بالمعرّف المُعطى. استدعِها داخل Initialize() لكل مروحة يتيحها الجهاز. إذا كانت هناك وحدة تحكم بالمعرّف نفسه موجودة بالفعل، فسيتم تجاهل الاستدعاء.
| المعامل | النوع | الوصف | مثال |
|---|---|---|---|
| FanId | string | معرّف فريد لوحدة التحكم في المروحة هذه | "Fan1" |
device.createFanControl("Fan1");device.createFanControl("Fan2");device.removeFanControl(fanId)
Section titled “device.removeFanControl(fanId)”تزيل وحدة التحكم في المروحة ذات المعرّف المُعطى. استخدمها إذا لم تعد المروحة مكتشفة أو انقطع اتصال الجهاز.
| المعامل | النوع | الوصف | مثال |
|---|---|---|---|
| FanId | string | معرّف وحدة التحكم في المروحة المراد إزالتها | "Fan1" |
device.getFanLevel(fanId)
Section titled “device.getFanLevel(fanId)”تُرجع سرعة المروحة المطلوبة لوحدة التحكم المُعطاة كنسبة مئوية (0–100)، مشتقة من إعدادات منحنى المروحة الحالية للمستخدم.
| المعامل | النوع | الوصف | مثال |
|---|---|---|---|
| FanId | string | معرّف وحدة التحكم في المروحة | "Fan1" |
| القيمة المُرجعة | النوع | الوصف | مثال |
|---|---|---|---|
| FanSpeed | int | السرعة المطلوبة، 0–100 | 42 |
let speed = device.getFanLevel("Fan1"); // e.g. 42 (meaning 42%)device.getNormalizedFanLevel(fanId)
Section titled “device.getNormalizedFanLevel(fanId)”تُرجع سرعة المروحة المطلوبة كعدد عشري مُطبَّع (0.0–1.0). مفيدة عندما يتوقع الجهاز دورة تشغيل كسرية بدلًا من نسبة مئوية.
| المعامل | النوع | الوصف | مثال |
|---|---|---|---|
| FanId | string | معرّف وحدة التحكم في المروحة | "Fan1" |
| القيمة المُرجعة | النوع | الوصف | مثال |
|---|---|---|---|
| FanSpeed | float | السرعة المطلوبة، 0.0–1.0 | 0.42 |
let speed = device.getNormalizedFanLevel("Fan1"); // e.g. 0.42device.setRPM(fanId, rpm)
Section titled “device.setRPM(fanId, rpm)”تُبلغ عن قيمة RPM المقاسة حاليًا لوحدة التحكم في المروحة. تُعرض هذه القيمة في واجهة التبريد ورسوم مراقبة النظام البيانية.
| المعامل | النوع | الوصف | مثال |
|---|---|---|---|
| FanId | string | معرّف وحدة التحكم في المروحة | "Fan1" |
| RPM | int | سرعة المروحة الحالية بوحدة RPM | 1337 |
let rpm = ReadRPMFromDevice("Fan1");device.setRPM("Fan1", rpm);طرق مستشعر درجة الحرارة
Section titled “طرق مستشعر درجة الحرارة”يمكن للإضافات أيضًا إتاحة قراءات درجات الحرارة لنظام التبريد في SignalRGB. تظهر هذه القيم في مراقبة النظام ويمكن استخدامها كمصدر إدخال لمنحنيات المراوح.
device.createTemperatureSensor(sensorId)
Section titled “device.createTemperatureSensor(sensorId)”تُنشئ مستشعر درجة حرارة بالمعرّف المُعطى. استدعِها داخل Initialize() لكل مصدر لدرجة الحرارة يتيحه الجهاز.
| المعامل | النوع | الوصف | مثال |
|---|---|---|---|
| SensorId | string | معرّف فريد لهذا المستشعر | "Coolant Temp" |
device.createTemperatureSensor("Coolant Temp");device.removeTemperatureSensor(sensorId)
Section titled “device.removeTemperatureSensor(sensorId)”تزيل مستشعر درجة الحرارة ذا المعرّف المُعطى.
| المعامل | النوع | الوصف | مثال |
|---|---|---|---|
| SensorId | string | معرّف المستشعر المراد إزالته | "Coolant Temp" |
device.SetTemperature(sensorId, temperature)
Section titled “device.SetTemperature(sensorId, temperature)”تُبلغ عن درجة الحرارة الحالية للمستشعر المُعطى. استدعِها في كل إطار بعد قراءة القيمة من الجهاز.
| المعامل | النوع | الوصف | مثال |
|---|---|---|---|
| SensorId | string | معرّف المستشعر | "Coolant Temp" |
| Temperature | float | درجة الحرارة الحالية بالدرجات المئوية | 34.5 |
let temp = ReadTemperatureFromDevice();device.SetTemperature("Coolant Temp", temp);مثال كامل
Section titled “مثال كامل”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");}