【LuatOS-esp32】4.1 文件系统——luatools下载文件读写

1 前言

打算将数据存入文件系统。

2 luatos文件系统

https://wiki.luatos.com/develop/filesystems.html
在这里插入图片描述

3 fs——查看文件信息

3.1 接口

在这里插入图片描述

3.2 测试代码


tag = "fsTest"

function fs_info()
    if fs == nil then
        log.error(tag, "this fireware is not support fs")
        return
    end
    log.info(tag, "START")
    log.info(tag .. ".fsstat:", fs.fsstat())
    log.info(tag .. ".fsstat:/", fs.fsstat("/"))
    log.info(tag .. ".fsstat:/luadb/", fs.fsstat("/luadb/"))
    log.info(tag .. ".fsize:/luadb/code.png", fs.fsize("/luadb/code.png"))
    log.info(tag .. ".fsize:/luadb/main.luac", fs.fsize("/luadb/main.luac"))
    log.info(tag .. ".fsize:/luadb/main.lua", fs.fsize("/luadb/main.lua"))

    -- names = io.lsdir("/ldata/")
    -- log.info("dir",names)
    -- log.info(tag .. ".fsize", fs.fsize("/luadb/main.luac"))
    log.info(tag, "DONE")
end

3.3 结果

fsstat是针对文件系统,例如"/luadb" “/sd”
在这里插入图片描述
没有挂载sd卡也会报错。

4 io接口

LuatOS-master\LuatOS\lua\src\liolib.c
在这里插入图片描述
当前支持的io接口

update_luadb_inline.lua (LuatOS-master\LuatOS\bsp\win32\tools)

5 IO读取luadb目录下文件

5.1 接口io.read

io.read -> f_read -> g_read
在这里插入图片描述

5.2 下载txt文件进luadb

创建一个txt文件,然后输入aaaa
在这里插入图片描述
在这里插入图片描述

5.3 代码

function fs_read_txt()
    local file_path = "/luadb/boot_time.txt"   --luadb只读
    local f_read_txt = io.open(file_path, "rb")
    log.info("f_read_txt:",type(f_read_txt))      -- userdata
    if f_read_txt then
        log.info("f_read_txt ok")
        local data = f_read_txt:read("*a")
        log.info("data type = "..type(data)) -- string
        -- if data == "" then
        --     data = "0"
        -- end
        log.info("fs","data", "["..data.."]", type(data))

        local data_temp = data:toHex()
        log.info("fs","data","["..data_temp.."]", type(data_temp))
        f_read_txt:close()
    end

    if fs then
        log.info("fsstat", fs.fsize(file_path))
    end
end

5.4 结果

在这里插入图片描述
toHEX可以将字符串转为ascii码值

6 IO写入

6.1 接口io.write

io.write -> f_write -> g_write
在这里插入图片描述

6.2 代码

fs_read_txt("/luadb/boot_time.txt")

function fs_write_txt(file_path)
    log.info("fs_write_txt------------------{")
    -- local file_path = "/test_write.txt"   --luadb只读
    local f_write_txt = io.open(file_path, "wb+")   --读写方式打开或建立一个二进制文件,允许读和写
    log.info("fs_write_txt:",type(f_write_txt))      -- userdata
    if f_write_txt then
        log.info("f_write_txt ok")
        local data = f_write_txt:write("aaa")
        log.info("fs","data", "["..data.."]", type(data))
        f_write_txt:close()
    end

    if fs then
        log.info("fsstat", fs.fsize(file_path))
    end
    log.info("fs_write_txt------------------}")
end

无法运行,看起来无法在"/"目录下直接创建文件

7 小结

后续尝试加上sd卡,不过由于esp32只有一个spi,需要实现spi复用,打算使用105看看。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值