Lua: Как присвоить возвращаемое значение из функции локальному значению другой функции в lua - PullRequest
0 голосов
/ 18 января 2019

Я пишу очень простой скрипт lua о подсчете, сколько раз светодиодная вспышка

Однако, это продолжает давать мне ошибку, когда я пытаюсь присвоить возвращаемое значение из предыдущей функции локальной переменной в другой функции.

function ReadADC1()
    local adc_voltage_value = 0
    adc_voltage_value = tonumber(adc.readadc()) * 2 -- 0.10 --get dec number out of this -- need to know where package adc come from
    --convert to voltage
    adc_voltage_value = adc_voltage_value *0.000537109375 --get V
    adc_voltage_value = math.floor(adc_voltage_value *1000 +0.5) --since number is base off resolution

    --print (adc_voltage_value)
    return adc_voltage_value

end
-- end of readADC1() TESTED

function counter()

    local ledValue = readADC1()
    --local interval -- interval between led on and off. If interval larger than 1 second, reset counter 

    --TODO add interval definition

    local interval = os.clock()
    while (true) do
        if ((ledValue >= OnThreshHold) and (interval < 1000)) then -- if value exceed threshhold, mean it on 
                ledCounter = ledCounter + 1
        elseif ((ledValue < OnThreshHold) and (os.clock() - interval > 1000)) then -- if led off for longer than 1 second
                ledCounter = 0  -- reset counter to one and prepare for next flashing
        else
            ledCounter = ledCounter -- not sure if we need this. Doing this might cause bug later on
        end
    end
    --return ledCounter
    print (ledCounter,"\r\n")
    end
-- end of counter()

Как видите, я пытаюсь назначить ledValue с помощью adc_voltage_value из функции ReadADC1. Я думал, что это должно работать, но оказалось, что это не так. Это дает мне эту ошибку:

> +LUA ERROR: LEDcounter.lua:29: attempt to call global 'readADC1' (a nil value)
> 
> stack traceback:
> 
>     LEDcounter.lua:29: in main chunk
> 
>     [C]: ?

Я использую отладку черного ящика и тестирую каждую функцию независимо, а ReadADC1 дает мне хорошее числовое значение. но когда я тестировал функцию counter (), она выдала мне эту ошибку

Любые предложения или исправления приветствуются. Я пытаюсь выучить

1 Ответ

0 голосов
/ 18 января 2019

Если внимательно присмотреться к вашей ошибке, ясно, что Lua не может найти функцию (или любую другую переменную) с этим именем. Если вы присмотритесь немного, вы увидите, что вызов readADC1 недопустим, потому что такой функции нет. Это связано с тем, что определенная вами функция называется ReadADC1. Обратите внимание на заглавную букву и помните, что переменные чувствительны к регистру в Lua.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...