Lua中有没有办法设置等待事件的超时时间? (Opencomputer的lua)

问题描述 投票:0回答:1

我正在创建一个脚本,它会发送一些东西并等待它被接收回来,但它只是挂起。

这是我的脚本:

local component = require("component")
local event = require("event")
local m = component.modem -- get primary modem component
m.open(80)
print(m.isOpen(80)) -- true

while true do


local timeout = 3
local timeoutEnded = false
function(
wait(timeout)
timeoutEnded = true
end)
local re = io.read()
m.broadcast(80, re)
while timeoutEnded == false do
local message = event.pull("modem_message")
end
if message == re then
print("sent success")
else
print("dammit")
end
end

运行时,它只会挂起等待“local message = event.pull("modem_message")”,但因为我试图让它告诉我它是否在1秒内成功传输,这不是我的目的 我不知道如何使其超时并继续执行 (我也是lua新手)

lua opencomputers
1个回答
0
投票

我知道这有点晚了,但我想我可以添加这个(对于其他可能也需要这个的人)


正如 Luke100000 所说,您可以像这样向“event.pull()”命令添加超时:

event.pull(3,"modem_message")

这将等待消息 3 秒钟,如果没有消息,它将继续执行程序。

但是,我要做的是运行“event.listen()”命令,这根本不会停止程序。

例如:

event.listen(“modem_message”,打印)

这将在收到消息后立即打印出消息中的所有信息,并且程序的其余部分可以与侦听器分开运行,直到您通过运行“ event.ignore(“modem_message”,print)'将其关闭

任何功能都可以用来代替打印。信息从事件传递到函数。

还请记住,如果您不关闭它,即使您退出程序,监听器也会保持打开状态,直到您重新启动计算机!

© www.soinside.com 2019 - 2024. All rights reserved.