OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 6511|回复: 4

怎么找SD卡中的特定的数据

[复制链接]

8

主题

25

帖子

0

精华

初级会员

Rank: 2

积分
104
金钱
104
注册时间
2020-8-13
在线时间
20 小时
发表于 2021-6-6 19:31:42 | 显示全部楼层 |阅读模式
5金钱
我往SD卡中写时间和其他数据,1分钟写一次如:21年6月1日0时0分--其他数据--           21年6月1日0时1分--其他数据--   
      21年6月1日0时2分--其他数据--
现在我想定位到具体的时间数据然后读出来后面的数据,比如我想在SD卡中定位到21年6月1日0时0分然后把后面的数据读出来。



现在想到的是用f_lseek函数从最开始把一段数据存进数组然后再用字符串比较,没有的话再f_lseek下一段数据,直到在数组找到时间,把后面的数据读出来。
请问还有其他的方法可以查找SD卡中一段特定数据的吗。

最佳答案

查看完整内容[请看2#楼]

关键在你的数据格式定义,如果数据格式做的好,找起来就很简单,如果数据格式做的不好,找起来就麻烦。比如如果你的其他数据是固定长度,这样就很好找了,只要根据时间,计算一下数据起始位置,一下就能找到。不然用lseek,找半天都不一定能找到。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165516
金钱
165516
注册时间
2010-12-1
在线时间
2116 小时
发表于 2021-6-6 19:31:43 | 显示全部楼层
关键在你的数据格式定义,如果数据格式做的好,找起来就很简单,如果数据格式做的不好,找起来就麻烦。比如如果你的其他数据是固定长度,这样就很好找了,只要根据时间,计算一下数据起始位置,一下就能找到。不然用lseek,找半天都不一定能找到。
回复

使用道具 举报

8

主题

25

帖子

0

精华

初级会员

Rank: 2

积分
104
金钱
104
注册时间
2020-8-13
在线时间
20 小时
 楼主| 发表于 2021-6-7 09:32:01 | 显示全部楼层
正点原子 发表于 2021-6-7 01:40
关键在你的数据格式定义,如果数据格式做的好,找起来就很简单,如果数据格式做的不好,找起来就麻烦。比如 ...

原子哥你的意思是不是如果我把数据格式固定,那么我找到SD卡中开头的时间,后面要找的时间在哪个位置就可以直接计算出来,不用一个个的去lseek对比,是吗
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165516
金钱
165516
注册时间
2010-12-1
在线时间
2116 小时
发表于 2021-6-8 01:39:52 | 显示全部楼层
deardoctor 发表于 2021-6-7 09:32
原子哥你的意思是不是如果我把数据格式固定,那么我找到SD卡中开头的时间,后面要找的时间在哪个位置就可 ...

是的,比如你固定一次数据是128字节
那么每次写入就是128字节
第一次写入是时间0,128字节
第二次写入是时间1,128字节
第三次写入是时间2,128字节
是不是很好找?
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

4

主题

83

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
205
金钱
205
注册时间
2019-11-12
在线时间
77 小时
发表于 2021-6-8 08:29:45 | 显示全部楼层
内存管理,取决于你的应用需求。如果数据段长度不固定,可以将长度信息包含近信息表。信息表格式固定,每次需要读数据就去信息表里查询起始地址和长度。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-5-22 18:54

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表