Я получил EPS8226, на который я загрузил файл main.lua
и некоторые другие конфигурации.Когда я запускаю main.lua
с dofile()
в терминале, print
из функции обратного вызова выводит только «sensorId» без «отправлено 0».Тем не менее, если я снова запускаю main.lua
или я print()
что-то ранее (либо внутри function()
, который вызывает обратный вызов, либо внутри самого обратного вызова), он будет правильно печатать "sensorId sent 0".Это также работает, если я не использую переменную local
.
function registerReaders()
for key, value in pairs(sensorConfig.data)
do
gpio.mode(value.pin, gpio.INPUT)
value.timer:alarm(value.polling, tmr.ALARM_AUTO, function() callbacks.sendData(sensorConfig.sensorId[key]) end)
tmr.create():alarm(1000, tmr.ALARM_SINGLE, function() callbacks.sendData(sensorConfig.sensorId[key]) end)
end
end
Печать "[sensorId_value]"
callbacks.sendData = function(sensorId)
local data = 1
print(sensorId .. " sent " .. data)
end
Печать правильно ("OK" затем "Отправлено"0 ")
callbacks.sendData = function(sensorId)
local data = 1
print("OK")
print(sensorId .. " sent " .. data)
end
Печать выполнена правильно (" [sensorId_value] отправлено 1 ")
callbacks.sendData = function(sensorId)
print(sensorId .. " sent 0")
end