Я хочу получить время, используя EPS8266 с nodeMCU, чтобы установить мой RTC через I2C.Сценарий Lua не выполняется в последовательности
Это мой sript:
-- file print.lua
local file = assert(loadfile("httpget.lua"))
file() --get Date and Time from google
print("Print follows:") --this should be executed after "file()"
print(date)
Это файл httpget.lua
:
-- file httpget.lua
print('httpget.lua started')
conn=net.createConnection(net.TCP, 0)
-- show the retrieved web page
conn:on("receive", function(conn, payload)
date = string.sub(payload,string.find(payload,"Date: ")
+6,string.find(payload,"Date: ")+35)
conn:close()
end)
conn:on("connection", function(conn, payload)
print('\nConnected')
conn:send("HEAD/HTTP/1.1\r\n"
.."Host: google.com\r\n"
.."Accept: */*\r\n"
.."User-Agent: Mozilla/4.0 (compatible; esp8266 Lua;)"
.."\r\n\r\n")
end)
-- when disconnected, let it be known
conn:on("disconnection", function(conn, payload)
print("Disconnected\r\n"..date)
end)
conn:connect(80,'google.com')
conn = nil
Результат:
> dofile("print.lua")
httpget.lua started
Print follows: -- this should be at the end
nil -- date==nil because httpget.lua not executed
>
Connected
Disconnected
Sun, 26 Apr 2015 10:30:03 GMT
Если я снова выполнить scipt (без перезагрузки) Я получаю дату от исполнения раньше. Что я могу сделать, чтобы выполнить «httpget.lua» и получить «дату» в следующем порядке?
Я использую ESP8266 с NodeMCU 0.9.6 build 20150406 от Lua 5.1.4. https://github.com/nodemcu/nodemcu-firmware/wiki/nodemcu_api_en#index
Я загружаю сценарии через USB с помощью ESPlorer v2.0 на свой ESP8266. Команды conn.net ... являются частью прошивки NodeMCU (см. Ссылку). Вы можете запускать сценарий только с помощью прошивки EPS8288 и NodeMCU. Моя проблема заключается в следующем: я не нахожу никакого способа закончить корректную подпрограмму conn: net и возвращать данные в следующую часть программы.
на соединение вызова, вероятно, асинхронный, но я не знаю, что библиотека вы используете. – ryanpattison
С выключенной стороны вы определили обработчики событий, и print.lua не дожидается успешного соединения, прежде чем он перейдет к следующей строке. Кроме того, я не знаю, будет ли lua передавать значение даты в разные области. – Kyle
Я использую ESP8266 с NodeMCU 0.9.6 build 20150406, работающим от Lua 5.1.4. Я загружаю скрипты с ESPloer. –