Lua脚本错误
情况: 我想将传感器值的数据记录保存在特定文件中 代码是Lua脚本错误,lua,scenarios,Lua,Scenarios,情况: 我想将传感器值的数据记录保存在特定文件中 代码是 --Header file require("TIMER") require("IPBOX") require("ANALOG_IN") require("LOG") function OnExit() print("Exit code...do something") end function main() timer = "Timer" local analogsensor_1 = "AIR_1" local analogsens
--Header file
require("TIMER")
require("IPBOX")
require("ANALOG_IN")
require("LOG")
function OnExit()
print("Exit code...do something")
end
function main()
timer = "Timer"
local analogsensor_1 = "AIR_1"
local analogsensor_2 = "AIR_2"
local timestr = os.data("%Y-%m-%d %H:%M:%S")
-- open the file for writing binary data
local filehandle = io.open("collection_of_data.txt", "a")
while true do
valueOfSensor_1 = ANALOG_IN.readAnalogIn(analogsensor_1);
valueOfSensor_2 = ANALOG_IN.readAnalogIn(analogsensor_2);
if (valueOfSensor_1 > 0 and valueOfSensor_2 > 0) then
-- save values of sensors
filehandle:write(timestr, " -The Value of the Sensors: ", tostring(valueOfSensor_1), tostring(valueOfSensor_2)"\n");
-- save values using rolling log appender:
LOG.log_event( ScenarioLoggerDevicenameInDeviceList, " -The Value of the Sensors: ", tostring(valueOfSensor_1), tostring(valueOfSensor_2), "any other string you wish to add", "etc", "etc")
LOG.log_event( ScenarioLoggerDevicenameInDeviceList, " -The Value of the Sensors: ", tostring(valueOfSensor_1))
print("Hello3"..valueOfSensor_1)
end
TIMER.sleep(timer,500)
end
-- close the file
filehandle:close()
end
print("start main")
main()
在这方面:
filehandle:write(timestr, " -The Value of the Sensors: ", tostring(valueOfSensor_1), tostring(valueOfSensor_2)"\n");
我得到一个错误:
"attemp to index global 'filehandle' (a nil value)"
如何修复它?
io.open
如果无法打开文件,则返回nil
。这可能是由于“未找到文件”、“权限被拒绝”以及其他原因造成的。为了解决这个问题,io.open
有第二个返回值,可以让您检查错误(事实上,它甚至返回第三个值,这是一个错误代码整数,但其含义取决于系统)
更改:
local filehandle = io.open("collection_of_data.txt", "a")
到
您还可以使用以下Lua习惯用法:
local filehandle = assert(io.open("collection_of_data.txt", "a"))
这也会起到同样的作用。如果assert
的第一个参数是nil
,则将打印第二个参数(io.open的第二个返回值)。如果第一个参数不是nil
,则只会返回它
local filehandle = assert(io.open("collection_of_data.txt", "a"))