0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

【合宙Air105开发板试用体验】在Air105上,一次搞懂openluat的基础文件操作

开发板试用精选 来源:开发板试用 作者:电子发烧友论坛 2022-12-02 15:10 次阅读
本文来源电子发烧友社区,作者:HonestQiao, 帖子地址:https://bbs.elecfans.com/jishu_2282703_1_1.html

Air105使用的是openluat,给我们提供了非常丰富的文件操作功能,今天我们就一次搞清楚基础的文件操作方式。


一、文件系统
openluat上的文件系统,分为如下几种:
poYBAGKNBrSAMpEJAAMe9gmoVKU104.png

注意,luadb下的文件,是只读的。
openluat中的文件操作对象,可以使用内置的Flash,也可以使用SPI Flash,还可以使用SD卡,本文的演示,使用的是内置的Flash。


二、文件操作方式
当前支持的常用文件操作方式,则分为如下几种:
  • io:普通io方式操作文件
  • nvm:ini方式操作的lua配置文件
  • fdb:kv方式操作数据,刷机也不会清除


三、io文件操作
io文件操作,是最基础的文件操作方式。
io文件操作的基本指令如下:
1. 打开文件:如果打开失败,则f为空


  1. local f = io.open("/文件名", "标志位")
复制代码

可供使用的标志位如下:
pYYBAGKM-g-Ac_T5AAN28LyjcQo116.png

通常使用中:
如果要打开文件读取数据,则标志位使用r或者rb;
如果要打开文件写入数据,则标志位使用w或者wb,注意会清空文件
如果要打开文件追加数据,则标志位使用a或者ab

2. 读取数据:


  1. -- 读取首行
复制代码


3. 写入数据:


  1. f:write(tostring(data))
复制代码

注意写入文件的时候,写入的是字符串。而读取的时候,再根据实际情况进行解析。

4. 关闭文件:


  1. f:close()
复制代码


文件操作部分的实例,可以查看Air105的demo中的fs/Air105/main.lua:



复制代码




四、nvm操作
openluat的nvm操作,实际上是对io操作的一个特殊封装。
通常于存储配置,因为其数据存储必须是一个lua配置文件,样例如下:


  1. --存储默认数据
  2. --必须return一个table
  3. return {
  4. a=1,
  5. b=2
  6. }
复制代码

这样的一个配置文件,是可以在lua脚本中,直接require的。
如果要读取值,则使用nvm.get("a")
如果要设置值,则使用nvm.set('a',1)
需要注意的是,只能操作config.lua中存在的key,否则出错。存在的key,其对应的value也不能为空,否则也会出错。
务必要提醒的是,因为每次修改后,都会整个配置数据一起保存,所以只适合较少配置数据的情况,不适合较多数据的设置读取。数据较多的情况,可以直接使用io文件操作。

nvm的具体操作,可以查看Air105的demo中的nvm/main.lua:


  1. -- LuaTools需要PROJECT和VERSION这两个信息
复制代码

需要注意的是,nvm.set(),默认的配置文件config.lua的内容,是不会发生变化的,需要用nvm.get()才能得到最新的值。
其具体处理的实际逻辑,可以查看nvm/nvm.lua了解;其中确保了即使断电,也不会造成配置数据丢失的逻辑。


五、fdb数据操作
openluat的还提供了一个简单的kv操作库fdb,可通过fdb.kv_ge和tfdb.kv_set来进行读写。
如果熟悉memcached或者redis的同学,对这个操作就会比较熟悉。
fdb存储的数据,刷机的时候,也不会丢失,除非主动删除对应的key。
fdb的主要操作指令如下:


  1. -- 初始化
复制代码

使用fdb.kv_set的时候,可以写入不同类型的数据,读取的时候,也会保持类型。
需要注意的是,fdb存储的数据,也不能使用空值。但读取不存在的key,则返回空值。
fdb基于flashdb实现的,具体实现逻辑,可以查看:https://gitee.com/openLuat/LuatOS/tree/master/components/flashdb/

fdb的具体操作,可以查看Air105的demo中的fdb/main.lua:

  1. -- LuaTools需要PROJECT和VERSION这两个信息
复制代码



总的来说,通常的文件操作,使用io文件操作,配置类的数据,使用nvm操作,而kv数据的存储,可以使用fdb。
例如:
如果需要存储图片等数据,或者读取文件内容进行分析之类的,可以用io文件操作。
如果是可以被用户修改的配置,可以用nvm操作。
如果是一个类似sn之类的数据,则可以考虑使用fdb。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 开发板
    +关注

    关注

    25

    文章

    5078

    浏览量

    97671
  • 合宙通信
    +关注

    关注

    0

    文章

    148

    浏览量

    1765
  • Air105
    +关注

    关注

    0

    文章

    48

    浏览量

    305
