CH376s SD卡 写入问题

本人使用CH376s将数据写入SD卡中,使用txt格式。写入本身没有什么问题,将sd卡插入手机中,能够看到创建的文件,并且也能打开文件看到其中的内容,内容也是正确的。但是我现在发现,如果使用读卡器插到电脑上就没法打开该文件了,文件是有的,但是一打开就显示无法找到该文件。我发现就只有通过ch376s写入的文件会有这样的问题。

我是使用的是CMD_BYTE_WRITE写入数据的。

我实在不知道问题所在,希望哪位大神帮小弟一把,谢谢!j_0013.gif

好吧,我发现了,要用大写。。。。。。


我想问一下:你说的大写是什么意思?


文件名必须符合DOS规范(WINDOWS下的小写或长文件名实际上都对应一个自动产生的DOS文件名):
1、文件名分为两部分,主名和扩展名,之间为小数点分开。目录名与文件名类似,下同。
2、扩展名可以省略,如果没有扩展名,小数点也必须省去,扩展名代表文件类型,只是代表而已。
3、主名长度不超过8个字符,扩展名长度不超过3个字符。
4、必须是大写字母A-Z、数字0-9、下划线等,而不能用特殊字符例如空格、斜杠、大于小于,小写字母等。
5、文件名以00H结束。

 
例如有效文件名,字符串的最后以00H结束,C语言是"\x0":

TEST_123.TXT

D2004_12.TXT


例如无效文件名(注:如果使用长文件名子程序库那么可以支持小写文件名和较长的文件名)

a
B2KD9DI8
D48 89.C
中文.DOC

DOIW44I4.TXT2

出错原因:

a 小写
B2KD8D18X 主名太长
D48 89.C 空格无效 
DOIW44I4.TXT2 扩展名太长
中文.DoC 小写

实际文件名还要加上左斜杠以指定目录,例如,strcpy(mCmdParam.Create.mPathName,"/MYFILE.TXT");
注意在C语言中容易出现strcpy(mCmdParam.Create.mPathName,"\MYFILE.TXT");右斜杠必须是两个。
因为大多数用户都使用固定的文件名,不需要复杂的功能,所以我们没有在程序库中增加代码自动处理
大小写转换等问题,而是由用户根据需要自行处理,以节约不需此功能时的代码。
另外,写完文件后要及时修改文件长度,如果写入了数据而文件长度为0,那么WINDOWS也读不出数据。
对于已经发生错误的U盘,在重新使用前应该在WINDOWS下做磁盘扫描,修正原有错误后再使用。


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