OpenEdv-开源电子网

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

文件写入东西关闭后,不能再次打开

[复制链接]

3

主题

14

帖子

0

精华

新手上路

积分
46
金钱
46
注册时间
2015-2-3
在线时间
0 小时
发表于 2015-2-10 11:02:18 | 显示全部楼层 |阅读模式
5金钱
打开文件系统,写一个字符串,然后关闭,再又打开读出来,为什么打不开了。求救
  res = f_open(&fsrc, finfo.fname, FA_OPEN_EXISTING | FA_WRITE);
  br1=1;
for(a=0; a<40; a++) buffer[a]=0;
strcpy(buffer,"fhasjkfhakjsfhaksfhkajhf");

res = f_write(&fsrc, buffer, sizeof(buffer), &br1);
if(!res)printf("\n aaaaaaaaaaa:%d\n",fsrc.fptr);
f_close(&fsrc); 
delay_ms(200000);
res=0;
res = f_open(&fdst, finfo.fname, FA_OPEN_EXISTING | FA_READ);
if(res)printf("\n 打开录音失败!!res:%d,panme:%s\n",res,finfo.fname);
res = f_read(&fdst, buffer, sizeof(buffer), &br1);
printf("\n读出的数据:%s\n",buffer); 
f_close(&fdst);

假如我第一次只是打开,关闭,不写那个字符串,。第二次还是可以打开的,,写了字符串就打不开了??
 finfo.fname为test.txt文件

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

3

主题

14

帖子

0

精华

新手上路

积分
46
金钱
46
注册时间
2015-2-3
在线时间
0 小时
 楼主| 发表于 2015-2-10 11:03:54 | 显示全部楼层
难道和txt的文件格式有关?我之所以做这个测试,是因为在录音机实验中,也是录音之后无法打开。。
回复

使用道具 举报

3

主题

14

帖子

0

精华

新手上路

积分
46
金钱
46
注册时间
2015-2-3
在线时间
0 小时
 楼主| 发表于 2015-2-10 11:13:14 | 显示全部楼层
而且在第一次写入字符串之后,直接把SD卡插到电脑上查看test.txt文件中的内容,什么都没有。。。。提示写成功,怎么什么都没有呢?这也是和录音实验一样,提示写成功,可是文件大小却为0.。。。求救!!
回复

使用道具 举报

120

主题

7878

帖子

13

精华

资深版主

Rank: 8Rank: 8

积分
12012
金钱
12012
注册时间
2013-9-10
在线时间
427 小时
发表于 2015-2-10 12:37:39 | 显示全部楼层
关闭成功了么?
现在,程序把烂铜烂铁变得智能化了,人呢,一旦离开了这烂铜烂铁就不知道干啥了
回复

使用道具 举报

3

主题

14

帖子

0

精华

新手上路

积分
46
金钱
46
注册时间
2015-2-3
在线时间
0 小时
 楼主| 发表于 2015-2-10 13:44:27 | 显示全部楼层
回复【4楼】八度空间:
---------------------------------
提醒我了,我测试了下,关闭失败,fclose返回1,这是文件系统错误?我的文件系统应该没问题啊,因为可以实现从SD卡读取音频播放,只能读不能写?在ffconf.h里面我是设置的读写,#define _FS_READONLY 0 /* 0 or 1 */
回复

使用道具 举报

3

主题

14

帖子

0

精华

新手上路

积分
46
金钱
46
注册时间
2015-2-3
在线时间
0 小时
 楼主| 发表于 2015-2-10 13:55:30 | 显示全部楼层
回复【4楼】八度空间:
---------------------------------
我只做打开,读,然后关闭是成功的。。
res = f_open(&fdst, finfo.fname, FA_OPEN_EXISTING | FA_READ);
if(res)printf("\n 打开录音失败!!res:%d,panme:%s\n",res,finfo.fname);
res = f_read(&fdst, buffer, sizeof(buffer), &br1);
printf("\n读出的数据:%s\n",buffer); 
res=f_close(&fdst); 
if(!res)printf("\n 关闭成功\n");
打开,写,然后就关闭不成功了。。
回复

使用道具 举报

120

主题

7878

帖子

13

精华

资深版主

Rank: 8Rank: 8

积分
12012
金钱
12012
注册时间
2013-9-10
在线时间
427 小时
发表于 2015-2-10 19:16:15 | 显示全部楼层
回复【6楼】wanhong158:
---------------------------------
不是吧
现在,程序把烂铜烂铁变得智能化了,人呢,一旦离开了这烂铜烂铁就不知道干啥了
回复

使用道具 举报

3

主题

2178

帖子

2

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
3323
金钱
3323
注册时间
2013-7-19
在线时间
195 小时
发表于 2015-2-10 20:51:44 | 显示全部楼层
无论打开成功与否都会执行f_read和f_close这句了
回复

使用道具 举报

3

主题

14

帖子

0

精华

新手上路

积分
46
金钱
46
注册时间
2015-2-3
在线时间
0 小时
 楼主| 发表于 2015-2-11 10:56:30 | 显示全部楼层
回复【8楼】ricefat:
---------------------------------
f_open返回的是0,应该算打开成功了吧
回复

使用道具 举报

3

主题

14

帖子

0

精华

新手上路

积分
46
金钱
46
注册时间
2015-2-3
在线时间
0 小时
 楼主| 发表于 2015-2-11 11:36:13 | 显示全部楼层
回复【8楼】ricefat:
---------------------------------
单步调试,关闭成功,,吧SD卡放在电脑上查看,确实写进去了,为什么单步调试运行可以???
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-25 20:39

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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