標(biāo)題: ESP8266 lua設(shè)置TCP客戶端連接路由器 [打印本頁]
作者: 沙漠之痕 時(shí)間: 2018-11-6 14:38
標(biāo)題: ESP8266 lua設(shè)置TCP客戶端連接路由器
本帖最后由 沙漠之痕 于 2018-11-7 12:45 編輯
1. 設(shè)置模塊連接路由器,并打印路由器分配的ip:
Init.lua文件:
tmr.alarm(0,4000,0,function()
dofile("tcpclient.lua")
end)
Init.lua文件結(jié)束
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文件結(jié)束
1.png (118.2 KB, 下載次數(shù): 84)
下載附件
2018-11-6 14:30 上傳
2. 參照官方手冊,創(chuàng)建客戶端連接服務(wù)器;看見模塊獲取了ip但是連接不上服務(wù)器
Init.lua文件:
tmr.alarm(0,4000,0,function()
dofile("tcpclient.lua")
end)
Init.lua文件結(jié)束
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文件結(jié)束
2.png (203.63 KB, 下載次數(shù): 78)
下載附件
2018-11-6 14:31 上傳
3. 是不是,沒有獲取到ip就去連接了呢?添加一個(gè)定時(shí)器延時(shí)10秒后再去創(chuàng)建TCP客戶端連接服務(wù)器,這下可以看到能連接上服務(wù)器
Init.lua文件:
tmr.alarm(0,4000,0,function()
dofile("tcpclient.lua")
end)
Init.lua文件結(jié)束
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文件結(jié)束
3.png (131.31 KB, 下載次數(shù): 74)
下載附件
2018-11-6 14:31 上傳
那斷開服務(wù)器,再重新打開服務(wù)器,客戶端又不連接了。。。
4.png (167.88 KB, 下載次數(shù): 78)
下載附件
2018-11-6 14:32 上傳
4. 如何讓模塊斷開連接后一直自動(dòng)重連服務(wù)器呢?
Init.lua文件:
tmr.alarm(0,4000,0,function()
dofile("tcpclient.lua")
end)
Init.lua文件結(jié)束
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文件結(jié)束
5.png (168.23 KB, 下載次數(shù): 86)
下載附件
2018-11-6 14:33 上傳
5. 通過接收TCP服務(wù)器的控制指令“open”和“close”控制繼電器動(dòng)作
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文件結(jié)束
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文件結(jié)束
6.png (177.55 KB, 下載次數(shù): 92)
下載附件
2018-11-6 14:33 上傳
7.png (157.05 KB, 下載次數(shù): 88)
下載附件
2018-11-6 14:34 上傳
8.png (475.22 KB, 下載次數(shù): 72)
下載附件
2018-11-6 14:34 上傳
9.png (91.76 KB, 下載次數(shù): 84)
下載附件
2018-11-6 14:35 上傳
6. 我想使用串口助手給模塊發(fā)送數(shù)據(jù),然后讓模塊吧數(shù)據(jù)發(fā)送給TCP服務(wù)器:
TCP服務(wù)器發(fā)送的數(shù)據(jù)我們通過模塊的串口發(fā)送出來了,但是服務(wù)器并沒有接收到串口發(fā)送過來的數(shù)據(jù)
0.png (96.97 KB, 下載次數(shù): 97)
下載附件
2018-11-6 14:35 上傳
通過串口助手發(fā)送數(shù)據(jù)給服務(wù)器:
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文件結(jié)束
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文件結(jié)束
10.png (149.85 KB, 下載次數(shù): 74)
下載附件
2018-11-6 14:36 上傳
11.png (438.11 KB, 下載次數(shù): 70)
下載附件
2018-11-6 14:36 上傳
12.png (121.52 KB, 下載次數(shù): 78)
下載附件
2018-11-6 14:37 上傳
交流QQ:1813763867
QQ群:607064330
作者: small_tiger09 時(shí)間: 2019-10-24 18:27
非常詳細(xì),多謝分享!
作者: kookzw 時(shí)間: 2022-11-9 20:37
lua的教學(xué)資料有嗎?可以分享下經(jīng)驗(yàn)嗎?
歡迎光臨 (http://www.torrancerestoration.com/bbs/) |
Powered by Discuz! X3.1 |