本帖最后由 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);
//,我已经加了 制表符号了,妥妥的, “ ” 位移和强度怎么就都在一个格子里面呢?
=================================================
- for(i=0;i<cnt;i++)
- {
- f_printf(&file, "%.2f %.0f
",pbuf[i].x,pbuf[i].y);
- printf("%.2f ",pbuf[i].x);
- }
复制代码
然后看这个 格式化输出也不对啊·····都是空的,我加了一句从串口打印,打印出来的都是对的·····
--------------------------------------------------------------------------------------------
后来我保存成txt的,还是不行·····看到那个f_printf(&file, "%
.2f %
.0f
",pbuf
.x,pbuf.y); 了吧
txt文件里面,没有数据,都是这个 .2f .f····
=============================
看在40块大洋,我的全部家当的面子上,大家帮帮忙
小弟水平有限,请轻喷哈
首先 1,使用逗号分隔符,
001.jpg (70.41 KB, 下载次数: 0)
下载附件
2013-11-27 18:36 上传
注意那个 逗号 哦;
第二,注意那个sprintf 格式化字符,存在 那个变量,我刚开始定义的是 char *,后来char 数组 char [20] 就好了···哎 ,这个问题折腾死我了
给你看看我修改的f_printf_0()函数
- #include <stdarg.h>
复制代码- // add by user named lux
- int f_printf_0 ( /* Put a formatted string to the file */
- FIL* fil,
- const TCHAR* str,
- ...)
- {
- INT len;
- char buff[512];
-
- va_list args;
- va_start(args,str);
- len = vsnprintf(buff,512,str,args);
- if (len < 0 )
- {
- va_end(args);
- return len;
- }
- len = f_puts ((TCHAR *)buff,fil);
- va_end(args);
-
- return len;
- }
复制代码使用示例:
- void SaveToFile()
- {
- static u8 oldMin=0;
- int r;
- if (oldMin!=RTC_data.Minute)
- {
- oldMin=RTC_data.Minute;
-
- res=f_open(&fsrc_temp,"TEMP.TXT", FA_OPEN_ALWAYS |FA_WRITE); // open file
- if (res==FR_OK) uart_printf("Open Tempture File Succes!
");
- else uart_printf("Open Tempture File Fali!
");
-
- f_lseek(&fsrc_temp, f_size(&fsrc_temp)); // point to the end of a file
-
- r=f_printf_0(&fsrc_temp, "%4d/%02d/%02d %02d:%02d %6.2f
",
- RTC_data.Year,RTC_data.Month,RTC_data.Day,RTC_data.Hour,RTC_data.Minute,RTC_data.Tempture);
- if (r<=0) uart_printf("Save One Tempture Record Fail!
");
- else uart_printf("Save One Tempture Record Succes!
");
-
- res=f_sync (&fsrc_temp); // close file
- f_close(&fsrc_temp);
-
- }
- }
复制代码示例中的文件打开和关闭你最好放到循环体外,我这个是一分钟记录一个数据所以不需要放外面。
当然,你最好使用逗号和换行符进行数据分割; 在数据里面不好处理的,有歧义;
一周热门 更多>