合宙Air105

2023-10-31

扩展阅读:

合宙Air105|fatfs| io操作(扩展)|SPI|可调功放|I2C|SPI|toHex()|os.remove|LuatOS-SOC接口|官方demo|学习(15-1):fatfs文件系统_打酱油的工程师的博客-CSDN博客

合宙Air103|SDIO (扩展) |LuatOS-SOC接口|官方demo|学习(15-3):SDIO - 文件读写操作_打酱油的工程师的博客-CSDN博客

合宙Air105|SFUD库|FS|SPI FLASH|W25QXX |LuatOS-SOC接口|官方demo|学习(15-4):SFUD库操作-外置flash_打酱油的工程师的博客-CSDN博客

-- LuaTools需要PROJECT和VERSION这两个信息
PROJECT = "fsdemo"
VERSION = "1.0.0"

log.info("main", PROJECT, VERSION)

-- sys库是标配
_G.sys = require("sys")

--添加硬狗防止程序卡死
if wdt then
    wdt.init(9000)--初始化watchdog设置为9s
    sys.timerLoopStart(wdt.feed, 3000)--3s喂一次狗
end

local function fs_test()
    -- 根目录/是可写
    local f = io.open("/boot_time", "rb")
    local c = 0
    if f then
        local data = f:read("*a")
        log.info("fs", "data", data, data:toHex())
        c = tonumber(data)
        f:close()
    end
    log.info("fs", "boot count", c)
    c = c + 1
    f = io.open("/boot_time", "wb")
    --if f ~= nil then
    log.info("fs", "write c to file", c, tostring(c))
    f:write(tostring(c))
    f:close()
    --end

    log.info("io.writeFile", io.writeFile("/abc.txt", "ABCDEFG"))

    log.info("io.readFile", io.readFile("/abc.txt"))
    local f = io.open("/abc.txt", "rb")
    local c = 0
    if f then
        local data = f:read("*a")
        log.info("fs", "data2", data, data:toHex())
        f:close()
    end

    -- seek和tell测试
    local f = io.open("/abc.txt", "rb")
    local c = 0
    if f then
        --f:seek(io.SEEK_END,3) --从5号位搜索至文档末尾
        --f:seek(io.SEEK_CUR,2) --从头开始,设置起始位置为2,
        f:seek(io.SEEK_SET,1) --设置起始位置为1,
        local data = f:read("*a")
        log.info("fs", "data3", data, data:toHex())
        f:close()
    end

    if fs then
        -- 根目录是可读写的
        log.info("fsstat", fs.fsstat("/"))
        -- /luadb/ 是只读的
        log.info("fsstat", fs.fsstat("/luadb/"))
    end
    local data = io.lsmount() --列出所有挂载点
    --lsmount	[{"fs":"lfs2","path":""},{"fs":"inline","path":"\/lua\/"},{"fs":"luadb","path":"\/luadb\/"}]
    log.info("fs", "lsmount", json.encode(data))
    --.fatfs	lsdir	[{"name":"abc.txt","type":0},{"name":"boot_time","type":0}]
    local ret, files = io.lsdir("/")  --列出根目录下的所有文件名
    log.info("fatfs", "lsdir", json.encode(files))


    -- 读取刷机时加入的文件, 并演示按行读取
    -- 刷机时选取的非lua文件, 均存放在/luadb/目录下, 单层无子文件夹
    f = io.open("/luadb/abc.txt", "rb")
    if f then
        while true do
            local line = f:read("l")
            if not line or #line == 0 then
                break
            end
            log.info("fs", "read line", line)
        end
        f:close()
        log.info("fs", "close f")
    else
        log.info("fs", "pls add abc.txt!!")
    end

    -- 文件夹操作
    sys.wait(3000)
    io.mkdir("/iot")  --建立目录命令最后不带"/"
    f = io.open("/iot/1.txt", "w+")
    if f then
        f:write("hi, LuatOS " .. os.date())
        f:close()
    else
        log.info("fs", "open file for write failed")
    end
    f = io.open("/iot/1.txt", "r")
    if f then
        local data = f:read("*a")
        f:close()
        log.info("fs", "writed data", data)
    else
        log.info("fs", "open file for read failed")
    end
