DoitCar 开发流程

文件操作

  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.