Lua创建一个计时器来每X秒执行一个函数



按照https://nodemcu.readthedocs.io/en/release/modules/tmr/#tobjcreate

上的说明我试图在我的Lua脚本中创建一个计时器,它将每10秒执行一个函数。脚本中的示例计时器:

mytimer = tmr.create
mytimer:register(10000, tmr.ALARM_AUTO, my_function() end)
mytimer:start()

当我执行我的脚本,我得到一个语法错误:

'=' expected near 'mytimer'

我在这里做错了什么?

感谢

与其在这里提问,不如将你的代码与你链接的文档中的代码示例进行比较:

local mytimer = tmr.create()
mytimer:register(5000, tmr.ALARM_SINGLE, function (t) print("expired"); t:unregister() end)
mytimer:start()

示例:local mytimer = tmr.create()

Youmytimer = tmr.create

你这里漏掉了呼叫操作符。不让mytimer当地实践但不会给你一个错误。

示例:mytimer:register(5000, tmr.ALARM_SINGLE, function (t) print("expired"); t:unregister() end)

你:mytimer:register(10000, tmr.ALARM_AUTO, my_function() end)

我不知道my_function是什么。end不属于这里,除非你在这里定义了一个函数。那么它应该像例子中那样。如果没有end,如果my_function()会返回一个函数值,您的版本将是ok的。

function (t) print("expired"); t:unregister() end定义一个匿名函数。这将解析为一个函数值,该函数值用作寄存器函数的回调形参的实参。

你也可以这样做:

local callback = function (t) print("expired"); t:unregister() end
mytimer:register(5000, tmr.ALARM_SINGLE, callback)

其他内容在手册中有说明。

最新更新