NodeMCU使用文件来保存Lua代码,得益于Lua的解释性执行特性,Lua源程序可以在线编译运行,因此文件操作非常重要。 NodeMCU支持多种文件操作。常用的文件操作有文件上传、删除、编译为二进制文件、运行等。Lualoader中提供了丰富的文件操作功能。
(1)上传文件 “Upload File”:上传编写好的lua源代码文件到NodeMCU中。例如上传init.lua文件。Init.lua示例程序内容如下:
print("\n")
print("NodeMCU Started")
print("Type something to start")
点击“Upload File”:
![](16.png)
上传完成后:
![](17.png)
** Tips:上传完成后,在“Upload File”按钮下方的可编辑下拉列表框中将显示该文件的文件名,后续操作都是基于该选择。如果有多个文件上传,该下拉列表框将记录所有已经上传过的文件名称。旁边的“ ”按钮是打开lua文件编辑器,实现文件编辑。**
(2)查看文件
如果需要查看该文件,可以使用“cat”按钮。点击“cat”按钮后,Lualoader下载如下程序到NodeMCU中。
print("\n\ncat init.lua\n")
file.open( "init.lua", "r")
while true
do
line = file.readline()
if (line == nil) then break
end
print(string.sub(line, 1, -2))
tmr.wdclr()
end
file.close()
其中tmr.wdclr()用于清除看门狗,避免触发看门狗。程序运行结果:
cat init.lua
print("\n")
print("NodeMCU Started")
print("Type something to start")
Tips:一个长时间的循环或者事务,需内部调用tmr.wdclr()清除看门狗计数器,防止看门狗计数器溢出导致重启。
(3)运行文件
点击按钮“dofile”,运行该文件,输出执行结果。该命令相当于执行:dofile("init.lua"):
dofile(init.lua) 2015年4月19日 16:07:24
dofile("init.lua")
NodeMCU Started
Type something to start
(4)文件编译
点击“compile”按钮实现文件的编译,相当于运行:node.compile()。编译完成后,自动生成“文件名.lc”文件
node.compile("init.lua")
如果将init.lua文件中print("NodeMCU Started") 语句改为:print("NodeMCU Started" 编译将出现错误,将会给出响应的提示。
node.compile("init.lua")
stdin:1: init.lua:3: ')' expected (to close '(' at line 2)
near 'print'
Tips:Lua程序的二进制文件为.lc格式。将.lua格式的源程序转为二进制文件运行可以提高程序效率,降低内存使用。因此建议在程序调试完成需要运行时,使用.lc文件运行。
(5)运行lc文件 点击按钮“dolc”,运行lc文件,输出执行结果。该命令相当于执行:dofile("init.lc"),执行效果与dofile("init.lc")相同。
(6)列出文件列表
点击按钮“file.list”,该操作相当于执行: for k,v in pairs(file.list()) do l = string.format("%-15s",k) print(l.." "..v.." bytes") end
执行结果如下:
init.lua 70 bytes
init.lc 160 bytes
(7)删除文件
点击按钮“remove”,该操作相当于执行:file.remove("文件名.lua")。
更多关于LuaLoader的功能,请参考: http://benlo.com/esp8266/index.html#LuaLoader。
(8)格式化文件系统 点击按钮“Format”按钮,格式化文件系统,该操作相当于执行:
file.format("文件名.lua")。
file.format()
format done.