打印
[LPC]

请教各位,SD卡写满后要从头覆盖怎么实现呢

[复制链接]
1683|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
xiaoxiangzhuxin|  楼主 | 2014-7-17 21:32 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
请教各位:
   我需要用SD卡去存储数据,然后存满之后还继续从头覆盖存储,存储的时候是以文件的起始和结束时间命名,使用的是FAT32文件系统,不知道大家有没有好的方法?

相关帖子

沙发
dong_abc| | 2014-7-18 01:34 | 只看该作者
文件系统都有地址偏移的,从新定位到开头就行了

使用特权

评论回复
板凳
xiaoxiangzhuxin|  楼主 | 2014-7-22 16:38 | 只看该作者
dong_abc 发表于 2014-7-18 01:34
文件系统都有地址偏移的,从新定位到开头就行了

谢谢您,我用的是fatfs文件系统,尝试了几种方法都不行,不知道能不能赐教一下~

使用特权

评论回复
地板
dong_abc| | 2014-7-22 17:03 | 只看该作者
本帖最后由 dong_abc 于 2014-7-22 17:13 编辑

给你一段代码,自己研究。

在文件末尾追加一个数据
        res = f_lseek(&fdst1, fdst1.fsize);      
        res = f_write(&fdst1,tmp_string, sizeof(tmp_string), &bw);               
        res = f_close(&fdst1);
//每天新建一个文件
        if(strcmp(current_file,file_backup)!=0)
        {      
            first_file =0;  
                  
            //扫描flash中的文件数,并保持7个有效文件
            flash_file_num=file_enum_routine("/user");
            if(flash_file_num<7)
            {
                memset(file_array[flash_file_num], 0, sizeof(file_array[flash_file_num]));
                strcpy(file_array[flash_file_num], name_string);        
            }
            else
            {               
                res = f_mount(0,&fs[0]);            
                res = f_opendir(&dir,"/user");
                if(res==FR_NO_PATH)
                {
                    res = f_mkdir("user");
                    res = f_opendir(&dir,"/user");
                }
               
                res = f_close(&fdst1);
                res = f_unlink (file_array[0]);
               
                f_mount(0,NULL);
               
                for(i=0;i<6;i++)
                    strcpy(file_array[i],file_array[i+1]);
                  
                memset(file_array[6], 0, sizeof(file_array[6]));
                strcpy(file_array[6], name_string);   
             }         
        }

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

8

主题

19

帖子

0

粉丝