我正在尝试使用Elecrow ESP8266并使用NodeMCU固件(nodemcu_integer_0.9.6-dev_20150704.bin) . 我的连接代码如下所示:
function foo()
conn = net.createConnection(net.TCP, 0)
conn:on("connection", function()
text = "some text\r\n"
conn:send(text)
end)
conn:connect(5000,"192.168.240.1")
end
这是一个功能 . 我的第一个问题是我们什么时候退出这个功能?我必须明确地有一个'退出'声明吗?我意识到NodeMCU是事件驱动的,对连接的调用是在逻辑处理'连接'之后(此时我发送了一些东西) . 我很好,但我想知道我们何时以及什么时候离开'foo' .
另一件事是,我该如何实现超时呢?我希望超时并在发生时退出 .
谢谢你的任何提示 .
1 回答
在这段代码中,在函数foo()和end之间,你定义的函数foo()此时不执行它 .
当使用foo()在另一个代码中调用此函数时,将执行此代码
当你调用foo()并执行foo()代码时,当你调用foo()并执行foo()代码时,你首先执行
创建(在当前)套接字并将其分配给变量conn . conn是那个时刻的soket .
然后,
您指定一个回调函数,该函数将在套接字实现连接时在(将来)事件中执行 .
然后,
你要求插件尝试连接并执行函数foo()结束(并返回foo())
在一个假想的时间线上,事情可能会像这样 .
当解释器读取代码[function foo()... end]时,函数foo()被定义,但不被执行 .
0us foo() foo()代码开始执行,因为我们调用foo()
20us net.create... 已创建套接字
40us conn:on... 某些回调函数被指定为de socket
60us conn:connect.. 套接字开始尝试连接
65 us foo()函数结束并返回,并执行“另一个代码”
120 us套接字实现连接并触发回调函数
125 us回调代码:
与“另一个代码”并行执行
未来事件“套接字连接”将来会触发conn:on()的回调 .