CH376读文件缺前8字节问题,写文件只能写一个字节

使用CH376使用字节读取U盘的文件,使用文件长度查询函数读取长度正确,但用字节读取内容时,前面8个字节无法读取,每次读数的内容都从文件的第九个字节开始,请问是为什么?我用的并口方式,完全按例程移植的。还有就是写文件是,只能写入一个字节。请大能们指教一下!

读文件之前执行一次bytelocate()字节偏移到文件头,再读。对于写字节,写完之后需更新文件长度,常用的更新方式有两种,一种是关闭文件,参数为1;另一种是写零长度字节强制刷新。


文件新打开,偏移量就是0嘛,从文件头开始。我的程序是按例程移植的:

    sprintf((char *)sfilename,"/COME.TXT");
    res = CH376FileOpenPath( sfilename );  /* 打开文件,该文件在根目录下 */
    if(res !=DEF_DISK_OPEN_FILE) //文件不存在
    {
       res = CH376FileCreatePath( sfilename );  /* 新建多级目录下的文件*/    
    }
    t0 = CH376GetFileSize( ); /* 读取当前文件长度 */                                   (1)

    res = CH376ByteRead( com4TraDataBuff, 64, &ThisLen );  /* 以字节为单位向当前位置写入数据块 */   (2)

    res = CH376DirInfoRead( );  /* 读取当前文件的目录信息FAT_DIR_INFO,将相关数据调到内存中 */
    CH376ReadBlock( com4TraDataBuff );  /* 从内存缓冲区读取FAT_DIR_INFO数据块*/         (3)


上诉为我读取USB文件的程序,

其中COME.TXT在根目录下,内容为:1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ!   共37字节 

执行(1) 后:返回t0=0x000D0B24;   正确应该返回0x00000025

执行(2) 后:读取内容:90ABCDEFGHIJKLMNOPQRSTUVWXYZ!!!!!!!!!!!!!!!!!!!!!!!!!!!! 共56个字节,前面8个

                       字节未读取,后面多了27个!

执行(3 )后:读取目录信息,本来为32字节,结果返回24字节,前面的8个字节也是未读出。

       

            不知道是什么情况,大拿能帮忙分析一下吗?


写文件时,每次写入后,都执行函数res = CH376FileClose( TRUE );  /* 关闭文件,自动更新文件长度 */;

文件长度是更新的。但是我往U盘文件USB.TXT文件中写入40个 0x12最后打开文件只有1个字节。但是我用WINHEX查看USB盘,发现文件长度是1个字节,但是对应的文件发现40个0x12是正确写入的,不知道什么情况。感觉和读取应该是一个问题。查看的USB文件如图:

2.jpg


建议调一下底层接口时序。采用什么接口、速度?有没有换过其他U盘试。4#,文件长度的更新还可以写0长度字节来刷新,可以试一下。


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