2013-04-25 2 views
0

Я работаю над кодировкой lua script.Lua script - данные коллекции и сохранить в файл

Что я кодирую ... Собираю данные и сохраняю их в определенном файле.

Положение:
Есть два датчика, что, когда они признают объект перед ним, значение датчика будет увеличен.
Я хочу сохранять данные о значении датчика каждые 100 мс с течением времени.
Формат времени будет «2013-04-25 10: 30: 004»

Что я здесь делаю.

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

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() 

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

Я знаю, что это не полный код. Как сохранить данные в определенном файле? и как я могу показать формат времени?

Спасибо заранее!

ответ

1

К сожалению, нет доли секунды

-- 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() 
+0

Для дробных секунд см http://stackoverflow.com/questions/463101/lua-current-time-in-milliseconds – Supr

+0

спасибо !! что означает «wb»? –

+0

@junghur Это означает открыть файл для записи двоичных данных. См. Http://www.lua.org/pil/21.2.html – Supr

3

Чтобы получить дату и время вызова:

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

Теперь, чтобы сохранить, что файл вам нужно открыть файл

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

Для вывода требуемых данных, вы затем использовать

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

Конечно, вы открываете файл только один раз, а затем выдавать команды записи каждые х (милли) секунд. После того, как вы закончите:

filehandle:close()

P.S. Пожалуйста, используйте местные жители, когда это возможно. Это намного быстрее, чем глобалов (local analogSensor_1 вместо того, чтобы просто analogSensor_1)

+0

спасибо! Но что означает «io.open (filename [, mode])» означает? –

+0

@junghur Это общий синтаксис для открытия файла. Например, 'io.open (" Test.txt "," w + b ")' откроет файл Text.txt с доступом для записи в двоичном режиме. См. Ссылку на пособие, которое я предоставил. –

+0

Компактное форматирование даты! К сожалению, '% F% T' не работает. –

Смежные вопросы