2015-11-19 338 views
3

我是新接觸ESP8266的NodeMCU編程。我需要發送字符串到服務器並接收響應字符串。所以我寫了一些代碼,但它不能正常工作。我的程序一直工作,然後顯示內存已滿的消息。你可以幫我嗎?ESP8266發送和接收套接字

---------init funсtion----------------- 
wifi.setmode(wifi.STATION) 
wifi.sta.config("TP-LINK_ROBOT","63793246") 
wifi.sta.connect() 
--------------------------------------------- 

function hello (sck,c) 
    print (c) 
    sk:close() 
    if c == "Thank you" then 
    print("Great!") 
    end 
end 

function test() 
sk=net.createConnection(net.TCP, 0) 
sk:on("receive", hello) 
sk:on("sent", function(sck) end) 
sk:connect(9999,"192.168.0.100") 
sk:send("HELLO") 
print("sent to server") 
end 

test() 
+2

您一定需要閱讀http://www.esp8266.com/wiki/doku.php?id=nodemcu-unofficial-faq上的FAQ。 vlad59的答案是現貨。你需要了解Lua是完全異步的,因此你需要使用回調函數。 –

+0

@MarcelStör謝謝 –

回答

3

這是我使用最新的開發固件的代碼。我試圖讓它適應你的情況。它應該按原樣工作。

和往常一樣,你總是要記住它是基於事件的。

sk=net.createConnection(net.TCP, 0) 
sk:on("receive", function(sck, c) 
    print(c) 
    if c == "Thank you" then 
     print("Great!") 
    end 
end) 
sk:connect(9999,"192.168.0.100") 
sk:on("connection", function(sck,c) 
    -- Wait for connection before sending. 
    sk:send("HELLO") 
end) 
+0

謝謝,它有效 –