请问为什么用CH376操作FAT系统的U盘读写正常,但是操作FAT32系统的U盘就只能写入一个字节的数据?

第一次操作FAT32系统的U盘的时候,返回状态都是正确的,但是U盘里就是无法显示创建的文件,之后,格式化了U盘,现在可以创建文件了,但是写文件的时候只能写入一个字节?请问这是什么原因呢,程序操作FAT系统的U盘一切都是正常的。

我们芯片创建文件成功会有一个字节的随机数在文件里面。写文件的时候只能写入一个字节应该还是创建时候的那个字节,说明你写没有成功。写完需要关闭文件,自动更新一下文件长度的。


如果是没有写入成功,但是写入的文件里面却有一个正确的数据是怎么回事呢?


而且在关闭文件之后重新打开文件,读取文件中的数据,也是正确的,但是就是U盘里新建的文档中不显示,只显示一个数据,请问这是什么原因造成的呢?


我在调试程序的时候发现,只有在写完之后再读取任意字节的数据才能把数据写入指定的文件里,不知道什么原因?


首先你要确保写进去的是可见字符,另外,这个可能与U盘写延迟有关系,关闭文件之后,你可以在创建一个文件,然后再删除该文件。让U盘将数据强制更新。


嗯,写入的是可见字符。之前的程序是只写,写完之后关闭文件,这样的话用FAT系统的U盘是正确的,但是现在换了一个FAT32的U盘,原来只写的程序就不能正确写入了;之后我在调试程序的时候发现,在写完数据关闭文件之后,在打开文件读取任意字节的数据,这时候在电脑上在查看U盘中的数据就又是正常的了,你说的跟U盘的写延迟有关系这个情况,但是我是在关闭文件之后再打开去读数据的,这时候并没有写,怎么会跟U盘的写有关系呢?


写延迟是指你在打开之前那个写操作没有真正写到U盘里去,而你在调用打开文件的函数,就将数据强制更新到U盘了,所以你又能看到了。


嗯,这样啊,那这个问题怎么解决呢?只有在写完之后再去读取一次文件这一个解决办法吗?有没有其他的解决办法?


这种问题主要与U盘特性有关系,你可以用第5楼的方法,先创建一个文件,再删除它。这样不影响你的操作。


在创建一个文件,这个文件是之前要写入数据的文件吗?使用5楼提供的方法就可以把之前没有写入的文件强制写入进去吗?手册上有相应的说明吗?我怎么没有看到呢?


对于普通的U盘是不需要这个操作的,这个只是针对于你的U盘的一个解决方法》


嗯,谢谢你。


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