Почему wifi.sta nil даже после wifi.setmode(wifi.STATIONAP)?
РЕДАКТИРОВАТЬ: то, что я пытаюсь сделать, это по сути настроить станцию после того, как софтпап работает TCP-сервер.
Я получаю ошибку паники для wifi.sta
быть ноль, когда я звоню wifi.sta.config(station_cfg)
даже после того, как я настроил его должным образом раньше.
Когда я делаю:
function connectHib()
wifi.setmode(wifi.STATIONAP)
[AP config here]
station_cfg={}
station_cfg.ssid = ""
station_cfg.pwd = ""
station_cfg.save = false
station_cfg.auto = false
wifi.sta.config(station_cfg)
end
Работает нормально, но когда я его называю, тогда запускаю сервер с srv=net.createServer(net.TCP)
и затем вызовите следующую функцию:
function validateSTA()
station_cfg={}
station_cfg.ssid = _G.wifi
station_cfg.pwd = _G.senha
station_cfg.save = false
station_cfg.auto = false
wifi.sta.config(station_cfg) -- this creates an error
wifi.sta.connect()
end
Это дает мне ошибку ПАНИКИ на закомментированной строке. Я просто пытаюсь перенастроить только модуль STATION, а затем сказать ему подключиться, чтобы я смог проверить соединение.
Я использую:
NodeMCU custom build by frightanic.com
branch: master
commit: 67027c0d05f7e8d1b97104e05a3715f6ebc8d07f
SSL: false
modules: adc,file,gpio,net,node,pwm,sjson,tmr,uart,wifi
build created on 2018-04-16 13:55
powered by Lua 5.1.4 on SDK 2.2.1(cfd48f3)
Что меня беспокоит, так это то, что кажется, что он не был "объявлен" раньше, но работает с первой функцией... Я думал, Wi-Fi. был глобальным, как _G. переменные.
Это также работает, если я вызываю функции отдельно в командной строке ESPlorer на ESP без моего init.lua.
Я также попробовал прошивку отладки, и единственное, что я увидел, это всплывающее окно: wifi_event_monitor_handle_event_cb, которое вызывается каждые 4 секунды или около того.
Спасибо, ребята, любая помощь ценится, так как я застрял около недели.
1 ответ
Как и многие другие языки сценариев, у lua нет объявлений, есть только назначения. Вы должны выполнить проверки, что является wifi
Значение во время первого и второго звонков. Кажется, что сначала вы используете его в качестве таблицы, а во второй функции вы пытаетесь использовать его как строку в station_cfg.ssid = _G.wifi
,
Или причина в том, что глобальные переменные не "как _G
", они хранятся в _G
,