Culori
Funcțiile de culoare din scripturile TapHome — HSVTORGB și RGBTOHSV — și tipurile de valori rgbcolor și hsvcolor folosite pentru comanda luminilor RGB din scripturile Packet parser și Modbus.
Funcțiile de culoare convertesc între modelul HSV — nuanță, saturație și valoare (luminozitate) — și modelul RGB cu canalele roșu, verde și albastru. O lumină color TapHome lucrează cu nuanță și saturație; multe dispozitive comandate din scripturile Packet parser sau Modbus așteaptă în schimb roșu, verde și albastru. Ambele funcții funcționează în orice script și necesită Core 2023.1 sau mai nou (pe canalul Next Core 2022.3, build 27019).
HSVTORGB
HSVTORGB convertește o culoare dată prin nuanță, saturație și valoare într-o valoare rgbcolor cu canalele roșu, verde și albastru de la 0 la 255.
| |
| Nume | Tip | Descriere |
|---|---|---|
hue | număr | Unghiul culorii în grade, 0 – 360 (0 roșu, 120 verde, 240 albastru). |
saturation | număr | 0 – 1. 0 este alb sau gri, 1 culoarea plină. |
value | număr | Luminozitate, 0 – 1. |
Returnează — rgbcolor cu proprietățile RED, GREEN și BLUE, fiecare rotunjită la un număr întreg 0 – 255.
Observații — Intrările nu sunt limitate la intervalul lor. Păstrați saturation și value între 0 și 1, altfel canalele depășesc intervalul 0 – 255.
Exemplu
VAR green := HSVTORGB(120, 1, 1);
green.GREEN;
# Result: 255Exemplu — scriptul de scriere al unei lumini RGB prin HTTP
În scriptul de scriere al unei lumini color transmiteți valorile nuanței (Hd) și saturației (Sa) luminii, iar luminozitatea păstrați-o separat. Aici sunt variabile locale, ca exemplul să ruleze de sine stătător:
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"Consultați și — RGBTOHSV, SENDHTTPREQUEST.
RGBTOHSV
RGBTOHSV convertește canalele roșu, verde și albastru (0 – 255) într-o valoare hsvcolor cu nuanța în grade și saturația și valoarea de la 0 la 1.
| |
| Nume | Tip | Descriere |
|---|---|---|
red, green, blue | număr | 0 – 255. Fiecare se convertește într-un număr întreg din acest interval. |
Returnează — hsvcolor cu HUE (0 – 360, cu parte zecimală), SATURATION (0 – 1) și VALUE (0 – 1). Pentru culorile gri, la care toate canalele sunt egale, HUE și SATURATION sunt 0.
Exemplu — citirea nuanței unei lumini care raportează roșu, verde și albastru
VAR hsv := RGBTOHSV(255, 128, 0);
ROUND(hsv.HUE);
# Result: 30VAR hsv := RGBTOHSV(255, 128, 0);
ROUND(hsv.SATURATION * 100) / 100;
# Result: 1Valorile rgbcolor și hsvcolor
rgbcolor și hsvcolor sunt tipurile de valori returnate de funcțiile de culoare; proprietățile lor se pot citi și scrie.
| Tip | Proprietate | Interval | Notă |
|---|---|---|---|
rgbcolor | RED, GREEN, BLUE | 0 – 255 | Scrierea stochează un octet: valorile peste 255 o iau de la capăt. |
hsvcolor | HUE | 0 – 360 | Scrierea stochează un octet, așa că o nuanță peste 255 o ia de la capăt — hsv.HUE := 300 dă 44. Transmiteți în schimb nuanța funcției HSVTORGB. |
hsvcolor | SATURATION, VALUE | 0 – 1 | Numere zecimale. |
Ambele nume de tip pot declara o variabilă:
rgbcolor colour := HSVTORGB(240, 1, 0.5);
colour.BLUE;
# Result: 128Consultați și — Tipuri de date, Variabile și constante.