OpenEdv-开源电子网

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

怎样调用exf_fdcopy()实现文件夹的复制??

[复制链接]

5

主题

9

帖子

0

精华

新手上路

积分
49
金钱
49
注册时间
2014-7-19
在线时间
0 小时
发表于 2014-8-31 18:24:37 | 显示全部楼层 |阅读模式
5金钱
基于综合实验,我想把sd卡上的文件夹PICTURE复制到外部FLASH上文件夹SYSTEM,在common.c中如下定义:
const u8* APP_SYSTEM_DSTPATH="1:/SYSTEM"; //系统文件目标路径
const u8* APP_SYSTEM_PICTURE="0:/PICTURE; //源文件路径
然后再开始任务start_task()中调用exf_fdcopy((u8*)fcpymsg,(u8*)APP_SYSTEM_PICTURE,(u8*)APP_SYSTEM_DSTPATH,&totsize,&cpdsize,1);
 显示错误:  error:  #268: declaration may not appear after executable statement in block
                   u32 totsize=0;
     main.c(274): error:  #268: declaration may not appear after executable statement in block
        u32 cpdsize=0;
     main.c(276): error:  #20: identifier "fcpymsg" is undefined
        exf_fdcopy((u8*)fcpymsg,(u8*)APP_SYSTEM_PICTURE,(u8*)APP_SYSTEM_DSTPATH,&totsize,&cpdsize,1);
     main.c(276): error:  #20: identifier "APP_SYSTEM_PICTURE" is undefined
        exf_fdcopy((u8*)fcpymsg,(u8*)APP_SYSTEM_PICTURE,(u8*)APP_SYSTEM_DSTPATH,&totsize,&cpdsize,1);
    main.c(276): error:  #20: identifier "APP_SYSTEM_DSTPATH" is undefined
        exf_fdcopy((u8*)fcpymsg,(u8*)APP_SYSTEM_PICTURE,(u8*)APP_SYSTEM_DSTPATH,&totsize,&cpdsize,1);
    main.c: 0 warnings, 5 errors
正确的调用方法是啥,跪求啊。。。fcpymsg到底是啥啊,我看代码中调用exf_fdcopy()都是直接写fcpymsg,为毛我就成了未定义呢

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

使用道具 举报

6

主题

47

帖子

0

精华

初级会员

Rank: 2

积分
162
金钱
162
注册时间
2020-3-13
在线时间
32 小时
发表于 2020-4-8 20:58:41 | 显示全部楼层
u8 user_cp_showInf(u8*pname,u8 pct,u8 mode)
{                                                                                                         
        if(mode&0X01)
        {
                //LCD_Fill(cpdmsg_x+9*(cpdmsg_fsize/2),cpdmsg_y,cpdmsg_x+(9+16)*(cpdmsg_fsize/2),cpdmsg_y+cpdmsg_fsize,BLACK);        //填充底色
                //LCD_ShowString(cpdmsg_x+9*(cpdmsg_fsize/2),cpdmsg_y,16*(cpdmsg_fsize/2),cpdmsg_fsize,cpdmsg_fsize,pname);        //显示文件名,最长16个字符宽度
                printf("\r\nCopy File:%s\r\n",pname);  
        }
        if(mode&0X04)printf("Copy Folder:%s\r\n",pname);
        if(mode&0X02)//更新百分比
        {
                //LCD_ShowString(cpdmsg_x+(9+16+1+3)*(cpdmsg_fsize/2),cpdmsg_y,lcddev.width,lcddev.height,cpdmsg_fsize,"%");               
                //LCD_ShowNum(cpdmsg_x+(9+16+1)*(cpdmsg_fsize/2),cpdmsg_y,pct,3,cpdmsg_fsize);//显示数值
                printf("File Copyed:%d\r\n",pct);
        }
        return 0;       
}
u8*const APP_SYSTEM_APPPATH="/yaakov";        //APP文件夹路径
u8*const APP_SYSTEM_DSTPATH="1:/SYSTEM";
u32 totsize=0;

