Fatfs 在 SD卡 存储2000多个浮点 数组 的问题

2019-12-23 18:34发布

本帖最后由 kalo425 于 2013-11-26 21:04 编辑

       
帮同学弄了个新号,没有啥莫元了。都送给你们
是这样的,我有2000多个浮点数据,需要保存data.x 和 data.y,

----------------------------------------------------------
最开始想保存成csv格式的。
001.jpg (16.08 KB, 下载次数: 0) 下载附件 2013-11-26 20:52 上传
问题1,第二行没分开,在一个格子里面。
问题2,那2000多个数据涅??妈蛋··怎么都是空的。外面文件可以7K呢

  f_puts(" 未处理的光谱数据 ",&file);
    f_lseek(&file,file.fptr);
    f_sync(&file);
        f_puts(" 位移 强度 ",&file);

//,我已经加了 制表符号了,妥妥的, “ ” 位移和强度怎么就都在一个格子里面呢?
=================================================
  1.    for(i=0;i<cnt;i++)
  2.     {
  3.         f_printf(&file, "%.2f %.0f ",pbuf[i].x,pbuf[i].y);
  4.                 printf("%.2f ",pbuf[i].x);
  5.     }
复制代码
然后看这个  格式化输出也不对啊·····都是空的,我加了一句从串口打印,打印出来的都是对的·····
--------------------------------------------------------------------------------------------

后来我保存成txt的,还是不行·····看到那个f_printf(&file, "%.2f %.0f ",pbuf.x,pbuf.y);  了吧
txt文件里面,没有数据,都是这个 .2f  .f····

=============================
看在40块大洋,我的全部家当的面子上,大家帮帮忙
小弟水平有限,请轻喷哈
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
24条回答
skyhu
1楼-- · 2019-12-25 20:25
kalo425 发表于 2013-11-27 10:55
恩,现在我学乖了,不用csv了,用txt格式存储,但是存储的浮点数,全是乱码,肿么办?求助啊 ...

f_printf是不支持浮点类型的,建议用sprintf转换成字符,再写进文件
kalo425
2楼-- · 2019-12-26 01:17
skyhu 发表于 2013-11-27 11:07
f_printf是不支持浮点类型的,建议用sprintf转换成字符,再写进文件

我用sprintf 抓换,然后用 f_write写,还是出错

  1.     for(i=0;i<cnt;i++)
  2.     {
  3.                 sprintf(tempbuf," %.2f %.0f ",pbuf[i].x,pbuf[i].y);//格式化写入字符
  4.         //f_printf(&file, "%.2f %.0f ",pbuf[i].x,pbuf[i].y);
  5.         //f_puts(" ",&file);
  6.         //f_puts(tempbuf,&file);
  7.         f_write(&file,tempbuf,sizeof(tempbuf),&bw); // 这里写入字节个数怎么算?能用sizeof?
  8.         f_lseek(&file, file.fptr);
  9.         f_sync(&file);
  10.                 printf("%.2f ",pbuf[i].y); //从串口打印数据,查看是否存储正确
  11.     }
复制代码

我刚看时用的p_puts  和f_printf 发现都不行,现在用了 f_write也不行。没办法了····
kalo425
3楼-- · 2019-12-26 07:10
 精彩回答 2  元偷偷看……
skyhu
4楼-- · 2019-12-26 11:58
哎,你还是把用到的函数用法看明白再写程序吧,sprint函数会返回这个字符串的长度,没必要sizeof(tempbuf),单步跟踪看下tempbuf的内容,看结果正不正确,搞明白是转换的问题还是写入的问题
luweixuan
5楼-- · 2019-12-26 13:39
本帖最后由 luweixuan 于 2013-11-27 11:35 编辑
kalo425 发表于 2013-11-27 11:11
我用sprintf 抓换,然后用 f_write写,还是出错

  1. f_lseek(&file, file.fptr);
复制代码最好放在循环体里的最前面
并且建议使用下面的语句替换上面的语句
  1. f_lseek(&fsrc_temp, f_size(&fsrc_temp));   // point to the end of a file
复制代码
kalo425
6楼-- · 2019-12-26 14:42
luweixuan 发表于 2013-11-27 11:33
最好放在循环体里的最前面
并且建议使用下面的语句替换上面的语句

恩,谢谢。我去试试

一周热门 更多>