2.8-Air302(NB-IOT)-基础外设-文件数据存储和代码写入并执行lua文件
<p><iframe name="ifd" src="https://mnifdv.cn/resource/cnblogs/Learn-NB-IOT-Air302-ForLua" frameborder="0" scrolling="auto" width="100%" height="1500"></iframe></p>
说明
这一节测试一下文件数据的存储
然后给大家一个扩展应用: 程序中写入lua文件,并执行lua文件
测试基本的数据存储
--[[基本的数据存储]] local f = io.open("test_file", "wb") --写模式打开文件,如果没有文件则自动创建 if f then local str = "11233344"; f:write( str ) f:close() end local f = io.open("test_file", "rb")--读模式打开文件 if f then local data = f:read("*a") --读取所有内容 log.info("read test_file", "data", data) --打印读取的内容 f:close() end
程序中写入lua文件,并执行lua文件
lua执行是把lua文件(字符串数据)放到一个数组里面,然后调用LUA解析,
然后和底层C语言等配合执行.
所以实际上LUA就是在执行一个字符串.
测试的程序代码
--[[测试把lua文件写到里面,然后执行]] local f = io.open("load_file.lua", "wb") --写模式打开文件,如果没有文件则自动创建 if f then --写入LUA执行文件 local str = "load_file={} " .. " _G.sys = require (\"sys\")" .. " load_file.test = \"11223344\"" .. " return load_file "; f:write( str ) f:close() end local flag =0; local f = io.open("load_file.lua", "rb") if f then local data = f:read("*a") log.info("fs", "data", data) f:close() flag = 1; end if flag==1 then --存在 load_file.lua 文件 local load_file = require "load_file" --请求load_file.lua文件 log.info("run load_file", load_file.test) --加载执行load_file.lua 文件里面的程序 end
提示:创建的lua文件名字为 load_file.lua
lua文件程序代码为:
"load_file={} " .. " _G.sys = require (\"sys\")" .. " load_file.test = \"11223344\"" .. " return load_file "
如果不知道是什么意思,是否还记得这一节
1.3-Air302(NB-IOT)-新建lua文件和lua文件的变量,函数调用
测试
结语
扩展的写入并运行lua程序我只是提示一下.
应用方面呢是远程升级的时候可以直接升级进去lua文件,不需要把lua文件编译成bin以后再升级.