استخدام المكوّنات
يتم تفعيل نظام المكوّنات في إضافتك على مرحلتين.
- تفعيل واجهة المكوّنات
- جلب قيم الألوان من المكوّنات التي حددها المستخدم
إعداد الإضافة
Section titled “إعداد الإضافة”الخطوة الأولى لتفعيل واجهة المكوّنات هي تعريف قنوات الجهاز لـ SignalRGB. سنستخدم Corsair Node Pro كمثال هنا. ابدأ بإنشاء مصفوفة تحدد شكل قنواتنا، ثم سنرسلها إلى الواجهة الخلفية لـ SignalRGB في دالة التهيئة بحيث تُنشأ قبل أن نبدأ في محاولة عرض أي شيء.
const DeviceMaxLedLimit = 204;//Channel Name, Led Limitvar ChannelArray = [ ["Channel 1", 204], ["Channel 2", 204],]
function SetupChannels(){ device.SetLedLimit(DeviceMaxLedLimit); for(let i = 0; i < ChannelArray.length; i++){ device.addChannel(ChannelArray[i][0],ChannelArray[i][1]); }}في الشيفرة أعلاه، سترى أننا ننشئ مصفوفة ثنائية البعد لقنواتنا، حيث يتكون كل إدخال من اسم القناة ثم حد عدد مصابيح LED الخاص بها. وفي SetupChannels() سنضبط الحد الإجمالي لعدد مصابيح LED، ثم نستدعي device.addChannel بشكل تكراري لكل إدخال في المصفوفة.
يمكن أيضًا تنفيذ هذه الحلقة مباشرة دون المصفوفة إذا أردت كتابة القيم بشكل ثابت.
function SetupChannels(){ device.SetLedLimit(204); device.addChannel("Channel 1",204); device.addChannel("Channel 2",204);}استدعِ الدالة SetupChannels داخل Initialize لإنهاء تهيئة الجهاز.
export function Initialize(){ SetupChannels()}احفظ التغييرات على الملف وستظهر قنواتك في صفحة الجهاز. بعد ذلك، سنتعمق في الحصول على قيم الألوان من المكوّنات المحددة.

الحصول على ألوان القناة بالكامل
Section titled “الحصول على ألوان القناة بالكامل”بعد إعداد القنوات، سنحتاج إلى جلب الألوان منها — وهنا يصبح حفظ أسماء القنوات في مصفوفة مفيدًا.
الفكرة العامة هي:
لكل قناة -> لكل مكوّن على القناة -> getColors()
كل هذا مُغلَّف لك في الدالة device.channel().getColors(). يرسل Corsair Node Pro بيانات الألوان الخاصة به قناة تلو الأخرى، لذا سنرغب في إبقاء البيانات ‘منفصلة’ لتسهيل الأمر.
ستلاحظ جزءًا إضافيًا هنا: نتحقق من LedCount() للقناة، وإذا أرجعت 0 فسنجعل القنوات تنبض للمستخدم. وهذا مؤشر جيد ليعرف المستخدم أنه بحاجة إلى إعداد القنوات.
ستجد أدناه أمثلة الشيفرة لحالة استخدام عادية، ولحالة القيم الثابتة، وبدون فحوصات نبض القناة.
function SendChannel(Channel){ let ChannelLedCount = device.channel(ChannelArray[Channel][0]).LedCount(); let ColorData = []
if(device.getLedCount() == 0){ ChannelLedCount = 80; let pulseColor = device.getChannelPulseColor(ChannelArray[Channel][0], ChannelLedCount); ColorData = device.createColorArray(pulseColor, ChannelLedCount, "Seperate"); }else{ ColorData = device.channel(ChannelArray[Channel][0]).getColors("Seperate"); }
let RedChannelData = ColorData[0] let GreenChannelData = ColorData[1] let BlueChannelData = ColorData[2] //...}function SendChannel1(){ let ChannelLedCount = device.channel("Channel 1").LedCount(); let ColorData = []
if(device.getLedCount() == 0){ ChannelLedCount = 80; let pulseColor = device.getChannelPulseColor("Channel 1", ChannelLedCount); ColorData = device.createColorArray(pulseColor, ChannelLedCount, "Seperate"); }else{ ColorData = device.channel("Channel 1").getColors("Seperate"); }
let RedChannelData = ColorData[0] let GreenChannelData = ColorData[1] let BlueChannelData = ColorData[2] //...}SendChannel(Channel){ let ColorData = [] ColorData = device.channel(ChannelArray[Channel][0]).getColors("Seperate");
let RedChannelData = ColorData[0] let GreenChannelData = ColorData[1] let BlueChannelData = ColorData[2] //...}أخيرًا، سنرغب ببساطة في استدعاء هذه الدالة في حلقة العرض. يحتوي الجزء السفلي من الدالة SendChannel على الشيفرة التي تحوّل مصفوفات الألوان إلى حزم وترسلها إلى الجهاز. سيكون ذلك خاصًا بكل جهاز، وعليك أن تكتشفه بنفسك بالهندسة العكسية!
export function Render(){ SendChannel(0); device.pause(1);
SendChannel(1); device.pause(1);
SubmitLightingColors();}التفاعل مع المكوّنات الفردية
Section titled “التفاعل مع المكوّنات الفردية”بعض الأجهزة غريبة وتخرج عن المألوف، أو ربما تحاول فعل شيء جديد في إضافتك وتحتاج إلى التفاعل مع مكوّنات فردية. في هذه الحالات، لا يمكننا استخدام device.channel().getColors()، ونحتاج بدلًا من ذلك إلى المرور على المكوّنات الفردية بأنفسنا.
لهذا الغرض، سنستخدم device.channel().getComponentNames() للحصول على جميع معرّفات المكوّنات، ثم نمرّ عليها باستخدام device.channel().getComponentColors() للحصول على مصفوفات الألوان الفردية.
يدمج المثال أدناه المصفوفات الفردية معًا فقط، لكن يمكنك فعل أي شيء تحتاجه بها في هذه الأثناء.
let components = device.channel("Channel 1").getComponentNames(); for(let i = 0; i < components.length;i++){ let ComponentColors = device.channel("Channel 1").getComponentColors(components[i]); RGBData = RGBData.concat(ComponentColors) }إذا كنت بحاجة إلى التعمق كثيرًا في التفاصيل الدقيقة في إضافتك، فيمكنك استخدام device.channel.getComponent()