end



sys.taskInit(function()
    -- 为了显示日志,这里特意延迟一秒
    -- 正常使用不需要delay
    sys.wait(1000)
    fs_test()
end)

-- 用户代码已结束---------------------------------------------
-- 结尾总是这一句
sys.run()
-- sys.run()之后后面不要加任何语句!!!!!

LOG:

[2023-02-09 21:48:14.537] main 188:APP Build release Jan  1 2023 16:20:44!
[2023-02-09 21:48:14.537] I/main LuatOS@AIR105 base 22.12 bsp V0013 32bit
[2023-02-09 21:48:14.537] I/main ROM Build: Jan  1 2023 16:20:52
[2023-02-09 21:48:14.537] D/main loadlibs luavm 204792 15376 15376
[2023-02-09 21:48:14.537] D/main loadlibs sys   397480 51072 51616
[2023-02-09 21:48:14.537] I/user.main	fsdemo	1.0.0
[2023-02-09 21:48:15.562] I/user.fs	data	22	3232	4
[2023-02-09 21:48:15.562] I/user.fs	boot count	22
[2023-02-09 21:48:15.562] I/user.fs	write c to file	23	23
[2023-02-09 21:48:15.593] I/user.io.writeFile	true
[2023-02-09 21:48:15.593] I/user.io.readFile	ABCDEFG
[2023-02-09 21:48:15.593] I/user.fs	data2	ABCDEFG	41424344454647	14
[2023-02-09 21:48:15.593] I/user.fs	data3	BCDEFG	424344454647	12
[2023-02-09 21:48:15.593] I/user.fsstat	true	128	4	4096	lfs
[2023-02-09 21:48:15.593] I/user.fsstat	true	0	0	512	luadb
[2023-02-09 21:48:15.593] I/user.fs	lsmount	[{"fs":"lfs2","path":""},{"fs":"inline","path":"\/lua\/"},{"fs":"luadb","path":"\/luadb\/"}]
[2023-02-09 21:48:15.593] I/user.fatfs	lsdir	[{"name":"abc.txt","type":0},{"name":"boot_time","type":0}]
[2023-02-09 21:48:15.593] I/user.fs	read line	ABC
[2023-02-09 21:48:15.593] I/user.fs	read line	DEF
[2023-02-09 21:48:15.602] I/user.fs	read line	XYZ
[2023-02-09 21:48:15.602] I/user.fs	close f
[2023-02-09 21:48:18.622] I/user.fs	writed data	hi, LuatOS Sun Jan  1 16:20:50 2023

PS:fs - 文件系统额外操作

fs - 文件系统额外操作

已适配 Air101/Air103 Air105 ESP32C3 Air780

备注

本页文档由这个文件自动生成。如有错误,请提交issue或帮忙修改后pr,谢谢!

小技巧

本库有专属demo点此链接查看fs的demo例子

fs.fsstat(path)

获取文件系统信息

参数

传入值类型

解释

string

路径,默认”/”,可选

返回值

返回值类型

解释

boolean

获取成功返回true,否则返回false

int

总的block数量

int

已使用的block数量

int

block的大小,单位字节

string

文件系统类型,例如lfs代表littlefs

例子

-- 打印根分区的信息

log.info("fsstat", fs.fsstat("/"))

fs.fsize(path)

获取文件大小

参数

传入值类型

解释

string

文件路径

返回值

返回值类型

解释

int

文件大小,若获取失败会返回0

例子

-- 打印main.luac的大小

log.info("fsize", fs.fsize("/main.luac"))

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