收藏 人收藏

    评论

    相关推荐

    Air780EP之RC522开发板,你了解吗?

    ​本文讲解Air780EP开发板RC522实例。 本文档适用于Air780EP开发板; 关联
    的头像 发表于 11-03 08:21 257次阅读
    <b class='flag-5'>Air</b>780EP之RC522<b class='flag-5'>开发板</b>,你了解吗?

    干货分享:Air780E开发板如何使用?

    、概述 CORE-AIR780E 开发板通信推出的基于 Air780E 模组所
    的头像 发表于 10-25 17:46 324次阅读
    干货分享:<b class='flag-5'>Air</b>780E<b class='flag-5'>开发板</b>如何使用?

    如何使用Air780E开发板?看这篇就够了!

    、综述 CORE-AIR780E 开发板通信推出的基于 Air780E 模组所
    的头像 发表于 10-23 17:07 445次阅读
    如何使用<b class='flag-5'>Air</b>780E<b class='flag-5'>开发板</b>?看这篇就够了!

    Air780E开发板使用,文解密!

    、概述 CORE-AIR780E 开发板通信推出的基于 Air780E 模组所
    的头像 发表于 10-23 17:05 273次阅读
    <b class='flag-5'>Air</b>780E<b class='flag-5'>开发板</b>使用,<b class='flag-5'>一</b>文解密!

    RNDIS网卡应用看这篇!Air780EP低功耗4G模组AT开发示例

    ** ​ 1.1 硬件准备 EVB_Air780EP开发板套,包括天线、SIM卡; USB线 WIN10以上PC电脑 1.2 软件准
    的头像 发表于 09-30 06:59 600次阅读
    RNDIS网卡应用看这篇!<b class='flag-5'>合</b><b class='flag-5'>宙</b><b class='flag-5'>Air</b>780EP低功耗4G模组AT<b class='flag-5'>开发</b>示例

    FTP应用看这篇!Air780EP低功耗4G模组AT开发示例

    780EX/Air724UG… **、相关准备工作 ** ​ 1.1 硬件准备 EVB_Air780EP
    的头像 发表于 09-29 09:36 1846次阅读
    FTP应用看这篇!<b class='flag-5'>合</b><b class='flag-5'>宙</b><b class='flag-5'>Air</b>780EP低功耗4G模组AT<b class='flag-5'>开发</b>示例

    低功耗4G模组AIR780EX ——开发板使用说明

    EVB-AIR780EX 开发板通信推出的基于 Air780EX 模组所开发的,包含电源,
    的头像 发表于 09-11 11:55 736次阅读
    <b class='flag-5'>合</b><b class='flag-5'>宙</b>低功耗4G模组<b class='flag-5'>AIR</b>780EX ——<b class='flag-5'>开发板</b>使用说明

    4G模组Air780E开发板使用手册

    开发板Air780E使用说明
    的头像 发表于 09-09 18:22 757次阅读
    <b class='flag-5'>合</b><b class='flag-5'>宙</b>4G模组<b class='flag-5'>Air</b>780E<b class='flag-5'>开发板</b>使用手册

    LuatOS开发板Core_Air780EP使用说明

    Core-Air780EP 开发板通信推出的基于 Air780EP 模组所开发的,包含电源
    的头像 发表于 09-03 17:38 594次阅读
    <b class='flag-5'>合</b><b class='flag-5'>宙</b>LuatOS<b class='flag-5'>开发板</b>Core_<b class='flag-5'>Air</b>780EP使用说明

    低功耗4G模组Air700EAQ——开发板使用说明

    低功耗4G模组Air700EAQ——开发板使用说明
    的头像 发表于 08-30 17:14 1138次阅读
    <b class='flag-5'>合</b><b class='flag-5'>宙</b>低功耗4G模组<b class='flag-5'>Air</b>700EAQ——<b class='flag-5'>开发板</b>使用说明

    LuatOS开发板使用手册——Air700EAQ

    本文详细讲解了Air700EAQ开发板的使用说明。
    的头像 发表于 08-28 14:37 540次阅读
    <b class='flag-5'>合</b><b class='flag-5'>宙</b>LuatOS<b class='flag-5'>开发板</b>使用手册——<b class='flag-5'>Air</b>700EAQ

    LuatOS开发板使用手册——Air700ECQ

    LuatOS开发板使用说明——Air700ECQ
    的头像 发表于 08-23 16:28 594次阅读
    <b class='flag-5'>合</b><b class='flag-5'>宙</b>LuatOS<b class='flag-5'>开发板</b>使用手册——<b class='flag-5'>Air</b>700ECQ

    Air700ECQ硬件设计手册——应用接口1

    Air700ECQ硬件设计手册——应用接口1
    的头像 发表于 08-21 18:46 402次阅读
    <b class='flag-5'>合</b><b class='flag-5'>宙</b><b class='flag-5'>Air</b>700ECQ硬件设计手册——应用接口1

    Air780EP模块——AT指令MQTT接入OneNET开发指南

    过程,Air780EP和MQTT是最佳拍档,让设备互联变得轻松又靠谱。想不想试试这简单又神奇的操作?那就来吧!本文详细讲解了基于Air
    的头像 发表于 08-19 16:40 2303次阅读
    <b class='flag-5'>合</b><b class='flag-5'>宙</b><b class='flag-5'>Air</b>780EP模块——AT指令MQTT接入OneNET<b class='flag-5'>开发</b>指南

    MQTT应用看这篇!Air780EP_LuatOS_MQTT应用指南

    Air780EP 是的低功耗4G模组之,支持LuatOS的脚本二次开发,即使是不太懂技术的老板,也能轻松使用
    的头像 发表于 08-08 17:13 1979次阅读
    MQTT应用看这篇!<b class='flag-5'>合</b><b class='flag-5'>宙</b><b class='flag-5'>Air</b>780EP_LuatOS_MQTT应用指南