U盘枚举后复制问题

以前复制跟目录.TXT都可以 现在要复制多级目录 发现不能在目的盘根目录下创建文件夹 也没有产生错误 怎么回事呢 strFileName打印也对 for (i = 0; i < 200; i++ ) /* i 是枚举序号,可以从0到2147483647 */ { //枚举根目录文件夹 s = ch374_FindFile(pCodeStr, i, strFileName); if (s == ERR_MISS_FILE ) {break;} if (s == ERR_FOUND_NAME ) { SaveDisk( SourceDisk ); // 备份源盘变量 RestoreDisk(TargetDisk); // 恢复目的变量 strcpy( mCmdParam.Create.mPathName,strFileName ); ucErr=CreateDirectory( ); StopIfError(ucErr); }

CreateDirectory( )是多级目录创建的,首先你还是你直接用字符串形式打开看一下是否有问题?如果可以,说明你创建的目录名有问题。


问题找到了 是都建在源盘上了 怎么回事呢 我是操作目的盘啊


出现错误代码0x1F /* USB存储器操作失败 */ 这是为什么呢 我直接在目的盘里建的字符串 if ( SourceDisk != 0xFF && TargetDisk != 0xFF && SourceDisk != TargetDisk ) { // 有两个U盘 RestoreDisk(TargetDisk); // 恢复目的变量 strcpy( mCmdParam.Create.mPathName,"2013.TXT" ); ucErr=CH374FileCreate(); StopIfError(ucErr); }


你先不要切换U盘创建试一下,如果没有问题,说明你切换的有问题。如果还出现0x1F,检查一下USB那一块接线,不需要添加电容电阻,或者换个U盘试一下。


for (i = 0; i < 200; i++ ) { s = ch374_FindFile("/123/*", i, strFileName_1); if (s == ERR_MISS_FILE ) {printf("file none\n");break;} if (s == ERR_FOUND_NAME ) { printf(strFileName_1); printf("\n"); } } for (ii = 0; ii < 200; ii++ ) { s = ch374_FindFile("/123/13-12-03/*", ii, strFileName_2); if (s == ERR_MISS_FILE ) {printf("file none\n");break;} if (s == ERR_FOUND_NAME ) { printf(strFileName_2); printf("\n"); } } 打印出的信息是: /123/. /123/.. /123/13-12-03 /123/13-11-20 /123/13-11-21 file none /123/13-12-03/. /123/13-12-03/.. /123/13-12-03/14-49.TXT /123/13-12-03/14-50.TXT /123/13-12-03/14-51.TXT file none 为什么枚举出的前两个信息最后都是点啊 /. /.. 这是怎么回事啊


这是正常现象,所有的子目录下,即使用户没有新建过任何目录和文件,那么在创建该子目录的时候,系统默认会在该子目录创建2个隐藏的系统目录,DOS下俗称“.”和“..”


谢谢 弄好了


怎么判断目的盘拔出啊


判断磁盘拔出和判断磁盘连接一样调用CH374DiskConnect即可。


主程序一直查询目的盘是否插入 当操作完目的盘后返回1 我现在就想当操作完目的盘 必须把目的盘拔掉 才继续查询是否又有目的盘插入 现在这个程序是 目的盘不拔下来也一直查询 一直对他操作 说明已经break了 跳出while(1)了 那要怎么改呢 while(1) { if(Write_TargetDisk()==1) { while(1) { delay_ms(10); /* 没必要频繁查询 */ if (CH374DiskConnect()== ERR_SUCCESS) { break; } } } }


操作完成之后,U盘是插着的,此时检测磁盘断开if (CH374DiskConnect()!= ERR_SUCCESS)之后break,说明磁盘拔掉。如果再要检测磁盘连接调用if (CH374DiskConnect()== ERR_SUCCESS)。


if (CH374DiskConnect()!= ERR_SUCCESS){led=0;break;} 当拔出目的盘后 发现根本没进入函数里 led没亮啊 后来试一下源盘拔掉后 确实进入函数 break了 怎么才能检测目的盘呢


源盘和目的盘的检测应该是一样的,你是使用CH374U来U盘之间复制吗?你可以参考一下EXAM15怎么做的?


是的 是CH374U,我又看了一下EXAM15 以前就是按EXAM15改的 但是没有插拔检测啊


ZBin真是麻烦你了 这个有解决吗 有专门程序处理的 还是我程序的问题?


只有登录才能回复,可以选择微信账号登录