我正在创建一个脚本,它会发送一些东西并等待它被接收回来,但它只是挂起。
这是我的脚本:
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新手)
我知道这有点晚了,但我想我可以添加这个(对于其他可能也需要这个的人)
正如 Luke100000 所说,您可以像这样向“event.pull()”命令添加超时:
event.pull(3,"modem_message")
这将等待消息 3 秒钟,如果没有消息,它将继续执行程序。
但是,我要做的是运行“event.listen()”命令,这根本不会停止程序。
例如:
event.listen(“modem_message”,打印)
这将在收到消息后立即打印出消息中的所有信息,并且程序的其余部分可以与侦听器分开运行,直到您通过运行“ event.ignore(“modem_message”,print)'将其关闭
任何功能都可以用来代替打印。信息从事件传递到函数。
还请记住,如果您不关闭它,即使您退出程序,监听器也会保持打开状态,直到您重新启动计算机!