合宙Air105 的相关文章

  • Lua 中的“加载”有什么作用?

    我试图解决我的理解问题loadLua 脚本中的函数 但没有该命令的任何示例或指南 它在他自己的 Lua 网站上讲述https www lua org manual 5 2 manual html pdf load https www lua
  • 设置私有 luarocks 存储库

    对于我的设置 我需要一个 luarocks rock 的私有存储库 我可以将它们安装在我的开发环境中 而无需连接到互联网 为 luarocks 设置远程存储库的步骤是什么 我可以使用 sftp 服务器吗 有人有过这样的经历吗 在深入研究这个
  • Lua中如何去除字符串中的空格?

    我想从 Lua 中的字符串中删除所有空格 这是我尝试过的 string gsub str string gsub str string gsub str s 这似乎不起作用 如何删除所有空格 它有效 您只需分配实际结果 返回值 使用以下变体
  • 从lua中的函数返回多个值

    我正在尝试以下 lua 代码 function test return 1 2 end function test2 return test end function test3 return test 3 end print test p
  • 使用 EVAL、SCAN 和 DEL 的 Redis 通配符删除脚本返回“非确定性命令后不允许写入命令”

    因此 我正在寻求构建一个 lua 脚本 该脚本使用 SCAN 根据模式查找键并删除它们 原子地 我首先准备了以下脚本 local keys local done false local cursor 0 repeat local resul
  • 如何在多个Lua State(多线程)之间传递数据?

    我在中启动Redis连接池redis lua 通过从 C 调用 我得到了redis lua state 此 Lua 状态全局启动一次 仅在其他线程中启动get从中 当有一个 HTTP 请求 工作线程 时 我需要从redis lua stat
  • 使用 corona sdk 验证电子邮件地址

    在我的项目中 有一个供用户填写详细信息的表单 其中有一个文本字段用于输入用户的电子邮件 ID 所以我需要在 corona 项目中验证该文本字段中的电子邮件 试试这个正则表达式 local email email protected cdn
  • 检查lua中是否存在目录?

    如何检查 lua 中是否存在目录 如果可能的话最好不使用 LuaFileSystem 模块 尝试做类似以下 python 行的事情 os path isdir path 这是一种在 Unix 和 Windows 上都适用的方式 无需任何外部
  • Lua-迭代嵌套表

    我已经学习 Lua 几个星期了 这一次又一次成为我的症结所在 我尝试阅读有关该主题的帖子和书籍 我使用 Lua 查询软件监控系统 Nimsoft 我的数据以表格形式返回给我 我不会发布整个输出 但这里有一个我认为可以描述结构的片段 表参考是
  • lua_resume 的 from 参数的含义

    From Lua 5 2 参考手册 http www lua org manual 5 2 manual html lua resume int lua resume lua State L lua State from int nargs
  • 什么时候适合使用Lua这样的嵌入式脚本语言

    我玩 魔兽世界 大约有两年了 我对用来编写插件的 Lua 很好奇 由于到目前为止我读到的有关 Lua 的内容都是 快 轻 和 这太棒了 所以我想知道如何以及何时使用它 您需要在系统中嵌入像 Lua 这样的脚本语言的典型情况是什么 当您需要最
  • Lua :: 如何编写加载多个CPU的简单程序?

    我还无法用 Lua 编写一个可以加载多个 CPU 的程序 自从Lua通过协程支持这个概念 http www lua org pil 9 4 html 我相信这是可以实现的 我失败的原因可能是以下之一 这在Lua中是不可能的 我写不出来 an
  • Lua中如何在另一个表的表成员中搜索

    我正在编写一个 lua 程序 它有一个表 该表是另一个表的成员 当我向该成员表添加新日期时 一切正常 但是 当我想在该表中搜索时 无论我给出什么键 我总是会将最后一行添加到表中 如何在该成员表中正确搜索 Stream name functi
  • Lua 将字符串转换为数字 - 取决于语言环境

    刚刚注意到字符串 and tonumber 在 Lua 中是依赖于语言环境的 知道如何在不使用的情况下将字符串转换为数字tonumber 谢谢 例如将字符串 58 5 转换为 58 5 另外 当我尝试将带点的数字传递给函数时 该函数会转换
  • 比较 Lua 中的日期

    我有一个带有日期表的变量 如下所示 table day number 15 year number 2015 month number 2 如何获取当前日期与上述日期之间的天数 非常感谢 您可以使用os time 将表转换为秒并获取当前时间
  • 如何在我的 Lua 脚本中添加“睡眠”或“等待”?

    我正在尝试通过更改一天中的时间来为游戏制作一个简单的脚本 但我想快速完成 这就是我要说的 function disco hour minute setTime 1 0 SLEEP setTime 2 0 SLEEP setTime 3 0
  • Lua 访问表的键和值

    我想在关卡编辑器中读取 Lua 文件 这样我就可以以可视化格式显示其数据供用户编辑 如果我有一个像这样的 Lua 表 properties Speed 10 TurnSpeed 5 Speed显然是关键并且10价值 我知道如果我知道像这样的
  • 在Luasocket中,在什么条件下,即使在select告诉它可以安全读取之后,accept调用也可以阻塞?

    卢阿索基特select http w3 impa br diego software luasocket socket html select函数应该告诉何时可以在不阻塞的情况下读取套接字 它显然也可以用来告诉服务器套接字何时准备好接受新连
  • 如何终止Lua脚本?

    如何终止 Lua 脚本 现在我在 exit 方面遇到问题 我不知道为什么 这更像是一个 Minecraft ComputerCraft 问题 因为它使用了包含的 API 这是我的代码 while true do if turtle dete
  • 关闭 Löve2D 中的抗锯齿功能

    我在用着L ve2D http love2d org用于编写一个小游戏 L ve2D 是 Lua 的开源游戏引擎 我遇到的问题是 当您在非整数位置绘制精灵时 某些抗锯齿过滤器会自动应用于精灵 love graphics draw sprit

