jung hur
jung hur

Reputation: 91

Lua script - collection data and save into a file

I am working on coding lua script.

What I am coding is..Collecting the data and save it into the certain file.

Situation :
There are two sensors that when they recognize the object in front of it, the value of the sensor will be increased.
I want to save the data of the value of sensor every 100ms with time.
Time format would be "2013-04-25 10:30:004"

What I did is here.

===========================================================

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

function OnExit()
    print("Exit code...do something")
end

function main()

    timer = "TIMER"
    analogsensor_1 = "AIR_1"
    analogsensor_2 = "AIR_2"

    while true do 
        valueOfSensor_1 = ANALOG_IN.readAnalogIn(analogsensor_1);
        valueOfSensor_2 = ANALOG_IN.readAnalogIn(analogsensor_2);

        write(colltection_of_data.txt)
        go(print(valueOfSensor_1), 0.1)     //print value of sensor every 100ms
        print(time)
        go(print(valueOfSensor_2), 0.1)
        print(time)
    end 
    TIMER.sleep(timer,500)

end 

print("start main")
main()

================================================================

I know it's not complete code. How can I save the data into certain file? and how can I show the time format like that?

Thank you in advance!

Upvotes: 0

Views: 4881

Answers (2)

W.B.
W.B.

Reputation: 5525

To get date and time you call:

local timestr = os.date("%Y-%m-%d %H:%M:%S")

Now to save that to a file you need to open the file

local filehandle = io.open(filename[, mode]) - Manual

To output desired data, you then use

local filehandle = io.open("Log.txt", "w+")
filehandle:write(timestr, " - Sensor1: ", tostring(valueOfSensor1), "\n")

Of course, you open your file only once and then issue write command every x (milli)seconds. After you're done:

filehandle:close()

P.S. Please use locals whenever possible. It's much faster than globals (local analogSensor_1 instead of just analogSensor_1)

Upvotes: 4

Egor Skriptunoff
Egor Skriptunoff

Reputation: 23757

Sorry, no fractional seconds

-- Open file
local file = assert(io.open('collection_of_data.txt','wb'))

-- Write to file
local dt = os.date'*t'
local time_string = 
   dt.year..'-'..('0'..dt.month):sub(-2)..'-'..('0'..dt.day):sub(-2)..' '..
   ('0'..dt.hour):sub(-2)..':'..('0'..dt.min):sub(-2)..':'..('0'..dt.sec):sub(-2)
file:write(valueOfSensor_1, '\n', time_string, '\n')

-- Close file
file:close()

Upvotes: 1

Related Questions