[求助]CH376读写长文件名的问题。

使用CH376,SPI口连接单片机。想实现的操作是:连接到U盘后,判断U盘中是否存在某个长文件名的文件,若不存在,则创建;若存在,则直接往里写数据。

问题: 第一次运行,U盘中无该文件,于是创建文件,OK了,并且写入数据也正确。但是下一次运行到这里,由于我的文件名变了(以实时时间为文件名),按道理应该再建立一个当前时间为名字的文件,但是在执行 CH376FileOpenPath之后,直接进入了下面的文件写部分,也就是判断文件已经存在了。

请问: 1. 想请问 CH376FileOpenPath函数是不是按照短文件名来判断的?还是全部路径和文件名呢?

2. 针对长文件名,存在一个字节写函数:CH376LongNameWrite ,还有一个字节写函数CH376ByteWrite。 在长文件名情况下,是不是只能用第一个来写,我现在用第二个写好像也行。

3. 几乎每一个例程,都有s = CH376ReadBlock( buf ); 来读取厂商信息和产品信息。我发现第一次执行此语句时确实读到了U盘的信息,但是第二次执行到这里,读到的又变成某个文件的内容了。

问题有点多啊,烦请大侠们指点迷津。!!在线等。。。。。

部分代码如下: sprintf(buf, "////%04d%02d%02d%02d%02d%02d.txt",year,month,date,hour,min,sec); s = CH376FileOpenPath( buf );//打开文件 if ( s == ERR_MISS_DIR || s == ERR_MISS_FILE ) { /* 没有找到目录或者没有找到文件 */ //此处省略部分代码,将文件名转换为unicode字符 s = CH376CreateLongName( buf, LongNameBuf ); /* 新建具有长文件名的文件 */ }

//下面是对文件的写操作。

s = CH376ReadBlock( buf ); 这个函数本身是用来读取CH376的内部缓冲区的,因为DISK_MOUNT里已经获取到了厂商信息和产品信息,所以在DiskMount之后调用这个函数才会返回厂商信息和产品信息。 如果是文件的内容有可能没执行DiskMount或则DiskMount没有成功。

CH376FileOpenPath函数本身对文件名不做判断,但是用户要保证是正确的。全部路径和文件名 与 短文件名是两码事。 你可以下载CH376EVT.ZIP,参考CH376EVT.PDF,对CH376FileOpenPath有详细说明。你打开的文件是长文件名,请参考EXAM11


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