本帖最后由 沙漠之痕 于 2018-11-7 12:45 編輯
1. 設置模塊連接路由器,并打印路由器分配的ip: Init.lua文件: tmr.alarm(0,4000,0,function() dofile("tcpclient.lua") end) Init.lua文件結束 tcpclient.lua文件: wifi.setmode(wifi.STATION) cfg={} cfg.ssid="qqqqq" cfg.pwd="11223344" wifi.sta.config(cfg) printip = 0 wifi.eventmon.register(wifi.eventmon.STA_DISCONNECTED, function(T) printip = 0 end) wifi.eventmon.register(wifi.eventmon.STA_GOT_IP, function(T) if printip == 0 then print("+IP-> "..T.IP) end printip = 1 end) tcpclient.lua文件結束
1.png (118.2 KB, 下載次數: 84)
下載附件
2018-11-6 14:30 上傳
2. 參照官方手冊,創建客戶端連接服務器;看見模塊獲取了ip但是連接不上服務器 Init.lua文件: tmr.alarm(0,4000,0,function() dofile("tcpclient.lua") end) Init.lua文件結束
tcpclient.lua文件: wifi.setmode(wifi.STATION) local stacfg={ ssid="qqqqq", pwd="11223344" } wifi.sta.config(stacfg) wifi.sta.autoconnect(1) TCPClient = net.createConnection(net.TCP,0) TCPClient:connect(8080,"192.168.0.105") TCPClient:on("receive", function(sck, data) uart.write(0,data) end) TCPClient:on("disconnection", function(sck, c) print("Disconnection") end) TCPClient:on("connection", function(sck, c) print("Connection") end) ----------Got IP Style:+IP-> xxx.xxx.xxx.xxx---------------------------- printip = 0 wifi.eventmon.register(wifi.eventmon.STA_DISCONNECTED, function(T) printip = 0 end) wifi.eventmon.register(wifi.eventmon.STA_GOT_IP, function(T) if printip == 0 then print("+IP-> "..T.IP) end printip = 1 end) ----------------------------END Got IP---------------------------------- tcpclient.lua文件結束
2.png (203.63 KB, 下載次數: 78)
下載附件
2018-11-6 14:31 上傳
3. 是不是,沒有獲取到ip就去連接了呢?添加一個定時器延時10秒后再去創建TCP客戶端連接服務器,這下可以看到能連接上服務器 Init.lua文件: tmr.alarm(0,4000,0,function() dofile("tcpclient.lua") end) Init.lua文件結束 tcpclient.lua文件: wifi.setmode(wifi.STATION) local stacfg={ ssid="qqqqq", pwd="11223344" } wifi.sta.config(stacfg) wifi.sta.autoconnect(1) ----------Got IP Style:+IP-> xxx.xxx.xxx.xxx---------------------------- printip = 0 wifi.eventmon.register(wifi.eventmon.STA_DISCONNECTED, function(T) printip = 0 end) wifi.eventmon.register(wifi.eventmon.STA_GOT_IP, function(T) if printip == 0 then print("+IP-> "..T.IP) end printip = 1 end) ----------------------------END Got IP---------------------------------- tmr.alarm(3,10000,0,function() TCPClient = net.createConnection(net.TCP,0) TCPClient:connect(8080,"192.168.0.105") TCPClient:on("receive", function(sck, data) uart.write(0,data) end) TCPClient:on("disconnection", function(sck, c) print("Disconnection") end) TCPClient:on("connection", function(sck, c) print("Connection") end) end) tcpclient.lua文件結束
3.png (131.31 KB, 下載次數: 74)
下載附件
2018-11-6 14:31 上傳
那斷開服務器,再重新打開服務器,客戶端又不連接了。。。
4.png (167.88 KB, 下載次數: 78)
下載附件
2018-11-6 14:32 上傳
4. 如何讓模塊斷開連接后一直自動重連服務器呢? Init.lua文件: tmr.alarm(0,4000,0,function() dofile("tcpclient.lua") end) Init.lua文件結束 tcpclient.lua文件: wifi.setmode(wifi.STATION) local stacfg={ ssid="qqqqq", pwd="11223344" } wifi.sta.config(stacfg) wifi.sta.autoconnect(1) tmr.alarm(3,1000,1,function() TCPClient = net.createConnection(net.TCP,0) TCPClient:connect(8080,"192.168.0.105") TCPClient:on("receive", function(sck, data) uart.write(0,data) end) TCPClient:on("disconnection", function(sck, c) print("Disconnection") tmr.start(3) end) TCPClient:on("connection", function(sck, c) print("Connection") tmr.stop(3) end) end) ----------Got IP Style:+IP-> xxx.xxx.xxx.xxx---------------------------- printip = 0 wifi.eventmon.register(wifi.eventmon.STA_DISCONNECTED, function(T) printip = 0 end) wifi.eventmon.register(wifi.eventmon.STA_GOT_IP, function(T) if printip == 0 then print("+IP-> "..T.IP) end printip = 1 end) ----------------------------END Got IP---------------------------------- tcpclient.lua文件結束
5.png (168.23 KB, 下載次數: 86)
下載附件
2018-11-6 14:33 上傳
5. 通過接收TCP服務器的控制指令“open”和“close”控制繼電器動作
Init.lua文件: RELAY_Pin = 1 gpio.mode(RELAY_Pin, gpio.OUTPUT) gpio.write(RELAY_Pin,0) tmr.alarm(0,4000,0,function() dofile("tcpclient.lua") end) Init.lua文件結束 tcpclient.lua文件: LinkStat = 0 TCPClient = nil ClientReceData = "" ClientReceCnt = 0 ClientReceDataStat = true wifi.setmode(wifi.STATION) local stacfg={ ssid="qqqqq", pwd="11223344" } wifi.sta.config(stacfg) wifi.sta.autoconnect(1) tmr.alarm(1,1000,1,function() if LinkStat == 0 then TCPClient = net.createConnection(net.TCP,0) TCPClient:connect(8080,"192.168.0.105") TCPClient:on("receive", function(sck, data) ClientReceData = ClientReceData..data ClientReceCnt = 0 ClientReceDataStat = true end) TCPClient:on("connection", function(sck, c) LinkStat = 1 print("Connection") tmr.stop(1) end) TCPClient:on("disconnection", function(sck, c) LinkStat = 0 print("Disconnection") tmr.start(1) end) if LinkStat == 0 then print("LinkError") end end end) tmr.alarm(2,10,1,function() if ClientReceDataStat==true then ClientReceCnt=ClientReceCnt+1 if ClientReceCnt>=10 then --receive finsion if ClientReceData=="open" then gpio.write(RELAY_Pin,1) end if ClientReceData=="close" then gpio.write(RELAY_Pin,0) end uart.write(0,ClientReceData) ClientReceData = "" ClientReceCnt = 0 ClientReceDataStat = false end end end) ----------Got IP Style:+IP-> xxx.xxx.xxx.xxx---------------------------- printip = 0 wifi.eventmon.register(wifi.eventmon.STA_DISCONNECTED, function(T) printip = 0 end) wifi.eventmon.register(wifi.eventmon.STA_GOT_IP, function(T) if printip == 0 then print("+IP-> "..T.IP) end printip = 1 end) ----------------------------END Got IP---------------------------------- tcpclient.lua文件結束
6.png (177.55 KB, 下載次數: 92)
下載附件
2018-11-6 14:33 上傳
7.png (157.05 KB, 下載次數: 88)
下載附件
2018-11-6 14:34 上傳
8.png (475.22 KB, 下載次數: 72)
下載附件
2018-11-6 14:34 上傳
9.png (91.76 KB, 下載次數: 84)
下載附件
2018-11-6 14:35 上傳
6. 我想使用串口助手給模塊發送數據,然后讓模塊吧數據發送給TCP服務器: TCP服務器發送的數據我們通過模塊的串口發送出來了,但是服務器并沒有接收到串口發送過來的數據
0.png (96.97 KB, 下載次數: 97)
下載附件
2018-11-6 14:35 上傳
通過串口助手發送數據給服務器: Init.lua文件 RELAY_Pin = 1 gpio.mode(RELAY_Pin, gpio.OUTPUT) gpio.write(RELAY_Pin,0) tmr.alarm(0,4000,0,function() dofile("tcpclient.lua") end) Init.lua文件結束 tcpclient.lua文件 LinkStat = 0 TCPClient = nil ClientReceData = "" ClientReceCnt = 0 ClientReceDataStat = true wifi.setmode(wifi.STATION) local stacfg={ ssid="qqqqq", pwd="11223344" } wifi.sta.config(stacfg) wifi.sta.autoconnect(1) tmr.alarm(1,1000,1,function() if LinkStat == 0 then TCPClient = net.createConnection(net.TCP,0) TCPClient:connect(8080,"192.168.0.105") TCPClient:on("receive", function(sck, data) ClientReceData = ClientReceData..data ClientReceCnt = 0 ClientReceDataStat = true end) TCPClient:on("connection", function(sck, c) LinkStat = 1 print("Connection") tmr.stop(1) end) TCPClient:on("disconnection", function(sck, c) LinkStat = 0 print("Disconnection") tmr.start(1) end) if LinkStat == 0 then print("LinkError") end end end) tmr.alarm(2,10,1,function() if ClientReceDataStat==true then ClientReceCnt=ClientReceCnt+1 if ClientReceCnt>=10 then --receive finsion if ClientReceData=="open" then gpio.write(RELAY_Pin,1) end if ClientReceData=="close" then gpio.write(RELAY_Pin,0) end uart.write(0,ClientReceData) ClientReceData = "" ClientReceCnt = 0 ClientReceDataStat = false end end end) ----------Got IP Style:+IP-> xxx.xxx.xxx.xxx---------------------------- printip = 0 wifi.eventmon.register(wifi.eventmon.STA_DISCONNECTED, function(T) printip = 0 end) wifi.eventmon.register(wifi.eventmon.STA_GOT_IP, function(T) if printip == 0 then print("+IP-> "..T.IP) end printip = 1 end) ----------------------------END Got IP---------------------------------- ------------------uart send data to server ---------------- uart.on("data",0,function(data) if TCPClient ~= nil then TCPClient:send(data,function() end) end end,0) --------------------end uart send data to server------------------ tcpclient.lua文件結束
10.png (149.85 KB, 下載次數: 74)
下載附件
2018-11-6 14:36 上傳
11.png (438.11 KB, 下載次數: 70)
下載附件
2018-11-6 14:36 上傳
12.png (121.52 KB, 下載次數: 78)
下載附件
2018-11-6 14:37 上傳
交流QQ:1813763867 QQ群:607064330
|