Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Loops 在Lua中创建循环计时器函数_Loops_Timer_Lua - Fatal编程技术网

Loops 在Lua中创建循环计时器函数

Loops 在Lua中创建循环计时器函数,loops,timer,lua,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 d

我正在尝试创建一个循环计时器函数,它将每隔
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
require'socket'——用于具有睡眠功能(也可以使用os.execute(睡眠10))
定时器=功能(时间)
本地初始化=os.time()
本地差异=os.difftime(os.time(),init)

而diffLua并不是用来计时的(事实上,除了特定的语言之外,我所知道的任何编程语言都不是)。提供计时器和事件是嵌入应用程序的工作

因此,您要么必须提供自己的计时API,我认为这是没有选择的,因为您“完全不熟悉编程”,要么使用一个模块

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

  • ()
我没有使用其中任何一个,但流明似乎更活跃和完善。此外,由于它是纯Lua,不需要任何额外的模块,因此应该更容易为初学者设置。事实上,第一个例子应该为你提供足够的线索来确定你想要做什么


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

我认为Lua还没有很好的线程支持。