加了其他字符都返回找不到文件!如果要使用其他字符需要怎么修改?
默认情况下文件须符合DOS命名规则:即“8个或以下字符大写字母和数字组合的文件名”.“3个或以下字符大写字母和数字组合”
例如:
ABCD1234.ABC
12345678.123
1111QAZD.1A2
1A2B3C.4D
1.A
..........
就是只支持短文件名嘛。。
长文件名的实现可以借鉴CH32F103的示例程序:/downloads/CH32F103EVT_ZIP.html
其中HOST_Udisk下的EXAM13实现了对长文件名的操作。
可以留下邮箱,移植完后发送给你。
邮件请发 个人信息保护,已隐藏 谢谢!
邮件已发
请问这个生成长文件名后,把u盘插到电脑上是不是看到的还是短文件名?
我这里没有103的板子不能验证,你能讲一下他的原理吗?
收到了,谢谢,验证可行,不过能不能再麻烦你一下,把读写文件都移植一下?
文件读写和长文件名功能无关,实际文件操作对象都是短文件名,长文件名只是一个“属性”。
直接参考CH559EVT下EXAM1
U盘里的文件是我在电脑上建立的,然后再挂到559上,提示没找到文件
长文件名只是属性,通俗讲就是给你屏幕上看着好辨认一点哪个是哪个。
提供的文件系统实际操作对象始终是短文件名。但电脑创建文件时短文件名不可见,且要操作的对象就是短文件名。
所以U盘接入MCU后需要枚举出所有文件(CH559EVT-EXAM11),尝试获取每个文件的长文件名,通过对长文件名进行比对,判断是否为需要的文件。
或者根据通用规则去检索文件:
我以为是你的lib里面自动去比对的,还要在外面枚举和比对啊。。。
请再帮忙指点一下,确实没想通。。
想要读写电脑上创建的c.c文件,举例如下:
执行函数枚举对应目录下所有文件,能够获取到每个文件短文件名:A.A、B.B、C.C、D.D.............等
执行函数对短文件名A.A获取其长文件名,得到长文件名a.a;
执行函数对短文件名B.B获取其长文件名,得到长文件名b.b;
执行函数对短文件名C.C获取其长文件名,得到长文件名c.c;
执行函数对短文件名D.D获取其长文件名,得到长文件名d.d;
其中c.c是在电脑上创建的长文件名文件,可知该文件的短文件名即是C.C,后续文件读写操作都针对短文件名C.C展开。
这里有点疑问,这是什么