Kolory
Funkcje kolorów w skryptach TapHome — HSVTORGB i RGBTOHSV — oraz typy wartości rgbcolor i hsvcolor do sterowania światłami RGB ze skryptów Packet parser i Modbus.
Funkcje kolorów przeliczają między modelem HSV — odcień, nasycenie i wartość (jasność) — a modelem RGB z kanałami czerwonym, zielonym i niebieskim. Kolorowe światło TapHome pracuje z odcieniem i nasyceniem; wiele urządzeń sterowanych ze skryptów Packet parser lub Modbus oczekuje natomiast wartości czerwonej, zielonej i niebieskiej. Obie funkcje działają w każdym skrypcie i wymagają Core 2023.1 lub nowszego (w kanale Next Core 2022.3, kompilacja 27019).
HSVTORGB
HSVTORGB konwertuje kolor podany odcieniem, nasyceniem i wartością na wartość rgbcolor z kanałami czerwonym, zielonym i niebieskim od 0 do 255.
| |
| Nazwa | Typ | Opis |
|---|---|---|
hue | liczba | Kąt koloru w stopniach, 0 – 360 (0 czerwony, 120 zielony, 240 niebieski). |
saturation | liczba | 0 – 1. 0 to biel lub szarość, 1 pełny kolor. |
value | liczba | Jasność, 0 – 1. |
Zwraca — rgbcolor z właściwościami RED, GREEN i BLUE, każda zaokrąglona do liczby całkowitej 0 – 255.
Uwagi — Wejścia nie są ograniczone do swojego zakresu. Utrzymuj saturation i value między 0 a 1, w przeciwnym razie kanały wyjdą poza zakres 0 – 255.
Przykład
VAR green := HSVTORGB(120, 1, 1);
green.GREEN;
# Result: 255Przykład — skrypt zapisu światła RGB przez HTTP
W skrypcie zapisu kolorowego światła przekaż wartości odcienia (Hd) i nasycenia (Sa) światła, a jasność trzymaj osobno. Tutaj są to zmienne lokalne, aby przykład działał samodzielnie:
VAR hue := 30;
VAR saturation := 1;
VAR color := HSVTORGB(hue, saturation, 1);
"red=" + color.RED + "&green=" + color.GREEN + "&blue=" + color.BLUE;
# Result: "red=255&green=128&blue=0"Zobacz też — RGBTOHSV, SENDHTTPREQUEST.
RGBTOHSV
RGBTOHSV konwertuje kanały czerwony, zielony i niebieski (0 – 255) na wartość hsvcolor z odcieniem w stopniach oraz nasyceniem i wartością od 0 do 1.
| |
| Nazwa | Typ | Opis |
|---|---|---|
red, green, blue | liczba | 0 – 255. Każda jest konwertowana na liczbę całkowitą w tym zakresie. |
Zwraca — hsvcolor z HUE (0 – 360, z częścią ułamkową), SATURATION (0 – 1) i VALUE (0 – 1). Dla kolorów szarych, w których wszystkie kanały są równe, HUE i SATURATION wynoszą 0.
Przykład — odczyt odcienia światła, które raportuje wartość czerwoną, zieloną i niebieską
VAR hsv := RGBTOHSV(255, 128, 0);
ROUND(hsv.HUE);
# Result: 30VAR hsv := RGBTOHSV(255, 128, 0);
ROUND(hsv.SATURATION * 100) / 100;
# Result: 1Wartości rgbcolor i hsvcolor
rgbcolor i hsvcolor to typy wartości zwracane przez funkcje kolorów; ich właściwości można odczytywać i zapisywać.
| Typ | Właściwość | Zakres | Uwaga |
|---|---|---|---|
rgbcolor | RED, GREEN, BLUE | 0 – 255 | Zapis przechowuje bajt: wartości powyżej 255 przekręcają się od zera. |
hsvcolor | HUE | 0 – 360 | Zapis przechowuje bajt, więc odcień powyżej 255 przekręca się od zera — hsv.HUE := 300 daje 44. Zamiast tego przekaż odcień do HSVTORGB. |
hsvcolor | SATURATION, VALUE | 0 – 1 | Liczby dziesiętne. |
Obiema nazwami typów można zadeklarować zmienną:
rgbcolor colour := HSVTORGB(240, 1, 0.5);
colour.BLUE;
# Result: 128Zobacz też — Typy danych, Zmienne i stałe.