Konvertierung zu HMI-Farbobjekt

Um eine Farbe in der TwinCAT HMI z. B. als Hintergrund oder für andere Eigenschaften wie Text oder Rahmen nutzen zu können, muss diese in ein Objekt vom Typ TcHmi.Color konvertiert werden. Das folgende Beispiel zeigt, wie eine solche Funktion angelegt wird und welche Schnittstellen diese haben muss.

Konvertierung zu HMI-Farbobjekt 1:

Die allgemeine Verwendung von Funktionen wird in der HMI-Dokumentation erklärt.

Nach dem Erstellen der TypeScript Funktion muss ein Parameter angelegt werden. Dieser bekommt den Farbwert z. B. von der PixelColor-Eigenschaft des ImageControls oder den ColorValue vom Color Control übergeben und muss daher vom Typ Array angelegt werden. Es ist zu beachten, dass sich der übergebene Parameter zum Zeitpunkt der Funktionsausführung aus Timing-Gründen vom Wert der entsprechenden Control-Eigenschaften unterscheiden kann.

Die Funktion muss einen Wert vom Typ Color zurückgeben, der dann für andere Eigenschaften im HMI verwendet werden kann.

Konvertierung zu HMI-Farbobjekt 2:

Folgendes Codebeispiel zeigt die Konvertierung eines RGB-Farbwerts:

module TcHmi {
    export module Functions {
        export module Custom {
            export function StringifyColor(color: number[]): TcHmi.Color {
                if (color.length >= 3) {
                    return { color: `rgb(${color[0]}, ${color[1]}, ${color[2]})` };
                }
                throw new Error("Could not stringify color.");
            }
        }
        registerFunctionEx('StringifyColor', 'TcHmi.Functions.DevHmi', DevHmi.StringifyColor);
    }
}

Um als Farbobjekt akzeptiert zu werden, muss der Rückgabewert den Typ Color haben und wie folgt aufgebaut sein:

{
    color: ‘rgb(<red>, <green>, <blue>)’
}

Eine solche Funktion kann z.B. genutzt werden, indem der Farbwert eines TcHmiVnColor Controls mit der Funktion umgewandelt und dann als Hintergrundfarbe eines anderen UI-Elements festgelegt wird.

Konvertierung zu HMI-Farbobjekt 3: