تخطَّ إلى المحتوى

التحكم في المراوح

يمكن للإضافات إتاحة التحكم في سرعة المراوح والإبلاغ عن درجات الحرارة لنظام التبريد في SignalRGB. عند تفعيل ذلك، يمكن للمستخدمين ضبط منحنيات المراوح ومراقبة عدد الدورات في الدقيقة (RPM) وعرض قراءات درجات الحرارة مباشرة في SignalRGB.

النمط العام للإضافة التي تدعم التحكم في المراوح هو:

  1. صدّر SupportsFanControl() بحيث تُرجع true لإبلاغ SignalRGB بأن هذا الجهاز يحتوي على مراوح قابلة للتحكم.
  2. اكتشف المراوح المتصلة (عبر أوامر خاصة بالجهاز أو من خلال استطلاع قيم RPM).
  3. استدعِ device.createFanControl() لكل مروحة مكتشفة داخل Initialize().
  4. في كل إطار داخل Render(): اقرأ قيمة RPM الحالية من الجهاز وأبلغ عنها باستخدام device.setRPM()، ثم اقرأ السرعة المطلوبة من device.getFanLevel() وطبّقها على الجهاز.

تحقق دائمًا من device.fanControlDisabled() قبل استدعاء أي من دوال مستوى المروحة. فقد يكون التحكم في المراوح غير متاح لأن المستخدم لا يملك SignalRGB Pro، أو لأن المستخدم قد عطّله يدويًا.


تُصدَّر من الإضافة للإعلان عن أن هذا الجهاز يدعم التحكم في المراوح. يستدعيها SignalRGB أثناء التهيئة ليقرر ما إذا كان سيعرض واجهة التبريد للجهاز.

export function SupportsFanControl() { return true; }

إذا كان هذا التصدير غير موجود أو أرجع false، فستظل واجهة برمجة التحكم في المراوح متاحة، لكن واجهة التبريد لن تظهر للجهاز.


طرق وحدة التحكم في المروحة

Section titled “طرق وحدة التحكم في المروحة”

تُرجع true إذا كان التحكم في المراوح غير متاح حاليًا — إما لأن المستخدم لا يملك SignalRGB Pro، أو لأنه عطّل نظام التبريد يدويًا.

تحقق دائمًا من هذا قبل استدعاء device.getFanLevel() أو device.getNormalizedFanLevel().

القيمة المُرجعةالنوعالوصف
Disabledbooleantrue إذا كانت واجهة برمجة التبريد غير متاحة
if (device.fanControlDisabled()) {
return;
}

تُنشئ وحدة تحكم في مروحة بالمعرّف المُعطى. استدعِها داخل Initialize() لكل مروحة يتيحها الجهاز. إذا كانت هناك وحدة تحكم بالمعرّف نفسه موجودة بالفعل، فسيتم تجاهل الاستدعاء.

المعاملالنوعالوصفمثال
FanIdstringمعرّف فريد لوحدة التحكم في المروحة هذه"Fan1"
device.createFanControl("Fan1");
device.createFanControl("Fan2");

تزيل وحدة التحكم في المروحة ذات المعرّف المُعطى. استخدمها إذا لم تعد المروحة مكتشفة أو انقطع اتصال الجهاز.

المعاملالنوعالوصفمثال
FanIdstringمعرّف وحدة التحكم في المروحة المراد إزالتها"Fan1"

تُرجع سرعة المروحة المطلوبة لوحدة التحكم المُعطاة كنسبة مئوية (0–100)، مشتقة من إعدادات منحنى المروحة الحالية للمستخدم.

المعاملالنوعالوصفمثال
FanIdstringمعرّف وحدة التحكم في المروحة"Fan1"
القيمة المُرجعةالنوعالوصفمثال
FanSpeedintالسرعة المطلوبة، 0–10042
let speed = device.getFanLevel("Fan1"); // e.g. 42 (meaning 42%)

تُرجع سرعة المروحة المطلوبة كعدد عشري مُطبَّع (0.0–1.0). مفيدة عندما يتوقع الجهاز دورة تشغيل كسرية بدلًا من نسبة مئوية.

المعاملالنوعالوصفمثال
FanIdstringمعرّف وحدة التحكم في المروحة"Fan1"
القيمة المُرجعةالنوعالوصفمثال
FanSpeedfloatالسرعة المطلوبة، 0.0–1.00.42
let speed = device.getNormalizedFanLevel("Fan1"); // e.g. 0.42

تُبلغ عن قيمة RPM المقاسة حاليًا لوحدة التحكم في المروحة. تُعرض هذه القيمة في واجهة التبريد ورسوم مراقبة النظام البيانية.

المعاملالنوعالوصفمثال
FanIdstringمعرّف وحدة التحكم في المروحة"Fan1"
RPMintسرعة المروحة الحالية بوحدة RPM1337
let rpm = ReadRPMFromDevice("Fan1");
device.setRPM("Fan1", rpm);

طرق مستشعر درجة الحرارة

Section titled “طرق مستشعر درجة الحرارة”

يمكن للإضافات أيضًا إتاحة قراءات درجات الحرارة لنظام التبريد في SignalRGB. تظهر هذه القيم في مراقبة النظام ويمكن استخدامها كمصدر إدخال لمنحنيات المراوح.

تُنشئ مستشعر درجة حرارة بالمعرّف المُعطى. استدعِها داخل Initialize() لكل مصدر لدرجة الحرارة يتيحه الجهاز.

المعاملالنوعالوصفمثال
SensorIdstringمعرّف فريد لهذا المستشعر"Coolant Temp"
device.createTemperatureSensor("Coolant Temp");

تزيل مستشعر درجة الحرارة ذا المعرّف المُعطى.

المعاملالنوعالوصفمثال
SensorIdstringمعرّف المستشعر المراد إزالته"Coolant Temp"

device.SetTemperature(sensorId, temperature)

Section titled “device.SetTemperature(sensorId, temperature)”

تُبلغ عن درجة الحرارة الحالية للمستشعر المُعطى. استدعِها في كل إطار بعد قراءة القيمة من الجهاز.

المعاملالنوعالوصفمثال
SensorIdstringمعرّف المستشعر"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");
}