2013-04-25 45 views
0

我正在編寫lua腳本。Lua腳本 - 收集數據並保存到文件中

我在編碼的是..收集數據並將其保存到特定文件中。

現狀
有兩個傳感器,當他們認識到在它的前面的目的,傳感器的值將增加。
我想用時間每100ms保存傳感器數據的數據。
時間格式將是「2013-04-25 10:30:00」

我所做的就是在這裏。

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

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 2013-04-25 13:36:19

+0

謝謝!這裏'wb'的含義是什麼? – 2013-04-25 13:36:43

+0

@junghur它意味着打開文件以寫入二進制數據。請參閱http://www.lua.org/pil/21.2.html – Supr 2013-04-25 13:38:57

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

當然,你打開你的文件只有一次,然後發出寫命令每隔X(毫)秒。大功告成後:

filehandle:close()

附:請儘可能使用本地人。它比全局快得多(local analogSensor_1而不只是analogSensor_1

+0

處得到'timestr'謝謝!但是,什麼「io.open(filename [,mode])」是什麼意思? – 2013-04-25 13:38:41

+0

@junghur這是打開文件的一般語法。例如'io.open(「Test.txt」,「w + b」)'將以二進制模式打開帶有寫入追加訪問的Text.txt文件。請參閱我提供的手冊的鏈接。 – 2013-04-25 13:40:46

+0

緊湊日期格式化!不幸的是,'%F%T'不工作。 – 2013-04-25 13:47:23

相關問題