合宙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中如何对数字表求和?

    Lua有内置的吗sum 功能 我似乎找不到一个 我几乎翻遍了文档中的所有地方 或许table sum 或类似的东西 以遵循当前的约定 但由于我找不到它 我不得不实现它 function sum t local sum 0 for k v i
  • C 的哪些部分最可移植?

    我最近读到了 Lua 联合创始人 Luiz H de Figueredo 和 Roberto Ierusalimschy 的采访 他们讨论了 Lua 的设计和实现 至少可以说这是非常有趣的 然而 讨论的一部分让我想起了一些事情 Robert
  • 检查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 userdata:无法同时进行数组访问和方法

    我遇到了这个人的问题 Lua userdata数组访问及方法 https stackoverflow com questions 26970316 lua userdata array access and methods 其中 当我设置用
  • 尝试将 nil 与数字堆栈回溯进行比较?

    我正在通过以下链接玩 Lua https www lua org pil 4 2 html https www lua org pil 4 2 html并对某一点感到困惑 Lua 5 2 4 Copyright C 1994 2015 Lu
  • 安装Lua套接字库

    要么我太累了 要么我瞎了 我想学习 Lua 网络 因此我必须安装socketlib 所以我可以轻松地要求它 但我不知道我应该 要求 哪些文件 例子说 local socket require socket 但正如我所说 如果我使用 我不知道
  • 如何在 emacs lua-mode 中配置缩进?

    完整的 emacs 新手在这里 我在 Ubuntu 上使用 emacs 23 1 1emacs 入门套件 https github com technomancy emacs starter kit 我主要在 lua 模式下工作 安装了pa
  • 如何通过 C API 在自己的环境中执行不受信任的 Lua 文件

    我想通过调用在其自己的环境中执行不受信任的 lua 文件lua setfenv http pgl yoyo org luai i lua setfenv这样它就不会影响我的任何代码 该函数的文档仅解释了如何调用函数 而不解释如何执行文件 目
  • 在Luasocket中,在什么条件下,即使在select告诉它可以安全读取之后,accept调用也可以阻塞?

    卢阿索基特select http w3 impa br diego software luasocket socket html select函数应该告诉何时可以在不阻塞的情况下读取套接字 它显然也可以用来告诉服务器套接字何时准备好接受新连
  • 关闭 Löve2D 中的抗锯齿功能

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

    首先我要提的是我对 Lua 真的很陌生 如果你认为我的问题太愚蠢 请耐心等待 这是我的要求 我需要使用 HMAC sha256 进行 Lightroom 插件开发 因为我使用它是为了安全 我试图使用这个但没有运气https code goo
  • 在 Lua 中只归档一次

    我想知道是否有一种方法可以只执行一次 lua 文件 并且后续尝试执行该 lua 文件将导致无操作 我已经考虑过做一些类似于 C header 的 if else endif 技巧的事情 我想知道是否有一个标准方法来实现这一点 James w
  • 在Windows上使用gcc 5.3.0编译Lua 5.2.4模块

    我需要用 gcc 5 3 0 编译 Lua 5 2 4 模块 在 Windows 上 在此之前 我按照以下步骤构建 Lua 5 2 4 gcc c DLUA BUILD AS DLL c ren lua o lua obj ren luac
  • Lua(命令行)执行后保持打开状态

    我已经广泛寻找这个但我似乎找不到它 有什么方法可以执行Lua通过双击脚本 在中执行它 Lua Command Line 并在执行后保持打开状态 例如 print Hello World 该代码可以编译并运行 但是如果我双击hello lua
  • 在 Lua/LuaFileSystem 中创建一个新文件

    我已经查看了 Lua 和 LuaFileSystem 文档 但尚未找到创建新文件的方法 我也在这里四处寻找 但目的相同 请注意 我正在寻找的解决方案必须与操作系统无关 以确保可移植性 但我很高兴针对不同的系统获得不同的答案 示例 将 Hel
  • 将值存储在 lua 的 userdata 对象中

    我想做的是这样的 object foo bar print object foo 其中 对象 是用户数据 我已经用谷歌搜索了一段时间 使用关键字 newindex 和 lua rawset 但我找不到任何可以实现我想要的功能的示例 我想用
  • 构建自动化和 MySQL Workbench 脚本:正向工程师 SQL CREATE SCRIPT

    我目前正在研究自动化软件构建过程 其中包括 MySQL Workbench 中定义的数据库架构 使用 Workbench 的脚本编写功能 我想打开一个 Workbench 文档并将其架构导出为 SQL CREATE 脚本 我想知道是否有一个
  • 使用 luasocket smtp 和 ssl 发送电子邮件

    我一直在尝试使用帖子中描述的代码发送电子邮件 lua使用gmail账户发送邮件 https stackoverflow com questions 11070623 lua send mail with gmail account 代码由米

随机推荐

  • 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