Geräte mit Farbdisplays bieten die folgenden Möglichkeiten zum Einsatz von Farbe
Welche Terminals mit Farbdisplays erhältlich sind, und welche Farbmodelle von welchem Gerät unterstützt werden, finden Sie in der 'Feature Matrix'.
Dieses Dokument beschreibt einige (aber bei weitem nicht alle)
Möglichkeiten zur Verwendung von Farben in den anwenderprogrammierbaren
Terminals.
Siehe auch:
Bei Geräten mit Farbdisplay können bei bestimmten Anzeigekommandos Farbwerte in der Parameterliste übergeben werden. Nach Möglichkeit sollten dazu nur die folgenden 16 "Standard-Farben" verwendet werden, da diese unabhängig vom unterstützten Farbmodell funktionieren :
Alter Farbwert (4 Bit) | Token für Display-Interpreter | Script-Sprache | Colour |
0 | black | clBlack | Schwarz |
1 | blue | clBlue | Blau |
2 | green | clGreen | Grün |
3 | cyan | clCyan | Blaugrün |
4 | red | clRed | Rot |
5 | magenta | clMagenta | Violett |
6 | yellow | clYellow | Gelb |
7 | white | clWhite | Weiss |
8 | RGB(64,64,64) | Dunkelgrau | |
9 | RGB(127,127,255) | Hellblau | |
10 | RGB(127,255,127) | Hellgrün | |
11 | RGB(192,192,255) | helles Cyan | |
12 | ? | ||
13 | ? | ||
14 | ? | ||
15 | RGB(192,192,192) | Hellgrau | |
Zusätzlich besteht im Programmiertool noch die Möglichkeit, Farbwerte als RGB-Mischung zu definieren - siehe nächstes Kapitel. Beachten Sie, dass dies nach dem Herunterladen des Anzeigeprogramms in das Terminal nur funktioniert, wenn das Terminal mindestens 256 Farben (d.h. 8 Bit pro Pixel) verwendet. Bei älteren Farbdisplays (wie z.B. UPT-167 "Color" mit Passiv-STN und 4 Bit/Pixel) funtioniert die Farbmischung nicht, sondern nur die oben beschriebenen 16 Standard-Farben.
Negative Farbwerte haben bei der Eingabe im Programmiertool eine spezielle Bedeutung:
Farbwert im Editierfeld |
Bedeutung |
-1 | verwende die für die aktuelle Seite definierte, Tag/Nacht-abhängige Default-Farbe |
-2 | Transparenz (z.B. "Hintergrund nicht füllen" bzw. "durchscheinender Text") |
Per Doppelklick in das entsprechende Eingabefeld im Programmiertool (z.B. Eingabefeld für Vorder- oder Hintergrundfarbe) wird der folgende Farbauswahl-Dialog geöffnet:
Die mit diesem Dialog ausgewählte Farbmischung wird bei der übernahme in das UPT-Programmiertool folgendermaßen als Text im Editierfeld dargestellt:
#<Rot-Anteil><Grün-Anteil><Blau-Anteil>
Jeder Farbanteil wird durch eine einzelne Ziffer zwischen 0 und 7 dargestellt. Beispiele:
#000 = Schwarz
#777 = Weiß
#700 = Rot (maximale Sättigung)
#070 = Grün (maximale Sättigung)
#007 = Blau (maximale Sättigung)
Um beispielsweise die Vorder- oder Hintergrundfarbe eines Anzeigelements während der Laufzeit zu ändern (z.B. beim MKT-View II mit TFT-Farbdisplay), kann die folgende Interpreterfunktion zum "Mischen" einer beliebigen Farbe verwendet werden:
Unabhängig vom verwendeten LCD-Controller (der i.A. weit weniger als 24 Bit Farbtiefe zulässt) werden alle drei Farbkomponenten als Wert zwischen 0 (Minimum) und 255 (Maximum) definiert. Nebenher bemerkt, ähnliches gilt auch für die Ansteuerung der optionalen RGB-LEDs in bestimmten Geräten.
Zum ändern der Vorder- oder Hintergrundfarbe zur Laufzeit (nicht zur Design-Zeit) dient das Interpreterkommando "disp", mit dem Elemente auf der aktuellen Bildschirmseite (display page) adressiert werden können.
disp.Title.bc=rgb(127,255,255)
: REM Setze Hintergrundfarbe
des Elements "Title" auf helles Türkis
Hinweis: Da diese Funktion nicht bei allen Geräten verfügbar ist (speziell nicht bei älteren Geräten ohne TFT), verwenden Sie wenn möglich die weiter oben definierten Standard-Farben .
Siehe auch:
Mit Hilfe der für eine Anzeigeseite definierten Default-Farben lässt sich relativ einfach eine Tag-/Nacht-Umschaltung realisieren.
Definieren Sie dazu in der Seitendefinition (Kopf) geeignete Vorder- und Hintergrundfarben, z.B.:
Eine Anzeigeseite mit diesem Farbschema würde bei Tag folgendermaßen aussehen...
... und so bei Nacht:
Um zwischen Tag- und Nachtmodus umzuschalten, wird das Tag-Nacht-Flag
("night
") zur Laufzeit per Interpreterkommando oder Script gesetzt
- Details dazu weiter unten. Um beim Erstellen
einer Anzeigeseite im Programmiertool schnell zwischen Tag- und
Nachtmodus umzuschalten, klicken Sie im Hauptmenü auf
Optionen ... Umschaltung Tag->Nacht bzw. Umschaltung Nacht->Tag,
oder (alternativ) in der oben abgebildeten Registerkarte Page
Properties (Definitions-Kopf der aktuellen Anzeigeseite)
auf die Tabellenüberschrift "Tag" oder "Nacht". Intern wird dadurch
das night
-Flag auf 1 (TRUE) oder 0 (FALSE) gesetzt, was
Sie auch im Watch-Fenster kontrollieren
können.
Beim Erstellen von Anzeigeseiten mit umschaltbaren Tag / Nacht-Design sollten die die Vorder- und Hintergrundfarben in den einzelnen Anzeigezeilen auf -1 gesetzt werden. In den oben abgebildeten Screenshots erscheint der Text "MKT-View II" unabhängig von der Tag/Nacht-Umschaltung immer grün, weil in der entsprechenden Anzeigezeilen-Definition die Textfarbe 'fest' (d.h. nicht als "-1") definiert wurde:
Bei allen anderen Anzeigeelementen werden "Default"-Vordergrund- und Hintergrundfarben (codiert als "-1"), bzw transparenter Hintergrund (codiert als "-2") verwendet:
Um (im "echten" Terminal) automatisch zwischen Tag- und Nachtbetrieb
umzuschalten, bieten sich dank des Interpreters (bzw der programmierbaren
Events) viele Möglichkeiten. Der Zugriff auf das Tag/Nacht-Flag ist auch
per Script ( display.night ) möglich.
Alle bewirken letztendlich dass das "night"-Flag auf 1 (night=1, d.h. "Nacht")
oder 0 (night=0, d.h. "Tag") gesetzt wird.
Beispiele:
Event | Reaction |
always | night=ExternalDayNightFlag : REM day/night signal received from CAN |
Das Signal "ExternalDayNightFlag" wurde vorher aus einer CANdb-Datei importiert, und mit einer Terminal-Variablen verknüpft. Falls nötig, kann das externe Signal vor der Zuweisung an das interne "night"-Flag noch invertiert werden (wenn das CAN-Bus-Signal bei Tag gesetzt, und bei Nacht gelöscht ist).
Event | Reaction |
always | night = (sys.alight-6*night)<50 : REM day/night with hysteresis |
Event | Reaction |
kb0 | night = ! night : REM toggle day/night on function key |
Methode B: Per F1 auf Nachtbetrieb, und per F2 auf Tagbetrieb umschalten.
Event | Reaction |
kb0 | night = 1 : REM select NIGHT-design |
kb1 | night = 0 : REM select DAY-design |
Methode C (bei Geräten mit Touchscreen) : Programmieren Sie eine graphische Schaltfläche, die beim Antippen das "night"-Flag wie in der Reaktion von Methode A invertiert.
Bei manchen Elementen, wie z.B. Buttons, können zwei verschiedene Hintergrundfarben definiert werden. Der Hintergrund des Buttons erhält dann einen Farbverlauf von der ersten Farbe zur zweiten Farbe.
Um an beliebigen anderen Stellen (ohne Button) Flächen mit Farbverläufen zu erzeugen, kann das Grafikkommando "gf" (gradient fill) verwendet werden.
Anwender von Farb-Displays stehen manchmal vor dem Problem, daß die bei der Erstellung der Anzeigeseiten verwendeten Farben nicht mehr "gefallen", oder dass die verwendeten Farben nicht einheitlich sind (z.B. weil die Seiten aus verschiedenen Applikation zusammengestellt wurden). Dies passiert besonders dann, wenn die alten (und nicht mehr favorisierten) "Gallerie-Seiten" für die Erstellung eines Anzeigeprogramms verwendet wurden.
Um die auf bestimmten (oder auf allen) Seiten verwendeten Farben zu ersetzen, bietet sich folgendes Vorgehen an:
Letzte Änderung: 2016-10-14, W.B.