2

我正在尝试创建一个循环计时器功能,该功能将每秒钟发送一个信号一段时间,然后关闭几x秒钟并重复循环,我对编程完全陌生,所以我不确定该怎么做,我已经阅读几个教程,但我不明白如何编程,我能找到的壁橱是yz

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

但我相信那是一个回调函数,你能帮忙吗,如果可能的话,解释一下程序是如何编写的,抱歉问了这么多,

4

1 回答 1

1

Lua 并不是用来计时的(事实上,除了PLC特定的语言之外,我所知道的没有一种编程语言)。提供计时器和事件是嵌入应用程序的工作。

因此,您要么必须提供自己的计时 API,我认为这是没有选择的,因为您“对编程完全陌生”,或者使用模块。

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

我没有使用其中任何一个,但Lumen似乎更活跃和精致。此外,由于它是纯 Lua 并且不需要任何额外的模块,因此对于初学者来说应该更容易设置。实际上,第一个示例应该为您提供足够的线索来设置您想要做什么。

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

于 2013-06-02T14:31:53.990 回答