在Lua中创建循环计时器功能

时间:2013-06-02 11:44:18

标签: loops timer lua

我正在尝试创建一个循环计时器功能,该功能将在x秒内每隔y发送一次信号,然后关闭z秒,然后重复循环,我对编程很陌生,所以我不确定要做什么,我已经阅读了几个教程,但我无法理解如何编程,我能找到的壁橱是

require 'socket' -- for having a sleep function ( could also use os.execute(sleep 10))

timer = function (time)
    local init = os.time()
    local diff=os.difftime(os.time(),init)
    while diff<time do
        coroutine.yield(diff)
        diff=os.difftime(os.time(),init)
    end
    print( 'Timer timed out at '..time..' seconds!')
end

co=coroutine.create(timer)
coroutine.resume(co,30) -- timer starts here!

while coroutine.status(co)~="dead" do
    print("time passed",select(2,coroutine.resume(co)))
    print('',coroutine.status(co))
    socket.sleep(5)
end

但是我相信这是一个回叫功能,你能帮忙,如果可能的话解释程序的编写方式,很抱歉这么多,

1 个答案:

答案 0 :(得分:1)

Lua并不打算做时间(事实上,除了PLC特定语言之外,我所知道的编程语言并不存在)。提供计时器和事件是嵌入式应用程序的工作。

所以你要么必须提供你自己的计时API,我认为这是没有选择的,因为你是“全新的编程”,或者用模块来应对。

有两个Lua模块可以帮助你:

我没有使用其中任何一个,但是流明看起来更加活跃和精致。此外,由于它是纯Lua并且不需要任何其他模块,因此应该更容易为初学者设置。实际上,第一个例子应该为您提供足够的线索来设置您想要做的事情。

无论如何,您可能希望先寻找其他项目来学习编程,最好是那些不涉及计时的项目。