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”
Abschnitt betitelt „”Initialize”“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();}Render-Schleife
Abschnitt betitelt „Render-Schleife“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:
- Benutzereinstellungen werden für den Frame aktualisiert
- Farben werden für das Gerät und die Pixel-Buffer der Sub-Devices abgerufen
- on*Change-Callbacks werden der Reihe nach aufgerufen
- Render wird aufgerufen
- Hinweis: Die Standardzeit zwischen Frames beträgt 30 ms
export function Render(){ // Do Stuff ... SendColors()}”Shutdown”
Abschnitt betitelt „”Shutdown”“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();
}on*Changed-Callbacks
Abschnitt betitelt „on*Changed-Callbacks“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 Functionsexport 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:
| Funktionsname | Beschreibung |
|---|---|
| onBrightnessChanged() | Wird ausgelöst, wenn der Haupthelligkeit-Regler des Geräts bewegt wird. |