CH376写入一串数据

我要写入一段数据,比如说这样的 2013.05.31 09:55:28 2013.05.31 09:55:29 2013.05.31 09:55:29 2013.05.31 09:55:29 2013.05.31 09:55:30 2013.05.31 09:55:30 2013.05.31 09:55:31 2013.05.31 09:55:31 2013.05.31 09:55:31 2013.05.31 09:55:32 2013.05.31 09:55:32 但是我现在的情况是必须得在while(1)里面一直初始化CH376才可以做到这种效果,也就是说必须得在每次s=CH376DISKConnect()函数前面都得加上一句s=mInitCH376Host()才可以做到,如果不加的话始终都只有一句2013.05.31 09:55:32,那就是U盘在一直被初始化吗,我看这样写的时候U盘一直在闪,但是U盘插电脑上只是闪一会就不闪了,怎么解决啊?谢谢

初始化只是在芯片上电的时候在diskconnect之前做一次,不需要在while(1)里做,因为电脑写的比较快所以闪一会就不闪了。


可是我之前是上电的时候初始化的,在while(1)的外面,可是如果在外面的就只能写入一次啊,就只是这样的,2013.05.31 09:55:32,只能显示最后一次更新的数据,前面的数据不会保留啊,所以U盘就一直在闪,怎么解决啊?


你是不是每次写的时候没有偏移所以把之前的数据覆盖掉了,只写了最后面一组数据2013.05.31 09:55:32


我写了这一段的,应该是有了这段会自动跳到文件末尾的吧? s=CH376FileOpen(TEXT.TXT) if(s==USB_INT_SUCCESS) { s=CH376GetFileSize(); s=CH376ByteLocate(0xFFFFFFFF); }


再问下,这样在while(1)里面一直mInitCH376Host(),会对U盘寿命有影响的吗,还有个问题,CH376DiskConnect()最后读出的值不管U盘插没插上,正常情况下是不是读出的值都是USB_INT_SUCCESS?只有当CH376DiskMount()之后才是真正初始化检测到了U盘的存在?


四楼的程序只是在打开文件的时候跳到文件名为,写的时候也需要调用。CH376DiskConnect()只有在检测磁盘连接的时候才会返回USB_INT_SUCCESS,另外CH376DiskMount是检测磁盘是否准备就绪类似于初始化U盘,在读写之前必须操作。


那就是在每次字节写数据的前面都要加上这两句吗?我试了,一样的啊,还是会覆盖? s=CH376GetFileSize(); s=CH376ByteLocate(0xFFFFFFFF);


那你再写一组长度超过原来的数,看看数据是追加还是覆盖?


还是被覆盖了啊啊啊啊啊,在Bytewrite前面写这两句为什么每次读取的filesize都是等于0? s=CH376GetFileSize(); s=CH376ByteLocate(0xFFFFFFFF);


如果你每次读取的长度都为0,相当于每次写进去都没有更新文件长度,当然会出现你说的现象。那你你每次写完都关闭一下文件s = CH376FileClose( TRUE ); 更新一下长度。


关闭了啊,我是在最后写完了之后关闭的,长度最后还是更新了的吧,我是这样写的 writebyte了之后getsize了下,然后修改了下创建时间,就把fileclose了s = CH376FileClose( TRUE ); 还是必须的minithost(),不然还是不行,写上这句在while(1)里面应该没多大影响吧?


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