lua开发8266API手册:https://nodemcu.readthedocs.io/en/master/
透传本人理解就是把串口接收的数据通过网络发送给服务器, 客户端接收的数据通过串口再发送出去 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)