0

状況 :

2つのセンサーがあり、各センサーの値のデータを特定のファイルに保存したいのですが、うまくいきません。Linux システムで作業していますが、ファイルはまだ空です。コードの何が問題になっていますか? 何か提案はありますか?

私のコードは次のとおりです。

--Header file

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

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");

       end

       TIMER.sleep(timer,500)
    end

    -- close the file
    filehandle:close()

end 

print("start main")
main()
4

2 に答える 2

1

@moteusによって指摘されたタイプミスのほかに、これはすべきではありません:

    if (valueOfSensor_1 and valueOfSensor_2 > 0) then

このようになりますか?

    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("Warning: error reading the value of sensor 1:\n"..valueOfSensor_1)
        valueOfSensor_1 = 0
    end

    success, valueOfSensor_2 = pcall(ANALOG_IN.readAnalogIn, analogsensor_2);
    if not success then
        print("Warning: error reading the value of sensor 2:\n"..valueOfSensor_2)
        valueOfSensor_2 = 0
    end

の失敗ANALOG_INが体系的でない場合は、回避できます。呼び出しが体系的に失敗すると、巨大な警告ログと空のcollection_of_data.txt.

ANALOG_IN標準の Lua ライブラリではないことに注意してください。そのドキュメントを確認し、その使用法の詳細に注意を払う必要があります。

于 2013-04-29T11:55:25.217 に答える