Zum Inhalt springen

Laufzeit

Die Laufzeit eines Plugins besteht aus drei Teilen. Initialize -> Render-Schleife -> Shutdown

Die einzige Ausnahme von diesem Muster ist die Verwendung von on*Change-Callbacks, die am Anfang eines Frames vor dem Aufruf der Render-Funktion verarbeitet werden.

Initialize wird einmal ausgeführt, wenn eine Verbindung zu einem Gerät hergestellt wird (oder wiederhergestellt wird), sowie jedes Mal, wenn der Streaming-Schalter auf der Gerätekonfigurationsseite aktiviert wird. Hier sollten alle anfänglichen Startaufgaben behandelt werden.

  • Hinweis: Wenn für das Gerät konflikthafte Prozesse laufen, wartet die Initialisierung, bis diese geschlossen werden oder der Benutzer die Prüfung umgeht.
export function Initialize()
{
// Do Stuff ...
SendInitPacket1();
SendInitPacket2();
SetSoftwareControl();
}

Die Render-Schleife ist der Kern des Plugins und der Ort, an dem Farbänderungen und andere Laufzeitfunktionen verarbeitet werden.

Der Ablauf jedes Frames ist wie folgt:

  1. Benutzereinstellungen werden für den Frame aktualisiert
  2. Farben werden für das Gerät und die Pixel-Buffer der Sub-Devices abgerufen
  3. on*Change-Callbacks werden der Reihe nach aufgerufen
  4. Render wird aufgerufen
  • Hinweis: Die Standardzeit zwischen Frames beträgt 30 ms
export function Render()
{
// Do Stuff ...
SendColors()
}

Shutdown wird aufgerufen, wenn SignalRGB ordnungsgemäß beendet wird, sowie jedes Mal, wenn der Streaming-Schalter auf der Gerätekonfigurationsseite deaktiviert wird. Hier sollte das Gerät bei Bedarf in den Hardware-Modus zurückversetzt werden.

export function Shutdown()
{
// Do Stuff ...
SetHardwareControl();
}

Diese Funktionen werden aufgerufen, wenn eine Benutzersteuerung geändert wird. Sie werden direkt vor dem Aufruf der Render()-Funktion in der Reihenfolge ihres Auftretens ausgelöst.

  • Hinweis: Ihre Benennung muss wie folgt lauten: “on[Name der Benutzersteuerungs-Eigenschaft]Changed()”. Groß-/Kleinschreibung wird beachtet.
// User Control from ControllableParameters()
{"property":"dpi1", "label":"DPI","step":"50", "type":"number","min":"200", "max":"18000","default":"800"},
// DPI Functions
export function ondpi1Changed(){
setDpi(dpi1)
}
function setDpi(dpi){
// Guard clause to prevent changing dpi if the user doesn't have this boolean toggled on
if(!SettingControl){
return;
}
device.log(`Setting Dpi to ${dpi}`)
Corsair_Set(CORSAIR_DPI_X,dpi)
Corsair_Set(CORSAIR_DPI_Y,dpi)
device.log(`DPI x is now ${Corsair_Get(CORSAIR_DPI_X)}`)
device.log(`DPI y is now ${Corsair_Get(CORSAIR_DPI_Y)}`)
}

Integrierte Callbacks sind wie folgt:

FunktionsnameBeschreibung
onBrightnessChanged()Wird ausgelöst, wenn der Haupthelligkeit-Regler des Geräts bewegt wird.