CCCPaste

fa22beb824414

-- ender_master.lua (Gecorrigeerd: 'goto' en 'local' scope)

-- ... (Configuratie, Hulpfuncties, en Initialisatie blijven hetzelfde) ...

local function main()
    local ender_modem = initialize()
    
    -- NIEUW: DECLAREER ALLE LOKALE VARIABELEN HIER
    local input = nil
    local signal_number = nil
    local timer_duration = nil -- Deze variabele veroorzaakte de fout

    -- Start van de while lus
    while true do
        display_color_map()
        
        write("Voer signaalnummer in (1 t/m 16, 99, 100) of 'quit': ")
        input = read()
        
        if input and string.lower(input) == "quit" then
            break
        end
        
        -- Gebruik de bestaande lokale variabele, zonder 'local' ervoor.
        signal_number = tonumber(input)
        
        if not signal_number or signal_number < 1 or signal_number > 100 or (signal_number > 16 and signal_number < 99) then
            print("[FOUT] Ongeldig signaalnummer.")
            sleep(1)
            goto continue_loop
        end

        timer_duration = 0 -- Reset naar 0
        
        if signal_number ~= 99 and signal_number ~= 100 then
            write("Voer timer (sec) in (0 voor permanente toggle): ")
            local timer_input = read()
            timer_duration = tonumber(timer_input) or 0
            
            if timer_duration < 0 then timer_duration = 0 end
        end

        local message_table = {
            signal = signal_number,
            timer  = timer_duration
        }

        local success, err = pcall(ender_modem.transmit, ender_modem, CHANNEL, message_table)
        
        if success then
            print(string.format("[VERZONDEN] Signaal: %d | Timer: %d", signal_number, timer_duration))
            if timer_duration > 0 then
                print(string.format("  -> %d seconden timer geactiveerd op Slave PC.", timer_duration))
            end
        else
            print(string.format("[FOUT] Fout bij verzenden: %s", err))
        end
        
        ::continue_loop::
        print("\n----------------------------------\n")
    end
    
    if ender_modem.close then
        ender_modem.close(CHANNEL)
    end
    print("[INFO] Programma beëindigd. Modem gesloten.")
end

main()