u8 user_cp_folder(void)
{
        u32 cpdsize=0;
        u8 res=0;
        u8 *p_app;
        u8 rval;
        p_app = mymalloc(100);
        if(p_app==NULL)
        {
                return 1;//内存申请失败
        }
        sprintf((char*)p_app,"%s%s","0:",APP_SYSTEM_APPPATH);
        totsize+=exf_fdsize(p_app);//得到三个文件夹的总大小
        printf("totsize:%d\r\n",totsize);
        f_mkdir((const TCHAR *)APP_SYSTEM_DSTPATH);//强制创建目标文件夹
        res=exf_fdcopy(user_cp_showInf,p_app,(u8*)APP_SYSTEM_DSTPATH,&totsize,&cpdsize,1);
        if(res)
    {
                if(res!=0xff)
            rval=1; //第一阶段复制出错
                else
            rval=0XFF;          //强制退出
        }
    else
    {
        rval=0;//整个过程无错误,无强制退出
    }

    myfree(p_app);
        return rval;
}




user_cp_folder 调用这个即可
回复

使用道具 举报

6

主题

47

帖子

0

精华

初级会员

Rank: 2

积分
162
金钱
162
注册时间
2020-3-13
在线时间
32 小时
发表于 2020-4-8 20:59:58 | 显示全部楼层
//拷贝用于显示更新进度 //*pname:更新文件名字 //pct:百分比 //mode:模式 //[0]:更新文件名 //[1]:更新百分比pct //[2]:更新文件夹 //[3~7]:保留 //返回值:0,正常; //       1,结束复制 u8 user_cp_showInf(u8*pname,u8 pct,u8 mode) {                                                                                                                  if(mode&0X01)         {                 //LCD_Fill(cpdmsg_x+9*(cpdmsg_fsize/2),cpdmsg_y,cpdmsg_x+(9+16)*(cpdmsg_fsize/2),cpdmsg_y+cpdmsg_fsize,BLACK);        //填充底色                 //LCD_ShowString(cpdmsg_x+9*(cpdmsg_fsize/2),cpdmsg_y,16*(cpdmsg_fsize/2),cpdmsg_fsize,cpdmsg_fsize,pname);        //显示文件名,最长16个字符宽度                 printf("\r\nCopy File:%s\r\n",pname);           }         if(mode&0X04)printf("Copy Folder:%s\r\n",pname);         if(mode&0X02)//更新百分比         {                 //LCD_ShowString(cpdmsg_x+(9+16+1+3)*(cpdmsg_fsize/2),cpdmsg_y,lcddev.width,lcddev.height,cpdmsg_fsize,"%");                                  //LCD_ShowNum(cpdmsg_x+(9+16+1)*(cpdmsg_fsize/2),cpdmsg_y,pct,3,cpdmsg_fsize);//显示数值                 printf("File Copyed:%d\r\n",pct);         }         return 0;         } u8*const APP_SYSTEM_APPPATH="/yaakov";        //APP文件夹路径 u8*const APP_SYSTEM_DSTPATH="1:/SYSTEM"; u32 totsize=0;  u8 user_cp_folder(void) {         u32 cpdsize=0;         u8 res=0;         u8 *p_app;         u8 rval;         p_app = mymalloc(100);         if(p_app==NULL)         {                 return 1;//内存申请失败         }         sprintf((char*)p_app,"%s%s","0:",APP_SYSTEM_APPPATH);         totsize+=exf_fdsize(p_app);//得到三个文件夹的总大小         printf("totsize:%d\r\n",totsize);         f_mkdir((const TCHAR *)APP_SYSTEM_DSTPATH);//强制创建目标文件夹          res=exf_fdcopy(user_cp_showInf,p_app,(u8*)APP_SYSTEM_DSTPATH,&totsize,&cpdsize,1);         if(res)     {                 if(res!=0xff)             rval=1; //第一阶段复制出错                 else              rval=0XFF;          //强制退出         }     else     {         rval=0;//整个过程无错误,无强制退出     }      myfree(p_app);         return rval; }
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-5-24 19:20

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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