本帖最后由 沙漠之痕 于 2018-11-9 13:31 编辑
1. 上电延时2秒加载file.lua文件,在file.lua文件中写入数据到mode.lua文件,再延时5秒读出数据通过串口打印数据 操作流程: (1)手写创建打开一个文件file.open("mode.lua", "w+")(写方式打开) (2)向文件中写入数据file.writeline() (3)读取文件并打印内容 (4)关闭文件
Init.lua文件: tmr.alarm(0,2000,0,function() dofile("file.lua") end) init.lua文件结束 file.lua文件:
file.lua文件结束 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文件结束 2. 通过串口发送指令控制继电器, 掉电记忆继电器状态,再次上电恢复继电器状态。 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文件结束
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文件
用到的函数介绍: 1. file.open(filename, mode) 打开文件以进行访问,可能会创建它(对于写入模式) 参数: fliename 要打开的文件 mode: r 读模式(默认) w 写模式 a 附加模式 r+ 更新模式,保留所有先前的数据 w+ 更新模式,删除所有先前的数据 a+ 追加更新模式,保留以前的数据,只允许在文件末尾写入 返回:文件对象,如果文件打开确定。nil如果文件未打开或不存在(读取模式) 2. file.writeline(string) 将字符串写入打开的文件,并在末尾附加'\ n' 参数: string 要写入文件的内容 返回:true如果写得好,nil就出错了 3. file.readline() 从打开的文件中读取下一行。行被定义为以EOL('\ n')字节结尾的零个或多个字节。如果下一行超过1024,则此函数仅返回前1024个字节。 参数:无 返回:文件内容以字符串形式逐行显示,包括EOL('\ n')。nilEOF时返回 4. file.close() 关闭打开的文件(如果有)。 参数 无 返回: nil 5. file.flush()刷新对文件系统的任何挂起写入,确保重启时不会丢失任何数据 参数: 无 返回: nil
交流QQ:1813763867 QQ群:235371864
|