OpenEdv-开源电子网

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

FATFS系统中如何换行?f_lseek函数怎么到不了末尾呢

[复制链接]

17

主题

76

帖子

0

精华

新手入门

积分
9
金钱
9
注册时间
2016-6-14
在线时间
30 小时
发表于 2017-8-6 14:38:22 | 显示全部楼层 |阅读模式
4金钱
用RTC 做时间,        可以创建文件,但是创建的文件只有一行。每一次都是文件的第一行覆盖。求解。               

Time_10s=0; sprintf(FileName,"0://%d.%d.%d.txt",calendar.w_year,calendar.w_month,calendar.w_date);// 20170728.txt
f_open (ftemp,FileName,FA_CREATE_ALWAYS|FA_WRITE);         //0x02 FA_WRITE
f_close(ftemp);
                       
sprintf(Datestream,"%d:%d-->   temperature is %d, humidity  is %d;\r\n",calendar.hour,calendar.min,temperature,humidity);
                       
f_open (ftemp,FileName,FA_WRITE);
f_lseek(ftemp,ftemp->fsize);
               
f_write(ftemp,Datestream,strlen(Datestream),&bw);
f_close(ftemp);


最佳答案

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

FA_CREATE_ALWAYS换成FA_OPEN_ALWAYS,要不然会一直新建文件
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

13

主题

63

帖子

0

精华

初级会员

Rank: 2

积分
98
金钱
98
注册时间
2016-11-1
在线时间
50 小时
发表于 2017-8-6 14:38:23 | 显示全部楼层
FA_CREATE_ALWAYS换成FA_OPEN_ALWAYS,要不然会一直新建文件
回复

使用道具 举报

17

主题

76

帖子

0

精华

新手入门

积分
9
金钱
9
注册时间
2016-6-14
在线时间
30 小时
 楼主| 发表于 2017-8-6 16:33:10 | 显示全部楼层
talenthn 发表于 2017-8-6 15:31
FA_CREATE_ALWAYS换成FA_OPEN_ALWAYS,要不然会一直新建文件

恩,在while(1)里,main
while(1)
{
如果时间到了1分钟,存储温湿度 数据,文件存在,就打开存,不存在,就建一个。
if(Time_10s>5)
{
Time_10s=0;
sprintf(FileName,"0://%d.%d.%d.txt",calendar.w_year,calendar.w_month,calendar.w_date);// 20170728.txt
f_open (ftemp,FileName,FA_CREATE_ALWAYS|FA_WRITE);         //0x02 FA_WRITE
f_close(ftemp);
DHT11_Read_Data(&temperature,&humidity);        //¶áè¡ÎÂêa¶èÖμ
sprintf(Datestream,"%d:%d-->   temperature is %d, humidity  is %d;\r\n",calendar.hour,calendar.min,temperature,humidity);
                       
f_open (ftemp,FileName,FA_WRITE);
f_lseek(ftemp,ftemp->fsize);
       
f_write(ftemp,Datestream,strlen(Datestream),&bw);
f_close(ftemp);
}


}
回复

使用道具 举报

17

主题

76

帖子

0

精华

新手入门

积分
9
金钱
9
注册时间
2016-6-14
在线时间
30 小时
 楼主| 发表于 2017-8-6 16:35:43 | 显示全部楼层
1066570234 发表于 2017-8-6 16:33
恩,在while(1)里,main
while(1)
{

这里   f_open (ftemp,FileName,FA_open_ALWAYS|FA_WRITE);这样 组合就可以了吗?
之前确实那样是被覆盖了,只有一句话
回复

使用道具 举报

13

主题

63

帖子

0

精华

初级会员

Rank: 2

积分
98
金钱
98
注册时间
2016-11-1
在线时间
50 小时
发表于 2017-8-7 16:20:42 | 显示全部楼层
1066570234 发表于 2017-8-6 16:35
这里   f_open (ftemp,FileName,FA_open_ALWAYS|FA_WRITE);这样 组合就可以了吗?
之前确实那样是被覆盖 ...

是的,你可以看一下fatfs说明文档,是叫00index_e.html的网页

FA_CREATE_ALWAYS        Creates a new file. If the file is existing, it will be truncated and overwritten.
FA_OPEN_ALWAYS               Opens the file if it is existing. If not, a new file will be created.
回复

使用道具 举报

17

主题

76

帖子

0

精华

新手入门

积分
9
金钱
9
注册时间
2016-6-14
在线时间
30 小时
 楼主| 发表于 2017-8-12 14:49:16 | 显示全部楼层
talenthn 发表于 2017-8-7 16:20
是的,你可以看一下fatfs说明文档,是叫00index_e.html的网页

FA_CREATE_ALWAYS        Creates a new file.  ...

多谢啦啊
回复

使用道具 举报

58

主题

6293

帖子

1

精华

资深版主

Rank: 8Rank: 8

积分
11476
金钱
11476
注册时间
2014-4-1
在线时间
1297 小时
发表于 2017-9-22 09:53:48 | 显示全部楼层
talenthn 发表于 2017-8-7 16:20
是的,你可以看一下fatfs说明文档,是叫00index_e.html的网页

FA_CREATE_ALWAYS        Creates a new file.  ...


也帮到我了,感谢。

回复

使用道具 举报

3

主题

17

帖子

0

精华

初级会员

Rank: 2

积分
96
金钱
96
注册时间
2020-9-30
在线时间
22 小时
发表于 2021-10-13 21:04:32 | 显示全部楼层
为什么我显示没有fsize函数
回复

使用道具 举报

0

主题

8

帖子

0

精华

新手上路

积分
41
金钱
41
注册时间
2020-10-16
在线时间
6 小时
发表于 2022-2-23 10:00:18 | 显示全部楼层
talenthn 发表于 2017-8-6 14:38
FA_CREATE_ALWAYS换成FA_OPEN_ALWAYS,要不然会一直新建文件

谢谢大佬,按你说的测试确实解决了题主的问题...
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-2-28 06:34

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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