Lua脚本 - 编写一个场景

情况:

有两个传感器,我想将每个传感器的数值数据保存在特定的文件中。但是它不能工作。我正在使用Linux系统,文件仍然为空。 我的代码有什么问题吗?有任何建议吗?

我的代码是:

--头文件

require("TIMER")
require("TIMESTAMP")
require("ANALOG_IN")

function OnExit()
    print("退出代码...做些什么")
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")

    -- 打开用于写入二进制数据的文件
    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
            -- 保存传感器的值
            filehandle:write(timestr, " -The Value of the Sensors: ", tostring(valueOfSensor_1), tostring(valueOfSensor_2)"\n");

       end

       TIMER.sleep(timer,500)
    end

    -- 关闭文件
    filehandle:close()

end

print("开始主函数")
main()
点赞
用户2328287
用户2328287

我不知道这个库到底做了什么。 但是这段代码是错误的; 1)您没有关闭 while 语句。 如果在真实代码中,您在 filehandle:close() 之前就关闭了它,则尝试调用 filehandle:flush() 2)您忘记了逗号: filehandle:write(timestr,“-传感器值:”,tostring(valueOfSensor_1),tostring(valueOfSensor_2)“ \n”) (它应该说类似于尝试调用数字值)。 3)尝试打印出 valueOfSensor_1 和 valueOfSensor_2 的值。 可能没有数据。

2013-04-29 11:49:11
用户1850436
用户1850436

除了 @moteus 指出的拼写错误外,这句话不应该是这样的吗?

    if (valueOfSensor_1 > 0 and valueOfSensor_2 > 0) then

_编辑_,回应其他回答中的评论:

仍然有错误...它说“尝试调用字段"data"(一个nil值)

没有堆栈跟踪,我无法确定,但很可能是 ANALOG_IN 库中出现了问题。您可能没有正确使用它。

尝试将此代码:

    valueOfSensor_1 = ANALOG_IN.readAnalogIn(analogsensor_1);
    valueOfSensor_2 = ANALOG_IN.readAnalogIn(analogsensor_2);

改为这样:

    success, valueOfSensor_1 = pcall(ANALOG_IN.readAnalogIn, analogsensor_1);
    if not success then
        print("警告:读取传感器1的值时出错:\n"..valueOfSensor_1)
        valueOfSensor_1 = 0
    end

    success, valueOfSensor_2 = pcall(ANALOG_IN.readAnalogIn, analogsensor_2);
    if not success then
        print("警告:读取传感器2的值时出错:\n"..valueOfSensor_2)
        valueOfSensor_2 = 0
    end

如果 ANALOG_IN 中的失败不是系统性的,它将避免出现问题。如果调用始终失败,则会收到巨大的警告日志和一个空的 collection_of_data.txt

请注意,ANALOG_IN 不是标准的 Lua 库。您应该查阅其文档,并注意其使用细节。

2013-04-29 11:55:25