OpenEdv-开源电子网

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

在通过FATFS文件系统把数据存储到SD卡的过程中,怎样能让存储的数据更加合理清晰,有条理性

[复制链接]

42

主题

153

帖子

0

精华

初级会员

Rank: 2

积分
141
金钱
141
注册时间
2017-10-30
在线时间
51 小时
发表于 2018-5-31 09:59:28 | 显示全部楼层 |阅读模式
10金钱
     比如就像,我想把采集到的一些传感器的信息存储到SD卡中,并且伴随着时间信息。就像最上面一行是标题(时间,温度,湿度等),其次对应的标题的下面是采集的信息。我应该运用那些函数 ,让这些信息有序的存储到SD卡中。望能得到大家的帮助,谢谢大家。


最佳答案

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

你要是存的是字符,就直接f_printf 吧 直接能格式化输出到sd //文件头 f_printf(file,"%10s %6s %6s %6s %6s %6s %6s\r\n","haomiao","ax","ay","az","gx","gy","gz"); f_lseek(file,file->fsize); f_printf(file,"%10d %6d %6d %6d %6d %6d %6d\r\n",tly_data.data_struct.time_ms,tly_data.data_struct.ax,tly_data.data_struct.ay,tly_data.data_struct.az,tly_data.data_struct.gx,tly_data.data_struct.gy,tly_data.d ...
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

51

主题

2166

帖子

2

精华

论坛元老

Rank: 8Rank: 8

积分
10653
金钱
10653
注册时间
2017-4-14
在线时间
2780 小时
发表于 2018-5-31 09:59:29 | 显示全部楼层
bufangqi 发表于 2018-7-3 15:33
您好,可否能说一下具体执行的思路呢?知识储备有点不够。谢谢、

你要是存的是字符,就直接f_printf 吧 直接能格式化输出到sd
//文件头  f_printf(file,"%10s %6s %6s %6s %6s %6s %6s\r\n","haomiao","ax","ay","az","gx","gy","gz");

f_lseek(file,file->fsize);
f_printf(file,"%10d %6d %6d %6d %6d %6d %6d\r\n",tly_data.data_struct.time_ms,tly_data.data_struct.ax,tly_data.data_struct.ay,tly_data.data_struct.az,tly_data.data_struct.gx,tly_data.data_struct.gy,tly_data.data_struct.gz);
                                                                               
回复

使用道具 举报

42

主题

153

帖子

0

精华

初级会员

Rank: 2

积分
141
金钱
141
注册时间
2017-10-30
在线时间
51 小时
 楼主| 发表于 2018-5-31 11:00:04 | 显示全部楼层
自己又实验了一下,自己通过数组,让自己需要存储的数据在数组里设计好,最后加上一个换行符。这样显示的数据就和相应的标题对齐了。不知道我这样做的对不对,有不同想法的欢迎交流。
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165516
金钱
165516
注册时间
2010-12-1
在线时间
2116 小时
发表于 2018-6-1 01:56:47 | 显示全部楼层
这个用数据库就高大上。。。
不然的 话,自己编个规范也是可以的。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

33

主题

1628

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
6662
金钱
6662
注册时间
2015-8-25
在线时间
1035 小时
发表于 2018-6-1 08:01:33 | 显示全部楼层
定义一个结构体数组可以解决你的问题,结构体本来就可以看做数据库中的一条记录,你用结构体数组不就是数据库了
He who fights with monsters should look to it that he himself does not become a monster, when you gaze long into the abyss, the abyss also gazes into you.
过于执着就会陷入其中,迷失自己,困住自己。
回复

使用道具 举报

42

主题

153

帖子

0

精华

初级会员

Rank: 2

积分
141
金钱
141
注册时间
2017-10-30
在线时间
51 小时
 楼主| 发表于 2018-6-1 21:20:53 | 显示全部楼层
正点原子 发表于 2018-6-1 01:56
这个用数据库就高大上。。。
不然的 话,自己编个规范也是可以的。

嗯嗯,谢谢原子哥
回复

使用道具 举报

42

主题

153

帖子

0

精华

初级会员

Rank: 2

积分
141
金钱
141
注册时间
2017-10-30
在线时间
51 小时
 楼主| 发表于 2018-6-1 21:21:06 | 显示全部楼层
szczyb1314 发表于 2018-6-1 08:01
定义一个结构体数组可以解决你的问题,结构体本来就可以看做数据库中的一条记录,你用结构体数组不就是数据 ...

谢谢你
回复

使用道具 举报

42

主题

153

帖子

0

精华

初级会员

Rank: 2

积分
141
金钱
141
注册时间
2017-10-30
在线时间
51 小时
 楼主| 发表于 2018-6-30 08:39:19 | 显示全部楼层
