CH32V307EVT.ZIP 中的U盘文件系统库文件如何枚举文件名?

根据CH32V103UFI.c中的xFileNameEnumer函数说明及其注释,仿照着写的代码结果如下图

                        UINT8 count = 0;

                        UINT16 file_count;

                        PX_FAT_DIR_INFO dir_info;


                        CHRV3vFileSize = 0xFFFFFFFF;


                        while (1) {

                            if (CHRV3FileOpen() == ERR_SUCCESS) {

                                dir_info = (PX_FAT_DIR_INFO)(pDISK_BASE_BUF + CHRV3vFdtOffset);

                                file_count = (UINT16)(0xFFFFFFFF - CHRV3vFileSize);

                                printf("%d: %s\n\r", file_count, dir_info->DIR_Name);

                                if (++count == 10) break;

                            }

                        }

sshot-2.png

没有搜索到文件,能不能提供一个例程,或者文件系统的说明书?

另外:试了3个FAT32文件系统U盘,HOST_Udisk例程只对一个U盘能正确读写,是否对U盘有什么要求?

假如您想列出U盘中的所有文件的话可以参考V103USB主机例程EXAM11,用的是同一个U盘的库。对于U盘兼容性问题,建议使用知名品牌的U盘。有啥其他问题可以加我微信交流wxid_vp236ua44cdo22


多谢指导

参考V103USB主机例程EXAM11修改代码如下

UINT32 idx = 0;


                        do {

                            strcpy((PCHAR) mCmdParam.Open.mPathName, "/*");

                            CHRV3vFileSize = idx++;

                            ret = CHRV3FileOpen();

                            if (ret == ERR_FOUND_NAME)

                                printf("%d: %s\r\n", idx, mCmdParam.Open.mPathName);

                        } while (ret == ERR_FOUND_NAME);

能列出文件

1646961561126562.png

没设置下图中箭头处,该处在什么情况下使用?

1646961561134658.png




mCmdParam.Open.mPathName[ i ] = 0xFF;                      //根据字符串长度将结束符替换为搜索的序号,从0到254,如果是0xFF即255则说明搜索序号在CHRV3vFileSize变量中

用于修改文件名结束符的,默认是00H看你的使用需求吧,其实就是给你枚举出的文件加个序号。


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