遇到了一个问题,按照EXAM1里面做短文件名的根目录枚举,程序通过,但是加入了EXAM11里面的显示长文件名的代码之后,只能枚举出来1个文件。(U盘里有3个文件,都是英文名。)请问下各位能帮我看下这代码吗?为什么变为长文件名输出以后,Wait376Interrupt()返回了ERR_MISS_FILE ,即0x42?
短文件名根目录枚举主要代码如下:(几乎全是EXAM1里的代码了)
strcpy((char *)buf,"\\*"); printf("List file %s\n",buf); s=CH376FileOpenPath(buf); while(s==USB_INT_DISK_READ) { CH376ReadBlock(buf); pDir=(P_FAT_DIR_INFO)buf; if(pDir->DIR_Name[0]!='.') { if(pDir->DIR_Name[0]==0x05) pDir->DIR_Name[0]=0xE5; pDir->DIR_Attr=0; printf("*** EnumName: %s\n",pDir->DIR_Name); } xWriteCH376Cmd(CMD0H_FILE_ENUM_GO); xEndCH376Cmd(); s=Wait376Interrupt(); printf("s=%02x",s); }
长文件名根目录枚举主要代码如下:(加入了部分EXAM11里的代码)
strcpy((char *)buf,"\\*"); printf("List file %s\n",buf); s=CH376FileOpenPath(buf); while(s==USB_INT_DISK_READ) { CH376ReadBlock(buf); pDir=(P_FAT_DIR_INFO)buf; if(pDir->DIR_Name[0]!='.') { if(pDir->DIR_Name[0]==0x05) pDir->DIR_Name[0]=0xE5; pDir->DIR_Attr=0; s=CH376GetLongName(pDir->DIR_Name,LongNameBuf); for(j=0;j { printf("%c",LongNameBuf[j]); if(*(PUINT16)(&LongNameBuf[j])==0) break; } delay_ms(20); printf("s=%02x \n",s); } xWriteCH376Cmd(CMD0H_FILE_ENUM_GO); xEndCH376Cmd(); s=Wait376Interrupt(); printf("s=%02x",s); }
请问为什么第二段程序中中断直接就返回了ERR_MISS_FILE呢?