按照CH375HF手册向已有文件追加数据,操作成功后文件消失

具体就是我按照那个CH375HF手册5.2.6向亦有文件追加数据,通过串口看到所有操作都成功,但是读取不到数据,而且将U盘接到PC上看不到文件,但现实已用空间增多罗,不知什么原因 我的代码如下所示 *****stop_if_error函数***** //如果错误则显示错误代码并停机等待 void stop_if_error(char *operation_name,int return_code) { printf("%20s返回值:0x%x",operation_name,return_code);//使用%20s便于右端对齐,无其他作用 if (return_code==ERR_SUCCESS) { printf(",操作成功\n"); return; /*操作成功:返回*/ } else printf(",操作失败\n"); /*显示错误*/ while ( 1 ); } ******add_data_2_file函数****** void add_data_2_file(void) { int i=0,j=0; //打开文件 strcpy(mCmdParam.Open.mPathName,"/TEST.TXT"); stop_if_error("CH375FileOpen()",CH375FileOpen()); //移到文件末尾(2K=4扇区) mCmdParam.Locate.mSectorOffset=0xffffffff; stop_if_error("CH375FileLocate()",CH375FileLocate());

//新增3扇区 printf("新增3扇区\n"); for(i=0;i<3;i++) { for (j= 0;j<512;j++) { FILE_DATA_BUF[j]='x'; //实际应用中,数据可以来自外部ADC或者日志数据 } mCmdParam.Write.mSectorCount=1; stop_if_error("CH375FileWrite()",CH375FileWrite()); } //修改文件长度 mCmdParam.Modify.mFileSize=((4+3)*512); stop_if_error("CH375FileModify()",CH375FileModify());

//读取所有内容 mCmdParam.Read.mSectorCount=(4+3);//设置读取的扇区数 CH375vFileSize += CH375vSectorSize - 1; //默认情况下,以扇区方式读取数据时,无法读出文件尾部不足1个扇区的部分,所以必须临时加大文件长度以读取尾部零头 stop_if_error("CH375FileRead()",CH375FileRead()); CH375DirtyBuffer(); //因为文件读写缓冲区与磁盘数据缓冲区重叠,所以在CH375FileRead读文件后和在CH375FileWrite写文件前必须清除磁盘缓冲区 printf("文件内容为:\n%s",FILE_DATA_BUF); CH375vFileSize-=CH375vSectorSize-1; //恢复原文件长度

//关闭文件 stop_if_error("CH375FileClose()",CH375FileClose()); }

现在我感觉程序是没有问题的,貌似是CH375FileModify()操作后会导致windows无法识别U盘的格式了,因为U盘已用空间增大说明数据确实写入到U盘了

我已经确定是文件被隐藏了,因为吧U盘接到windows上使用搜索功能能找到文件,打开也能看到追加的数据 ******************* 现在我想知道怎么在使用CH375FileModify()不让文件自动隐藏,貌似一旦使用这个函数所有文件就被隐藏了,加入这一句也不行:mCmdParam.Modify.mFileAttr=0xff;//不修改文件属性


文件属性你不修改则返回原来的属性,确保你原来的属性不为隐藏。或者你可以用CH375创建文件再追加数据试试。


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