# String latch

Przetwarzanie

Przechwytuje wartość tekstową na impuls i przechowuje ją wewnętrznie.

String latch
V
C
T
R
V

# Wejścia

IDSkrótNazwaTypDomyślnieOpis
valueVWartośćSTRINGWartość tekstowa dostępna do przechwycenia.
captureCPrzechwyćBOOLEANfalseWejście impulsowe. Zbocze narastające zatrzaskuje bieżącą wartość.
triggerTWyzwólBOOLEANfalseWejście impulsowe. Zbocze narastające wysyła przechwyconą wartość na wyjście.
resetRResetujBOOLEANfalseWejście impulsowe. Zbocze narastające resetuje wyjście do wartości domyślnej.

# Wyjścia

IDSkrótNazwaTypDomyślnieOpis
valueVWartośćSTRINGZatrzaśnięta wartość tekstowa.

# Konfiguracja

IDNazwaTypDomyślnieJednostkaOpis
default_valueWartość domyślnaSTRINGWartość przywracana przy resecie.

Szczegóły:

Wymagane
trigger_on_captureWyzwól przy przechwyceniuBOOLEANtrueGdy włączone, przechwycenie wartości natychmiast wysyła ją na wyjście.

# Stan

IDNazwaTypDomyślnieJednostkaOpis
captured_valuePrzechwycona wartośćSTRINGPrzechowuje wewnętrznie przechwyconą wartość.
prev_capturePoprzedni stan przechwyceniaBOOLEANfalsePrzechowuje poprzedni stan wejścia przechwycenia.
prev_triggerPoprzedni stan wyzwoleniaBOOLEANfalsePrzechowuje poprzedni stan wejścia wyzwolenia.
prev_resetPoprzedni stan resetuBOOLEANfalsePrzechowuje 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
Przechwytuje wartość tekstową na impuls i przechowuje ją wewnętrznie.