之前做过一个读取U盘内指定文件内数据的项目。读取方式有很多的限制,比如在程序中文件名是定死的,只有当程序中写的文件名跟U盘内的文件名一模一样时,才能从U盘内读取数据。这样,后期需要修改文件名的话还要在程序中修改成一模一样的名字,这样是很不方便的。
我在寻找解决办法的时候看了看ch376数据手册,在这上面查到了有关方面的资料,找到了下面一段话:
上面这段话是我在数据手册上看到的,里面提到可以搜索目标U盘内的所有文件名,并且包含了例程:
typedef struct _FILE_NAME {
UINT32 DirStartClust; /* 文件所在目录的起始簇号 */
// UINT32 Size; /* 文件长度 */
UINT8 Name[8+1+3+1]; /* 文件名,共8+3字节,分隔符,结束符,因为未包含上级目录名所以是相对路径 */
UINT8 Attr; /* 文件属性 */
} FILE_NAME;
#define MAX_FILE_COUNT 40
FILE_NAME xdata FileNameBuffer[ MAX_FILE_COUNT ]; /* 文件名结构 */
UINT16 FileCount;
UINT8 idata buf[64];
/* 例子:列举指定序号的目录下的所有文件 */
UINT8 ListFile( UINT8 index )
/* 输入参数index是指目录在结构中的序号 */
{
UINT8 s;
P_FAT_DIR_INFO pDir;
PUINT8 pNameBuf;
UINT32 Curren