Указатель NULL
- это тот, который указывает на никуда. Когда вы разыскиваете указатель p
, вы говорите «дайте мне данные в месте, хранящемся в« p ». Когда p
является нулевым указателем, местоположение, хранящееся в p
, является nowhere
, вы говорите «Дайте мне данные в месте« нигде ». Очевидно, он не может этого сделать, поэтому он выбрасывает NULL pointer exception
.
В общем, это потому, что что-то не было правильно инициализировано.
Вы можете использовать os.clock
, который возвращает время выполнения ваших программ с момента запуска в секундах.
Возвращает приблизительное значение в секундах процессорного времени, используемого программой. Источник
blockquote>Эту функцию можно использовать таким образом.
local t1 = os.clock() -- begin local t2 = os.clock() -- end local dt = t2 - t1 -- calulate delta time -- or looped local t1 = os.clock() -- begin while true do local t2 = os.clock() -- end local dt = t2 - t1 -- calulate delta time t1 = t2 -- reset t1 -- use dt ... end -- or wait for time elapsed -- runs until 1 second passed local t1 = os.clock() while (os.clock() - t1) < 1 do -- do stuff while dt is smaller than 1 -- could even reset timer (t1) to current to -- repeat waiting -- t1 = os.clock() | ... end -- logic for your example function counter() local time = os.clock() local lastLedOn = false local counter = 0 while true do if os.clock() - time > 1.0 then break end if getLedValue() == on then -- replace time = os.clock() if not lastLedOn then lastLedOn = true counter = counter + 1 -- print(counter) | or here if you want to print repeatedly end end end print(counter) end -- was unable to test it