ESP8266 -- lua開發學習之路 五 (TCP客戶端透傳)
阿新 • • 發佈:2019-01-24
透傳本人理解就是把串列埠接收的資料通過網路傳送給伺服器, 客戶端接收的資料通過串列埠再發送出去 ESP8266充當一個通道把網路資料與串列埠聯絡起來
init.lua檔案:
--[[
init.lua檔案中不用做過多的操作初始化和載入檔案...
]]
gpio.mode(4,gpio.OUTPUT)
gpio.write(4,1)
tmr.alarm(1, 3000, 0, function()
dofile("tcpclient.lua")
end)
tcpclient.lua檔案:
LinkStat = 0 --定義連線狀態 TCPClient = nil --建立停tcp客戶端返回引數 wifi.setmode(wifi.STATIONAP) local APcfg = { ssid="ESP8266WIFI", pwd="12345678" } wifi.ap.config(APcfg) local stacfg={ ssid="TP-Link", pwd="12345678" } wifi.sta.config(stacfg) wifi.sta.autoconnect(1) --設定模組自動連線WIFI網路 --[[ 定時器3 每秒迴圈一次 在定時器中去建立客戶端連線伺服器,註冊接收資料事件,斷開事件,重連事件 在連線上伺服器後停止此定時器 斷開連線後啟動此定時器,再次去連線伺服器 ]] tmr.alarm(3,1000,1,function() if LinkStat == 0 then --LinkStat=0表示沒有連線伺服器 TCPClient = net.createConnection(net.TCP,0) --建立客戶端 TCPClient:connect(8080,"192.168.191.1") --連線伺服器 埠和ip TCPClient:on("receive", function(sck, data) --註冊接收資料函式 把接收的資料通過串列埠傳送出去 uart.write(0,data) end) TCPClient:on("connection", function(sck, c) --註冊重連函式連線斷開會呼叫此函式 LinkStat = 1 print("Link OK") tmr.stop(3) TCPClient:on("disconnection", function(sck, c) --註冊斷函式,斷開連線時啟動定時器重新連線 LinkStat = 0 print("link no") tmr.start(3) end) end) if LinkStat == 0 then print("LinkError") end end end) --串列埠接收事件 uart.on("data",0,function (receive) if TCPClient ~= nil then--當客戶端有連結時把串列埠接收的資料傳送給tcp伺服器 TCPClient:send(receive,function() end) end end,0)