Barvy
Barevné funkce skriptu TapHome — HSVTORGB a RGBTOHSV — a hodnotové typy rgbcolor a hsvcolor pro ovládání RGB světel ze skriptů Packet parser a Modbus.
Barevné funkce převádějí mezi modelem HSV — odstín, sytost a hodnota (jas) — a modelem RGB s kanály červené, zelené a modré. Barevné světlo TapHome pracuje s odstínem a sytostí; mnoho zařízení řízených ze skriptů Packet parser nebo Modbus ale očekává červenou, zelenou a modrou. Obě funkce fungují v každém skriptu a vyžadují Core 2023.1 nebo novější (na kanálu Next Core 2022.3, build 27019).
HSVTORGB
HSVTORGB převede barvu zadanou odstínem, sytostí a hodnotou na hodnotu rgbcolor s kanály červené, zelené a modré od 0 do 255.
| |
| Název | Typ | Popis |
|---|---|---|
hue | číslo | Barevný úhel ve stupních, 0 – 360 (0 červená, 120 zelená, 240 modrá). |
saturation | číslo | 0 – 1. 0 je bílá nebo šedá, 1 plná barva. |
value | číslo | Jas, 0 – 1. |
Vrací — rgbcolor s vlastnostmi RED, GREEN a BLUE, každá zaokrouhlená na celé číslo 0 – 255.
Poznámky — Vstupy nejsou omezeny na svůj rozsah. Držte saturation a value mezi 0 a 1, jinak kanály přetečou rozsah 0 – 255.
Příklad
VAR green := HSVTORGB(120, 1, 1);
green.GREEN;
# Result: 255Příklad — skript pro zápis RGB světla přes HTTP
Ve skriptu pro zápis barevného světla předejte hodnoty odstínu (Hd) a sytosti (Sa) světla a jas řešte zvlášť. Tady jsou to lokální proměnné, aby příklad fungoval samostatně:
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"Viz také — RGBTOHSV, SENDHTTPREQUEST.
RGBTOHSV
RGBTOHSV převede kanály červené, zelené a modré (0 – 255) na hodnotu hsvcolor s odstínem ve stupních a sytostí a hodnotou od 0 do 1.
| |
| Název | Typ | Popis |
|---|---|---|
red, green, blue | číslo | 0 – 255. Každý se převede na celé číslo v tomto rozsahu. |
Vrací — hsvcolor s HUE (0 – 360, i s desetinnou částí), SATURATION (0 – 1) a VALUE (0 – 1). U šedých barev, kde jsou všechny kanály stejné, jsou HUE a SATURATION rovny 0.
Příklad — odstín světla, které hlásí červenou, zelenou a modrou
VAR hsv := RGBTOHSV(255, 128, 0);
ROUND(hsv.HUE);
# Result: 30VAR hsv := RGBTOHSV(255, 128, 0);
ROUND(hsv.SATURATION * 100) / 100;
# Result: 1Hodnoty rgbcolor a hsvcolor
rgbcolor a hsvcolor jsou hodnotové typy, které vracejí barevné funkce; jejich vlastnosti lze číst i zapisovat.
| Typ | Vlastnost | Rozsah | Poznámka |
|---|---|---|---|
rgbcolor | RED, GREEN, BLUE | 0 – 255 | Zápis uloží bajt: hodnoty nad 255 přetečou dokola. |
hsvcolor | HUE | 0 – 360 | Zápis uloží bajt, takže odstín nad 255 přeteče dokola — hsv.HUE := 300 dá 44. Odstín raději předejte do HSVTORGB. |
hsvcolor | SATURATION, VALUE | 0 – 1 | Desetinná čísla. |
Oba názvy typů mohou deklarovat proměnnou:
rgbcolor colour := HSVTORGB(240, 1, 0.5);
colour.BLUE;
# Result: 128Viz také — Datové typy, Proměnné a konstanty.