# String latch
Przechwytuje wartość tekstową na impuls i przechowuje ją wewnętrznie.
String latch
V
C
T
R
V
# Wejścia
| ID | Skrót | Nazwa | Typ | Domyślnie | Opis |
|---|---|---|---|---|---|
value | V | Wartość | STRING | | Wartość tekstowa dostępna do przechwycenia. |
capture | C | Przechwyć | BOOLEAN | false | Wejście impulsowe. Zbocze narastające zatrzaskuje bieżącą wartość. |
trigger | T | Wyzwól | BOOLEAN | false | Wejście impulsowe. Zbocze narastające wysyła przechwyconą wartość na wyjście. |
reset | R | Resetuj | BOOLEAN | false | Wejście impulsowe. Zbocze narastające resetuje wyjście do wartości domyślnej. |
# Wyjścia
| ID | Skrót | Nazwa | Typ | Domyślnie | Opis |
|---|---|---|---|---|---|
value | V | Wartość | STRING | | Zatrzaśnięta wartość tekstowa. |
# Konfiguracja
| ID | Nazwa | Typ | Domyślnie | Jednostka | Opis |
|---|---|---|---|---|---|
default_value | Wartość domyślna | STRING | | Wartość przywracana przy resecie. Szczegóły: Wymagane | |
trigger_on_capture | Wyzwól przy przechwyceniu | BOOLEAN | true | Gdy włączone, przechwycenie wartości natychmiast wysyła ją na wyjście. |
# Stan
| ID | Nazwa | Typ | Domyślnie | Jednostka | Opis |
|---|---|---|---|---|---|
captured_value | Przechwycona wartość | STRING | | Przechowuje wewnętrznie przechwyconą wartość. | |
prev_capture | Poprzedni stan przechwycenia | BOOLEAN | false | Przechowuje poprzedni stan wejścia przechwycenia. | |
prev_trigger | Poprzedni stan wyzwolenia | BOOLEAN | false | Przechowuje poprzedni stan wejścia wyzwolenia. | |
prev_reset | Poprzedni stan resetu | BOOLEAN | false | Przechowuje poprzedni stan wejścia resetu. |
# Kod źródłowy
Pokaż kod Volang
channel = input::channel()
value = input::value()
// Handle "reset" input first (dominant input)
if (channel == "reset") {
prev_reset = state::get("prev_reset")
if (value and !prev_reset) {
// Rising edge on reset - restore default value
default_value = config::get("default_value")
state::set("captured_value", default_value)
output::set("value", default_value)
}
state::set("prev_reset", value)
return
}
// Handle "trigger" input
if (channel == "trigger") {
prev_trigger = state::get("prev_trigger")
if (value and !prev_trigger) {
// Rising edge on trigger - send captured value to output
output::set("value", state::get("captured_value"))
}
state::set("prev_trigger", value)
return
}
// Handle "capture" input
if (channel == "capture") {
prev_capture = state::get("prev_capture")
if (value and !prev_capture) {
// Rising edge on capture - latch current input value internally
captured = input::get("value")
state::set("captured_value", captured)
// Optionally send to output immediately
if (config::get("trigger_on_capture")) {
output::set("value", captured)
}
}
state::set("prev_capture", value)
return
}
// "value" input changes are ignored - output holds until next capture, trigger, or reset
