我正在试用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'。
另一件事是,我该如何实现超时呢?我希望超时并在发生时退出。
感谢您的任何提示。
答案 0 :(得分:1)
在这段代码中,在函数foo()和end之间,你定义了函数foo()此时不执行它。
当使用foo()
在另一个代码中调用此函数时,将执行此代码当你调用foo()并执行foo()代码时,当你调用foo()并执行foo()代码时,你首先
conn = net.createConnection(net.TCP, 0)
创建(在当前)套接字并将其分配给变量conn。从那时起,康纳就是那个人。
然后,
conn:on("connection", function()
text = "some text\r\n"
conn:send(text)
end)
您指定一个回调函数,该函数将在套接字实现连接时在(将来)事件中执行。
然后,
conn:connect(5000,"192.168.240.1")
你要求插件尝试连接并且函数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回调代码:
text = "some text\r\n"
conn:send(text)
与"另一个代码"
并行执行未来事件" socket连接"在将来,使用conn:on()
激活回调