本帖最后由 沙漠之痕 于 2018-11-9 13:31 編輯
1. 上電延時(shí)2秒加載file.lua文件,在file.lua文件中寫(xiě)入數(shù)據(jù)到mode.lua文件,再延時(shí)5秒讀出數(shù)據(jù)通過(guò)串口打印數(shù)據(jù) 操作流程: (1)手寫(xiě)創(chuàng)建打開(kāi)一個(gè)文件file.open("mode.lua", "w+")(寫(xiě)方式打開(kāi)) (2)向文件中寫(xiě)入數(shù)據(jù)file.writeline() (3)讀取文件并打印內(nèi)容 (4)關(guān)閉文件
Init.lua文件: tmr.alarm(0,2000,0,function() dofile("file.lua") end) init.lua文件結(jié)束 file.lua文件:
file.lua文件結(jié)束 if file.open("mode.lua", "w+") then file.writeline("abc") file.flush() file.writeline("222") file.flush() file.writeline("666") file.close() else print("open mode.lua faild") end tmr.alarm(1,5000,0,function() if file.open("mode.lua", "r") then s1= file.readline() print(s1) s1= file.readline() print(s1) s1= file.readline() print(s1) file.close() end end) file.lua文件結(jié)束
1.png (64.41 KB, 下載次數(shù): 60)
下載附件
2018-11-6 23:10 上傳
2. 通過(guò)串口發(fā)送指令控制繼電器, 掉電記憶繼電器狀態(tài),再次上電恢復(fù)繼電器狀態(tài)。 init.lua文件 RELAY_Stat = "" RELAY_Pin = 1 gpio.mode(RELAY_Pin, gpio.OUTPUT) if file.open("mode.lua", "r") then RELAY_Stat = file.readline() print(RELAY_Stat) file.close() end if string.find(RELAY_Stat,"RELAY=1",1) then gpio.write(RELAY_Pin,1) elseif string.find(RELAY_Stat,"RELAY=0",1) then gpio.write(RELAY_Pin,0) end tmr.alarm(0,4000,0,function() dofile("file.lua") end) init.lua文件結(jié)束
file.lua文件: UartReceCnt = 0 UartReceTempCnt = 0 UartReceData = "" uart.on("data",0,function(data) UartReceData = UartReceData..data UartReceCnt = UartReceCnt + 1 end,0) tmr.alarm(1,10,1,function() if UartReceCnt ~= 0 then if UartReceTempCnt == UartReceCnt then UartReceCnt = 0 UartReceTempCnt = 0 if UartReceData == "open" then gpio.write(RELAY_Pin,1) if file.open("mode.lua", "w+") then file.writeline("RELAY=1") file.flush() else print("open mode.lua faild") end file.close() elseif UartReceData == "close" then gpio.write(RELAY_Pin,0) if file.open("mode.lua", "w+") then file.writeline("RELAY=0") file.flush() else print("open mode.lua faild") end file.close() elseif UartReceData == "rest" then node.restart() end uart.write(0,UartReceData) UartReceData = "" UartReceCnt = 0 else UartReceTempCnt = UartReceCnt end end end) file.lua文件
2.png (41.19 KB, 下載次數(shù): 58)
下載附件
2018-11-6 23:11 上傳
3.png (79.71 KB, 下載次數(shù): 63)
下載附件
2018-11-6 23:11 上傳
用到的函數(shù)介紹: 1. file.open(filename, mode) 打開(kāi)文件以進(jìn)行訪(fǎng)問(wèn),可能會(huì)創(chuàng)建它(對(duì)于寫(xiě)入模式) 參數(shù): fliename 要打開(kāi)的文件 mode: r 讀模式(默認(rèn)) w 寫(xiě)模式 a 附加模式 r+ 更新模式,保留所有先前的數(shù)據(jù) w+ 更新模式,刪除所有先前的數(shù)據(jù) a+ 追加更新模式,保留以前的數(shù)據(jù),只允許在文件末尾寫(xiě)入 返回:文件對(duì)象,如果文件打開(kāi)確定。nil如果文件未打開(kāi)或不存在(讀取模式) 2. file.writeline(string) 將字符串寫(xiě)入打開(kāi)的文件,并在末尾附加'\ n' 參數(shù): string 要寫(xiě)入文件的內(nèi)容 返回:true如果寫(xiě)得好,nil就出錯(cuò)了 3. file.readline() 從打開(kāi)的文件中讀取下一行。行被定義為以EOL('\ n')字節(jié)結(jié)尾的零個(gè)或多個(gè)字節(jié)。如果下一行超過(guò)1024,則此函數(shù)僅返回前1024個(gè)字節(jié)。 參數(shù):無(wú) 返回:文件內(nèi)容以字符串形式逐行顯示,包括EOL('\ n')。nilEOF時(shí)返回 4. file.close() 關(guān)閉打開(kāi)的文件(如果有)。 參數(shù) 無(wú) 返回: nil 5. file.flush()刷新對(duì)文件系統(tǒng)的任何掛起寫(xiě)入,確保重啟時(shí)不會(huì)丟失任何數(shù)據(jù) 參數(shù): 無(wú) 返回: nil
交流QQ:1813763867 QQ群:235371864
|