随机推荐

  • java 日期时区转换类

    public class DateUtils 标准日期时间格式 精确到秒 yyyy MM dd HH mm ss public static final String NORM DATETIME PATTERN yyyy MM dd HH
  • MXNet的源码编译过程总结

    目的 理解深度学习主流框架的设计思路 从源码级别进行向上研究 过程 从虚拟机开始 在Windows7 VMWare11 CentOS 6 6 x86 64 升级GCC 安装openblas opencv 升级python 安装python依
  • drools 7.x执行指定的drl文件

    7 x版本 Users lcc IdeaProjects drools test src main resources com rules Matches drl package com rules import entity School
  • 学习笔记之qt4的信号与槽机制

    信号是一个特定的标识 一个槽就是一个函数 与一般的函数不同 槽函数既能够和信号关联 也能够像普通函数一样直接调用 当某个事件出现时 通过发送信号 可以将与之相关联的槽函数激活 即执行槽函数代码 在程序中 使用QObject connect
  • SpringBoot与quartz框架实现分布式定时任务

    目录 前言 一 介绍 1 Quartz 核心概念 2 原理图 二 使用步骤 1 引入依赖 2 在项目中添加quartz properties文件 不添加该文件该框架会加载自带的properties文件 3 在数据库中创建quartz相关的表
  • Laravel 多个中间件的执行顺序

    问题 一个路由需要用到多个中间件 其中一个是 Laravel 自带的 auth 中间件 发现这个中间件不管放在哪里 总是在自定义中间件之前执行 如果业务需要自定义中间在 auth 之前执行 还是有办法的 解决方案 观察定义中间件的 app
  • 小白使用react——解决this.props.history.push无法跳转的问题

    场景 一个组件中 含有ul展开数组的组件 在每一行中 都能点击相应的这一行 跳转到对应的页面 也就是说 组件套组件 子组件中this props history push无法工作 提示没有push这个函数 因为这时的props中没有hist
  • 大家看看什么是牛人

    现在跨专业跨学校考研已经是一种趋势 某君学习图书馆学n年 也是觉得发腻 于是决定考个理科的研究生 在广泛的调查和研究之后 他毅然决定考天大的化院来挑战一下自己 看看一个连苯烷都不会写的人是否可以大跨度考研成功 他做了以下几步 1 坐火车到天
  • Sublime Text查找&替换

    查找 替换 Finding Replacing Sublime Text提供了强大的查找 和替换 功能 为了提供一个清晰的介绍 我将Sublime Text的查找功能分为快速查找 标准查找和多文件查找三种类型 快速查找 替换 多数情况下 我
  • EasyExcel读取多个Sheet页数据

    使用EasyExcel一次性读取多个sheet页 通过EasyExcel readSheet方法指定读取sheet页的下标 这里的sheet下标是从0开始的 可通过headRowNumber指定从哪一行开始读取 下标也是从0开始 如果表头是
  • 【Antlr】Antlr API 简介

    1 概述 上一篇文章 Antlr Antlr 对 XML 进行词法分析和语法分析 antlr包结构介绍 以及简单的api解释 名称 解释 org antlr v4 runtime 该包包含了最常用的类和接口 例如与输入流 字符和词法符号缓冲
  • qiankun前端微服务框架

    目录 一 须知 二 主应用配置 2 1 main js 2 2 app vue 三 微应用配置 3 1 注册 3 1 1 vue config js配置 3 1 2 新增文件 publicPath js 3 1 3 不同微应用vue版本的m
  • 智慧农业的特点

    自动灌溉土壤 由于缺乏淡水 必须明智地使用提供给我们的水 放置传感器来检测土壤中的水分将有效利用水并提高作物产量 该系统由一个水泵组成 它根据传感器提供的有关湿度 温度和湿度的数据喷水 它也有助于节水 土壤养分数据 土壤提供作物生长所需的养
  • Linux文件权限查看与修改

    Linux文件的权限 linux文件的权限可以分为四类 可读 可写 可执行 没有权限 分别用字符r w x 表示 2 用户与用户组 Linux是一个多用户多任务的操作系统 可以通过用户和用户组来更好的控制文件的权限 每个文件都有一个拥有者
  • Automatically Correcting Large Language Models

    本文是大模型相关领域的系列文章 针对 Automatically Correcting Large Language Models Surveying the landscape of diverse self correction str
  • 如何制作一个成功的超市购物小程序

    随着互联网的普及和移动支付的便捷性 越来越多的消费者选择在网上购物 这也促使越来越多的商家开始搭建自己的小程序商城 对于超市便利店来说 拥有一个便捷 易用的小程序商城能够吸引更多的消费者 提高销售效率 那么如何快速搭建一个超市便利店小程序呢
  • Java异常处理的十个建议,希望对大家有帮助~

    一 尽量不要使用e printStackTrace 而是使用log打印 反例 try do what you want catch Exception e e printStackTrace 正例 try do what you want
  • 计算机考研各个院校自主命题吗,2014考研哪些高校计算机考研是自主命题?

    最佳答案 已确定自主命题的高校 1 哈尔滨工业大学 考试科目 数据结构 计算机组成原理 2 南京大学 考试科目 同统考科目 3 南京大学软件学院 考试科目 数据结构 软件工程 操作系统和计算机网络 4 东南大学 考试科目 数据结构 计算机组
  • html中写接口调用数据,jQuery+Ajax+js实现请求json格式数据并渲染到html页面操作示例...

    本文实例讲述了jQuery Ajax js实现请求json格式数据并渲染到html页面操作 分享给大家供大家参考 具体如下 1 先给json格式的数据 id 1 name stan id 2 name jack id 3 name lucy
  • 合宙Air105

    扩展阅读 合宙Air105 fatfs io操作 扩展 SPI 可调功放 I2C SPI toHex os remove LuatOS SOC接口 官方demo 学习 15 1 fatfs文件系统 打酱油的工程师的博客 CSDN博客 合宙A