我正在试用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是事件驱动的,连接的调用是在逻辑处理'connection‘之后进行的(此时我发送了一些东西)。我对此没意见,但我想知道我们是如何以及什么时候摆脱'foo‘的。
另一件事是,如何对此实现超时?当发生这种情况时,我希望超时并退出。
谢谢你的建议。
发布于 2016-12-07 20:10:41
在这段代码中,在函数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 () ends (而foo ()返回)
在想象的时间线上,事情可能会这样发展。
当解释器读取代码函数foo()时.end,函数foo ()是定义的,但没有执行。
0us foo() foo()代码开始执行,因为我们调用foo()
20 is net.create.套接字被创建
40 is 康涅狄格:在.上,某些回调函数被标记为de socket
60 to conn:connect..套接字开始尝试连接
65 us foo()函数结束并返回,并执行“另一段代码”
120 us套接字实现连接,并触发回调功能。
125 us回调代码:
text = "some text\r\n"
conn:send(text)
与“另一个代码”并行执行。
将来的事件“套接字连接”会触发,在将来,回调将在当前使用conn:on()签名。
https://stackoverflow.com/questions/41024281
复制相似问题