打印
[单片机芯片]

请教下,CH32F103读取U盘已有的长文件名

[复制链接]
1027|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
sagade|  楼主 | 2022-4-11 15:41 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
CH32F103C8T6,使用CH32F103UFI.lib。
1.读取U盘里面现有的长文件名,通过CH103FileOpen枚举文件夹内的文件,可以得到长文件名文件的短文件名,也可以使用该短文件名来操作这个文件,就是不知道如何得到这个长文件名文件的长文件名?

2.如果有U盘目录下有TESTLONG-F.TXT, TESTLONG-W.TXT, TESTLONG-L.TXT多个前缀一样的长文件名文件,可以使用"/TESTLO*"来通配找到这几个文件,短文件名为“TESTLO~1.TXT”,"TESTLO~2.TXT”,"TESTLO~3.TXT”,那么如何区分哪个对哪个?



使用特权

评论回复
沙发
张饕餮| | 2022-4-11 18:34 | 只看该作者
1.长文件名位于目录项的对应短文件明前位置如图所示: ,可通过读取扇区的操作分析出短文件名对应的长文件名位置,读出对应的长文件名;
2.当创建一个长文件名文件时,系统会自动加上对应的短文件名,其一般有的原则:
(1)、取长文件名的前 6 个字符加上"~1"形成短文件名,扩展名不变。
(2)、如果已存在这个文件名,则符号"~"后的数字递增,直到 5。
(3)、如果文件名中"~"后面的数字达到 5,则短文件名只使用长文件名的前两个字母。通过数学操纵长文
件名的剩余字母生成短文件名的后四个字母,然后加后缀"~1"直到最后(如果有必要,或是其他数字以避免重复
的文件名)。
(4)、如果存在老 OS 或程序无法读取的字符,换以"_

使用特权

评论回复
板凳
guijial511| | 2022-4-11 20:47 | 只看该作者
呀跑文件系统

使用特权

评论回复
地板
coody| | 2022-4-11 21:50 | 只看该作者
长文件名目录项按倒叙方式安排,长文件名编码为unicode。

使用特权

评论回复
5
yangxiaor520| | 2022-4-12 08:06 | 只看该作者
文件系统不支持长文件名称读取

使用特权

评论回复
6
sagade|  楼主 | 2022-4-12 09:06 | 只看该作者
张饕餮 发表于 2022-4-11 18:34
1.长文件名位于目录项的对应短文件明前位置如图所示:,可通过读取扇区的操作分析出短文件名对应的长文件名 ...

多谢老哥,我去试一下

使用特权

评论回复
7
sagade|  楼主 | 2022-4-12 14:54 | 只看该作者
确实是能读取出来,2个长文件名目录项,能拼接出“TESTLONG-L.txt”。WCH的USB还是第一次用,不是很熟练,感觉处理长文件名还是移植FATFS来的简单一点,这样搞还得去看FAT32数据结构。
CH376倒是有一个CH376GetLongName,CH32F103貌似没有类似函数,下次参照这个来移植下吧。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

8

主题

428

帖子

4

粉丝