szczyb1314 发表于 2018-6-1 08:01
定义一个结构体数组可以解决你的问题,结构体本来就可以看做数据库中的一条记录,你用结构体数组不就是数据 ...

您好,我想再问您一下,每个传感器数据我用一个结构体数组表示,但是如何将他们一起有序的存储到SD卡中呢?也是把各个结构体数组中的内容按顺序重新拷贝到一个新的数组中吗,然后把这个数组存储到SD卡中。
回复

使用道具 举报

51

主题

2166

帖子

2

精华

论坛元老

Rank: 8Rank: 8

积分
10653
金钱
10653
注册时间
2017-4-14
在线时间
2780 小时
发表于 2018-6-30 09:02:12 | 显示全部楼层
bufangqi 发表于 2018-6-30 08:39
您好,我想再问您一下,每个传感器数据我用一个结构体数组表示,但是如何将他们一起有序的存储到SD卡中呢 ...

共同体打包下结构体,或者直接取地址也可以
回复

使用道具 举报

42

主题

153

帖子

0

精华

初级会员

Rank: 2

积分
141
金钱
141
注册时间
2017-10-30
在线时间
51 小时
 楼主| 发表于 2018-7-3 15:17:57 | 显示全部楼层
275891381 发表于 2018-6-30 09:02
共同体打包下结构体,或者直接取地址也可以

你好,谢谢你,也抱歉这么久才回复你。
回复

使用道具 举报

42

主题

153

帖子

0

精华

初级会员

Rank: 2

积分
141
金钱
141
注册时间
2017-10-30
在线时间
51 小时
 楼主| 发表于 2018-7-3 15:33:36 | 显示全部楼层
275891381 发表于 2018-6-30 09:02
共同体打包下结构体,或者直接取地址也可以

您好,可否能说一下具体执行的思路呢?知识储备有点不够。谢谢、
回复

使用道具 举报

42

主题

153

帖子

0

精华

初级会员

Rank: 2

积分
141
金钱
141
注册时间
2017-10-30
在线时间
51 小时
 楼主| 发表于 2018-7-3 15:42:19 | 显示全部楼层
275891381 发表于 2018-7-3 15:38
你要是存的是字符,就直接f_printf 吧 直接能格式化输出到sd
//文件头  f_printf(file,"%10s %6s %6s %6 ...

嗯嗯,我先学习一下,有什么不懂的再请教你。谢谢你。
回复

使用道具 举报

42

主题

153

帖子

0

精华

初级会员

Rank: 2

积分
141
金钱
141
注册时间
2017-10-30
在线时间
51 小时
 楼主| 发表于 2018-7-3 22:23:58 | 显示全部楼层
275891381 发表于 2018-7-3 15:38
你要是存的是字符,就直接f_printf 吧 直接能格式化输出到sd
//文件头  f_printf(file,"%10s %6s %6s %6 ...

您好,我按照您说的方法试了一下,挺好的。但是有一个问题还想向您请教下。f_printf()是以‘\0’为结束的标志,如果我的数组里面是固定的字符串,比如“22.653       ”我可以通过空格调整这个字符串的长度,使得两个数组之间能有一定的间隔。
我采集的是多个传感器的数据,把它们分别存储到不同的数组中,采集的数据是实时变化的。然后在把它转化成字符串形式的数组。因为f_printf()是以‘\0’为结束的标志,我不知道用什么样的方法让读到SD卡的数据之间有一定的间隔。
不知道你有什么好的建议没?麻烦了,谢谢你。
回复

使用道具 举报

51

主题

2166

帖子

2

精华

论坛元老

Rank: 8Rank: 8

积分
10653
金钱
10653
注册时间
2017-4-14
在线时间
2780 小时
发表于 2018-7-3 23:45:40 | 显示全部楼层
bufangqi 发表于 2018-7-3 22:23
您好,我按照您说的方法试了一下,挺好的。但是有一个问题还想向您请教下。f_printf()是以‘\0’为结束的 ...

%6d 的6就是这个数据占6位呀  ,你百度下printf格式化输出吧,一样的
回复

使用道具 举报

42

主题

153

帖子

0

精华

初级会员

Rank: 2

积分
141
金钱
141
注册时间
2017-10-30
在线时间
51 小时
 楼主| 发表于 2018-7-4 09:11:42 | 显示全部楼层
275891381 发表于 2018-7-3 23:45
%6d 的6就是这个数据占6位呀  ,你百度下printf格式化输出吧,一样的

这样啊!谢谢你,这么晚回信。
回复

使用道具 举报

1

主题

3

帖子

0

精华

新手入门

积分
15
金钱
15
注册时间
2019-12-12
在线时间
3 小时
发表于 2019-12-12 16:08:38 | 显示全部楼层
楼主你好,我也遇到同样的问题,请问你的问题解决了吗?我加不了好友,能否加个企鹅,交流一下(有偿)1003518679
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-5-21 22:50

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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