找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2364|回复: 9
收起左侧

关于FATFS文件系统指定地址读取CSV格式的分析

[复制链接]
ID:397211 发表于 2022-4-18 16:00 | 显示全部楼层 |阅读模式
50黑币
最近搞了FATFS文件系统,有关于CSV格式保存以及读取相关问题。CSV保存起来容易,使用FATFS怎么来指定地址来进行读却困扰本人很多天,不知道大家是否有好的方法进行读取?需要读取的数据格式如下:
还请各位大佬指导一下

51hei.png
之前有考虑过使用TXT方法,TXT与CSV都可以使用。

使用过f_read()加动态内存一次性读取TXT方法,这样的话需要非常大的RAM,如果我的TXT很大的话就读取不全。不知道各位大佬有更加好的方法不

最佳答案

查看完整内容

我昨天理解错你要求了。我认为有个简单办法,CSV每行是“回车”结尾,你一个一个读,读到它就是一行,但这个有点慢;我建议的是,因为你每行是一样长的,你就直接写个struct,然后(这个构造的长度加一)*行数就是位置啊(加一因为有个回车)。
回复

使用道具 举报

ID:844772 发表于 2022-4-18 16:00 | 显示全部楼层
保持微笑 发表于 2022-4-20 08:20
是不知道怎么读取出来,不知道怎么走指定的位置开始读取,比如我要走第20行,然后就只读取第20行的内容就 ...

我昨天理解错你要求了。我认为有个简单办法,CSV每行是“回车”结尾,你一个一个读,读到它就是一行,但这个有点慢;我建议的是,因为你每行是一样长的,你就直接写个struct,然后(这个构造的长度加一)*行数就是位置啊(加一因为有个回车)。
回复

使用道具 举报

ID:123289 发表于 2022-4-19 09:11 | 显示全部楼层
我是用excel读、写、编辑CVS文件的。
回复

使用道具 举报

ID:397211 发表于 2022-4-19 10:47 | 显示全部楼层
yzwzfyz 发表于 2022-4-19 09:11
我是用excel读、写、编辑CVS文件的。

我现在的问题是,我的单片机要将这个CSV数据读取出来,EXCE电脑端啊,我是要下位机也要读取出来啊
回复

使用道具 举报

ID:844772 发表于 2022-4-19 11:38 | 显示全部楼层
你目前问题是它过度消耗单片机内存吧?主要原因是按字符读取的,没改成数字存储,csv好处是定长了,应该每读取一行,就尽量转成数字后再挂到链表上,剔除没用的单位等,就会节约很多内存了。
回复

使用道具 举报

ID:123289 发表于 2022-4-19 15:19 | 显示全部楼层
1、研透CVS文件的格式
2、规划一个缓冲缓存一两行数。(用于暂存一行数据,并转换成存储格式,以便写入存储区)
3、规划一个存储存区,用于保存所有CVS文件,但格式可能不同(由你定)。
4、规划存储格式。想节省空间,程序就复杂。程序简单了,存储空间损耗就大。
这个最重要!体现你的建仓能力。例如:日期时间如何存储,打算用几个字节存它,年存何处?秒存何处?用10进制还是16进制?照本宣科来什么存什么?要不要考虑节省空间?如何区分一个数据的开始与结束?……
这些你要事先写个【协议】,以便后期使用时准确解之。
【协议】妥了,再写程序就胸有成竹了。

回复

使用道具 举报

ID:397211 发表于 2022-4-20 08:20 | 显示全部楼层
glinfei 发表于 2022-4-19 11:38
你目前问题是它过度消耗单片机内存吧?主要原因是按字符读取的,没改成数字存储,csv好处是定长了,应该每 ...

是不知道怎么读取出来,不知道怎么走指定的位置开始读取,比如我要走第20行,然后就只读取第20行的内容就可以了
回复

使用道具 举报

ID:397211 发表于 2022-4-20 08:23 | 显示全部楼层
yzwzfyz 发表于 2022-4-19 15:19
1、研透CVS文件的格式
2、规划一个缓冲缓存一两行数。(用于暂存一行数据,并转换成存储格式,以便写入存 ...

按照大佬的说法不是没什么道理,储存的CSV大小无所谓的,至于什么数据是必须这样存,有要求的
回复

使用道具 举报

ID:397211 发表于 2022-4-21 14:44 | 显示全部楼层
glinfei 发表于 2022-4-18 16:00
我昨天理解错你要求了。我认为有个简单办法,CSV每行是“回车”结尾,你一个一个读,读到它就是一行,但 ...

实际上这个办法我早已经尝试,我最后用的也是全部读取查找序号的方法搞定的,就是读取到比较大一点的数据的时候就会慢一点,同时也非常感谢你的答复
回复

使用道具 举报

ID:844772 发表于 2022-4-21 16:19 | 显示全部楼层
保持微笑 发表于 2022-4-21 14:44
实际上这个办法我早已经尝试,我最后用的也是全部读取查找序号的方法搞定的,就是读取到比较大一点的数据 ...

不用真的都读一遍啊,你的格式碰巧就是定长的,移到相关的那一行就行啦,不过肯定比内存慢得多了。
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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