我现在在使用U盘读写,我想把根目录及子目录下的文件都显示出来,能做到吗?
你使用的是串口版还是标准版?串口版直接可以使用模块调试工具,扫描跟目录所有文件演示就可以了,要是标准版可以通过串口直接打印出来
你可以先对根目录进行枚举,枚举到的如果是文件的话不管,如果是子目录(文件夹)的话可以对文件夹再进行枚举。至于是文件和是文件夹的话,你可以通过查询当前文件长度来确定,如果是0xFFFFFFFF 那么说明枚举到的是子目录(可以考虑进入该子目录搜索),否则说明是普通文件。
用的是标准版的,用什么指令能让它显示出来呢?
用CMD_FileEnumer这个命令。枚举文件(查询文件),输入参数在mCmdParam.Enumer.mPathName中指定带有通配符*的路径名和文件名,格式与命令CMD_FileOpen 相同。 具体你可以看说明文档CH375HM。PDF中的5.5节。
用CMD_FileEnumer,具体的步骤可以参考例子程序CH375HMP.C中有/* 列出根目录下的文件 */这段程序
但U盘中的文件夹名不是固定的."\\ C51 \\CH375*" 比如C51换成别的呢?
那你就把路径改下不就可以了,实际的操作和DOS下面的操作有点类似
我想显示枚举的文件夹下的内容,这样写行吗 if ( i == ERR_SUCCESS ) /* 搜索到与通配符相匹配的文件名,文件名及其完整路径在命令缓冲区中 */ { ExecCommand( CMD_QueryStatus,0 ); if( mCmdParam.Status.mFileSize==0xFFFFFFFF ) { memcpy( mCmdParam.Enumer.mPathName,"\\mCmdParam.Enumer.mPathName*", MAX_PATH_LEN ); } printf(......); 这样对吗?
返回的文件名在结构体里,但不知道如何显示出来,麻烦hcn具体说一下,可以吗?
要是想显示某个文件夹下的文件,DOS也得知道文件夹的名吧? 等大哥赐教!!!!!!!!!!!!!!! 想将所有文件夹下的文件都显示出来
memcpy( mCmdParam.Enumer.mPathName,"\\mCmdParam.Enumer.mPathName*", MAX_PATH_LEN ); 的意思是将文件名称为mCmdParam.Enumer.mPathName的文件复制,不可以的,我们找文件名称的话,只支持8+3的文件格式,文件名称必须为大写,数字或者下划线等等,按照你说的要求,你想把某一个文件夹下面的所有文件枚举出来,只需要按照上面的程序加点修改就可以了,实际你需要枚举哪个文件夹下面的文件,只需要将文件夹名称修改下就可以了,也就是."\\ X51\\*",其中X51就是你要枚举的文件夹
想将所有文件夹下的文件都显示出来, 但U盘中的文件夹名是不知道的啊!!!!!!!!!! 所以程序中就不能那么写了! 那怎么显示啊?!
那你就先对跟目录进行枚举,再对跟目录下的子目录进行枚举,要你自己去写. CH375芯片的库文件中有这样的例子 CH375FILELIB4/EXAM13 可以根据这个流程来写模块程序
我用的U盘读写模块,也可以吗?
每枚举到一个文件(文件夹)会把文件的路径放到mCmdParam.Enumer.mPathName中,如果是文件夹的话,你再这个路径后面加上\\*,再进行枚举。