在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
这些天,,,,今天终于看到了希望,,,天道酬勤 先说实现的功能...让ESP8266连接无线网,然后让它建立服务器,,我的客户端连接上以后,发给客户端发数据模块打印到串口,,往ESP8266串口里发数据自动转发给网口 先看效果图,终于不需要单片机配置了 程序源码 我的init.lua lighton=0 pin=4 gpio.mode(pin,gpio.OUTPUT) tmr.alarm(1,500,1,function() if lighton==0 then lighton=1 gpio.write(pin,gpio.HIGH) else lighton=0 gpio.write(pin,gpio.LOW) end end) dofile("conncet_wifi.lua") 我的 conncet_wifi.lua
uart.setup(0,9600,8,0,1,0)
因为可能刷的固件不一样,如果出现下面的问题 修改为 APConfig={} APConfig.ssid="ACLAY" APConfig.pwd="wange903" wifi.sta.config(APConfig)
51采集PCF8591数据通过ESP8266上传C#上位机如果上面的代码有问题,,提示已经监听了端口不能重复监听,可以修改为下面的 ConnectCnt = 0 ConnectListenFlage=0 UsartUsFlage = 0 connect0Flage=0 connect1Flage=0 connect2Flage=0 connect3Flage=0 connect4Flage=0 tmr.alarm(3, 1000, 1, function() if ConnectListenFlage == 0 then ConnectListenFlage = 1 srv:listen(8080,function(conn0) UsartUsFlage = 1 if ConnectCnt == 0 then connect0 = conn0 connect0Flage =1 connect1Flage=0 if connect1 ~= nil then connect1:close() end print("0-Connectd") end if ConnectCnt == 1 then connect1 = conn0 connect1Flage=1 connect2Flage=0 if connect2 ~= nil then connect2:close() end print("1-Connectd") end if ConnectCnt == 2 then connect2 = conn0 connect2Flage=1 connect3Flage=0 if connect3 ~= nil then connect3:close() end print("2-Connectd") end if ConnectCnt == 3 then connect3 = conn0 connect3Flage=1 connect4Flage=0 if connect4 ~= nil then connect4:close() end print("3-Connectd") end if ConnectCnt == 4 then connect4 = conn0 connect4Flage=1 connect0Flage=0 if connect0 ~= nil then connect0:close() end print("4-Connectd") end conn0:on("receive",function(conn0,payload) print(payload) end) ConnectCnt = ConnectCnt+1 if ConnectCnt == 5 then ConnectCnt = 0 end end) end end) uart.setup(0,9600,8,0,1,0)
这两天测试程序还发现一个bug就是如果客户端断开了,应该检测一下哪个断开了,数据就不应该发向那个连接,,,否则就会报错,然后模块会复位重启 所以加上这段代码
conn0:on("disconnection",function(sck,c)
--print(sck)
if sck == connect0 then
connect0 = nil
print("disconnect0")
end
if sck == connect1 then
connect1 = nil
print("disconnect1")
end
if sck == connect2 then
connect2 = nil
print("disconnect2")
end
if sck == connect3 then
connect3 = nil
print("disconnect3")
end
if sck == connect4 then
connect4 = nil
print("disconnect4")
end
end)
放一个全的
ConnectCnt = 0//连接计数
ConnectListenFlage=0//监听标志,只执行一次监听
UsartUsFlage = 0//允许串口数据发向网口
tmr.alarm(2, 1000, 1, function()
if NetMode == 0 then//TCP Sever模式
if ConnectListenFlage == 0 then
ConnectListenFlage = 1
srv:listen(ConnectPort,function(conn0)
UsartUsFlage = 1
--print(conn0)
if ConnectCnt == 0 then
connect0 = conn0
if connect1 ~= nil then
connect1:close()
end
connect1 = nil
print("0-Connectd")
end
if ConnectCnt == 1 then
connect1 = conn0
if connect2 ~= nil then
connect2:close()
end
connect2 = nil
print("1-Connectd")
end
if ConnectCnt == 2 then
connect2 = conn0
if connect3 ~= nil then
connect3:close()
end
connect3 = nil
print("2-Connectd")
end
if ConnectCnt == 3 then
connect3 = conn0
if connect4 ~= nil then
connect4:close()
end
connect4 = nil
print("3-Connectd")
end
if ConnectCnt == 4 then
connect4 = conn0
if connect0 ~= nil then
connect0:close()
end
connect0 = nil
print("4-Connectd")
end
conn0:on("disconnection",function(sck,c) //断开连接函数
--print(sck)
if sck == connect0 then
connect0 = nil
print("disconnect0")
end
if sck == connect1 then
connect1 = nil
print("disconnect1")
end
if sck == connect2 then
connect2 = nil
print("disconnect2")
end
if sck == connect3 then
connect3 = nil
print("disconnect3")
end
if sck == connect4 then
connect4 = nil
print("disconnect4")
end
end)
conn0:on("receive",function(conn0,payload)
uart.write(0,payload)end)
--print(payload) end)
ConnectCnt = ConnectCnt+1
if ConnectCnt == 5 then
ConnectCnt = 0
end
end)
end
end
串口函数里面 if UsartUsFlage == 1 then
if NetMode == 0 then
if connect0 ~= nil then
connect0:send(RevData)
end
if connect1 ~= nil then
connect1:send(RevData)
end
if connect2 ~= nil then
connect2:send(RevData)
end
if connect3 ~= nil then
connect3:send(RevData)
end
if connect4 ~= nil then
connect4:send(RevData)
end
end
现在一步步的做 首先亲们一定是把Esp8266刷了基于Lua脚本语言开发的固件 可以参考这篇文章ESP8266刷AT固件与nodemcu固件
我也重新刷一下 我现在使用的这一款,,这上面有一个灯,这款是人家做的开发板,所以集成了USB转串口,, 首先是做一个程序让灯闪,这样做就只是做指示灯,正好看一下它的一些API函数 复位一下模块
关于这句要说一下,,,,这个模块默认上电执行的是 init.Lua中的程序,因为刚刷新完固件所以模块里面没有任何文件,, 我们编写一个程序把它保存为一个后缀名为.lua的文件,,这些文件呢,点击 文件就保存到ESP8266内部了,我上面写了两个文件一个名为init.lua(必须的,一上电模块就执行的文件),另一个conncet_wifi.lua 要想使用这个文件只需要 先写init.lua
可以给模块重新上电试一下,或者复位,模块总是执行这个程序
我为了方便用电脑上位机测试,所以就让模块工作在AP+STATION模式下,让模块连接我的360wifi 先设置模块的模式,然后是连接我的无线
为了保证模块一上电就执行 接着就是建立服务器
对了具体的关于 ::::::号有没有疑问,其实自己现在也有,不过自己看到了Lua讲解::::号的地方,先知道这样用,,,,,自己看懂了再在关于lua入门里面写一下 网口已经能接收到数据然后发送到串口了 现在要做的是往模块串口发数据然后传给网口 完成后可以给模块重新上电,或者复位一下,因为模块这样写进去可能不是从init.lua开始执行的 用别的串口调试助手连接上模块,因为这个软件的串口是发的命令 好了,,,, 补充 上面的AP加STATION模式下模块是发出WIFI信号的,而且设置了模块监听的端口是8080,所以可以完全连接模块发出的无线网,然后和模块进行通信, 只不过模块IP地址填写的是模块默认的ip 192.168.4.1 端口号 8080 连接模块的无线 对了串口每隔500ms会打印Connecting... 是由于Lua程序中写的模块是如果没有连接到路由器就会打印 如果不想要可以去掉 最后呢!提供一下自己做的板子
|
请发表评论