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

    文章

    6121

    浏览量

    113145
  • 合宙通信
    +关注

    关注

    0

    文章

    148

    浏览量

    2377
  • Air105
    +关注

    关注

    0

    文章

    48

    浏览量

    424
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    基于SHA105 CryptoAuthentication™芯片的硬件安全设计指南

    用于对称身份验证用例的主机侧,可提供安全密钥存储。该IC还可通过CheckMAC操作验证附件/一次性安全设备的MAC操作。SHA105身份
    的头像 发表于 10-11 10:51 365次阅读
    基于SHA<b class='flag-5'>105</b> CryptoAuthentication™芯片的硬件安全设计指南

    实战Air780EPM:构建4G共享网关,服务WiFi与有线设备!

    通过Air780EPM开发板,我们可以轻松实现4G网络作为数据出口,为周边的WiFi设备和以太网设备提供互联网共享,适用于移动办公、远程部署等场景。 、多网融合概述   Air780
    的头像 发表于 09-30 16:03 863次阅读
    实战<b class='flag-5'>Air</b>780EPM:构建4G共享网关,服务WiFi与有线设备!

    烧录工具操作教程:新手也能快速掌握~

    烧录工具看似复杂,其实操作很简单!现在就为你奉上清晰明了的使用说明,即使是新手也能迅速掌握。 本文就以 Air780EPM 开发板为例,演示烧录工具的使用步骤。   、生成量产
    的头像 发表于 09-26 19:20 411次阅读
    烧录工具<b class='flag-5'>操作</b>教程:新手也能快速掌握~

    Air8101多网融合战略升级:Air780EPM模块助力4G联网落地

    应用迈向新高度。 本文将分享Air8101核心通过外挂Air780EPM整机开发板,实现4G联网的功能示例。   、硬件准备工作   1
    的头像 发表于 06-23 16:53 364次阅读
    <b class='flag-5'>Air</b>8101多网融合战略升级:<b class='flag-5'>Air</b>780EPM模块助力4G联网落地

    解锁CAN接口开发高效路径!五个核心要点一次讲透

    高效开发CAN接口,关键在于把握协议基础、硬件适配、错误管理、性能优化与调试五大核心要点。下面将逐剖析每个环节的技术细节与实践方法,助力开发者快速突破难点,实现可靠通信。
    的头像 发表于 06-23 16:08 966次阅读
    解锁CAN接口<b class='flag-5'>开发</b>高效路径!五个核心要点<b class='flag-5'>一次</b>讲透

    多功能+高扩展能力加持,Air8000开发板最新资料

    ”,尤其适合需要通信、控制、数据采集的场景,如:远程监控、智能终端等。 开发板主要配置 Air8000开发板基于Air8000多功能工业
    的头像 发表于 06-09 14:18 503次阅读
    多功能+高扩展能力加持,<b class='flag-5'>Air</b>8000<b class='flag-5'>开发板</b>最新资料

    搭载OpenHarmony操作系统,视美泰SC-3568HA开发板免费试用

    : 10块   更多热点文章阅读 基于平头哥TH1520芯片,润开鸿HH-SCDAYU800A开发板免费试用 RISC-V开发板深度评测!顶级开发板免费
    的头像 发表于 06-05 16:45 1008次阅读
    搭载OpenHarmony<b class='flag-5'>操作</b>系统,视美泰SC-3568HA<b class='flag-5'>开发板</b>免费<b class='flag-5'>试用</b>

    技术篇——Air8000开发板站式满足多功能高扩展开发需求!

    朋友们,Air8000开发板“多功能集成+高扩展性”,尤其适合需要通信、控制、数据采集的场景,如:远程监控、智能终端等。 开发板主要配置 Air
    的头像 发表于 06-04 15:59 438次阅读
    技术篇——<b class='flag-5'>Air</b>8000<b class='flag-5'>开发板</b>,<b class='flag-5'>一</b>站式满足多功能高扩展<b class='flag-5'>开发</b>需求!

    篇带你搞定!Air8101:物联网设备AirKiss配网方案

    Air8101开发板AirKiss配网示例  下文以Air8101开发板为例,演示AirKiss配网实操要点。 此配网方式极为简单,使用示例源码将
    的头像 发表于 05-27 11:09 507次阅读
    <b class='flag-5'>一</b>篇带你搞定!<b class='flag-5'>Air</b>8101:物联网设备AirKiss配网方案

    【评测试用】合众HZ-T536开发板免费试用体验

    【评测试用】合众HZ-T536开发板免费试用体验
    的头像 发表于 05-27 08:05 678次阅读
    【评测<b class='flag-5'>试用</b>】合众HZ-T536<b class='flag-5'>开发板</b>免费<b class='flag-5'>试用</b>体验

    Air8101革新物联网配网:AirKiss方案让设备连接更智能!

    Air8101开发板AirKiss配网示例  下文以Air8101开发板为例,演示AirKiss配网实操要点。 此配网方式极为简单,使用示例源码将
    的头像 发表于 05-26 13:12 514次阅读
    <b class='flag-5'>Air</b>8101革新物联网配网:AirKiss方案让设备连接更智能!

    闪电入门!支持CAN和以太网,开发板最新资料看这篇!

    .com/air780epm/product/shouce/   、CAN接口电路参考设计 Air780EPM开发板及参考设计,采用的是川土微CAN收发器芯片。 川土微CAN收发器芯
    的头像 发表于 04-01 15:44 468次阅读
    闪电入门!支持CAN和以太网,<b class='flag-5'>开发板</b>最新资料看这篇!

    深度解析——使用Luatools工具烧录个具体的项目到Air780EPM核心中!

    本篇文章重点介绍如何使用Luatools工具烧录个具体的项目到Air780EPM开发板中。 、准备好项目文件  
    的头像 发表于 03-25 15:06 601次阅读
    深度解析——使用Luatools工具烧录<b class='flag-5'>一</b>个具体的项目到<b class='flag-5'>Air</b>780EPM核心<b class='flag-5'>板</b>中!

    Air8000工业引擎:多IO多功能,即将量产

    科技近日宣布,其工业引擎Air8000即将进入量产阶段。这款引擎集成了4G、Wi-Fi、BLE、GNSS、Gsensor及电源管理等多项功能,专为工业应用而设计,展现了强大的场景解决能力
    的头像 发表于 01-07 14:56 2873次阅读

    短消息(sms)解析 Air724UG低功耗模组软件指南

    本指南教你如何用 Air724 开发板,使用 sms 功能,并通过日志观察实验结果。
    的头像 发表于 12-11 09:28 1300次阅读
    短消息(sms)解析  <b class='flag-5'>Air</b>724UG低功耗模组软件指南