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以后再升级.

原文地址:https://www.cnblogs.com/yangfengwu/p/14033766.html