无法从NodeMCU板连接到Wi-Fi网络
2018-1-4 17:54:37
收藏:0
阅读:103
评论:1
我试图在我的NodeMCU板上连接到我的Wi-Fi网络。我不确定这是硬件问题还是软件问题,但我找不到任何有关该问题的帮助。
我正在尝试使用以下代码连接到WiFi:
wifi.setmode(wifi.STATION)
station_cfg = {};
station_cfg.ssid = "netia9000";
station_cfg.pwd = "mywifipassword";
wifi.sta.config(station_cfg)
wifi.sta.connect()
status_of_wifi = wifi.sta.status()
if status_of_wifi == wifi.STA_IDLE then print("IDLE")end;
if status_of_wifi == wifi.STA_CONNECTING then print("CONNECTING")end;
if status_of_wifi == wifi.STA_WRONGPWD then print("WRONG PS")end;
if status_of_wifi == wifi.STA_APNOTFOUND then print("404")end;
if status_of_wifi == wifi.STA_FAIL then print("500")end;
if status_of_wifi == wifi.STA_GOTIP then print("IP GOT")end;
print(wifi.sta.getip())
但我在控制台上可以读到以下内容:
CONNECTING
nil
我尝试输入错误的数据 - 不存在的WiFi SSID,错误的 `密码,但无论我输入什么,最终都会得到相同的输出:“CONNECTING”和“nil”。
我使用了这段代码来检查可用网络:
wifi.setmode(wifi.STATION)
-- 打印AP列表
function listap(t)
for ssid,v in pairs(t)do
authmode,rssi,bssid,channel =
string.match(v,“(%d),(-?%d +),(%x%x:%x%x:%x%x:%x%x:%x%x:%x%x),(%d +)”)
print(ssid,authmode,rssi,bssid,channel)
end
end
wifi.sta.getap(listap)
这很完美地奏效。我在控制台上得到了以下内容:
netia9000 3 -52 e8:11:23:43:bf:a2:8f 10
--其他附近可用的Wi-Fi网络 --
因此,看起来Wi-Fi模块很好,而且这是一个软件问题。我根据[文档]编写了代码(https://nodemcu.readthedocs.io/en/master/en/modules/wifi/#wifistaconfig)。此时,我不知道问题出在哪里。有什么建议吗?
点赞
评论区的留言会收到邮件通知哦~
推荐文章
- Lua 虚拟机加密load(string.dump(function)) 后执行失败问题如何解决
- 我想创建一个 Nginx 规则,禁止访问
- 如何将两个不同的lua文件合成一个 东西有点长 大佬请耐心看完 我是小白研究几天了都没搞定
- 如何在roblox studio中1:1导入真实世界的地形?
- 求解,lua_resume的第二次调用继续执行协程问题。
- 【上海普陀区】内向猫网络招募【Skynet游戏框架Lua后端程序员】
- SF爱好求教:如何用lua实现游戏内调用数据库函数实现账号密码注册?
- Lua实现网站后台开发
- LUA错误显式返回,社区常见的规约是怎么样的
- lua5.3下载库失败
- 请问如何实现文本框内容和某个网页搜索框内容连接,并把网页输出来的结果反馈到另外一个文本框上
- lua lanes多线程使用
- 一个kv数据库
- openresty 有没有比较轻量的 docker 镜像
- 想问一下,有大佬用过luacurl吗
- 在Lua执行过程中使用Load函数出现问题
- 为什么 neovim 里没有显示一些特殊字符?
- Lua比较两个表的值(不考虑键的顺序)
- 有个lua简单的项目,外包,有意者加微信 liuheng600456详谈,最好在成都
- 如何在 Visual Studio 2022 中运行 Lua 代码?

wifi.sta.connect()是异步的,因此不能保证在运行.status()代码时 AP 连接已完成。实际上,文档说除非.config()的 auto 值设置为 false,否则这是不必要的。但是,您可以像这样向
.config()添加回调函数:function showip(params) print("连接到Wifi。IP 地址为:" .. params.IP) end ... station_cfg.got_ip_cb = showip wifi.sta.config(station_cfg)请记住,WiFi 连接可能随时断开。如果您需要在连接的一次或每次连接时进行操作,您真正需要的是注册一个回调函数,而不是假定将有一个恒定的连接。
回调函数将访问所有全局变量,因此您可以在其中存储软件状态,只需确保您能够处理可能产生的任何竞争条件(锁定/同步是另一个线程的讨论)。