[求助]CH376創(chuàng)建文件成功為什么打不開

我使用CH376創(chuàng)建文件成功,但是文件使用讀取函數(shù)打不開,但是讀取函數(shù)可以打開不是376創(chuàng)建的文件,以下分別是我的讀取函數(shù)以及創(chuàng)建文件函數(shù) INT32U OpenFileFromU(PUINT8 pDestAddr, const char *pFileName) {

char FileName[16]; INT8U err,s; INT32U int32u1,int32u2; INT32U TolFileSize,TolSector,mSector,LastSize;

FileName[0]='/'; strcpy(FileName+1,pFileName);

strcpy( (char *)FileName1.Name, (char *)FileName); err = CH376FileOpen( FileName1.Name); /* 打開文件,該文件在根目錄下 */ //打開文件錯(cuò)誤 報(bào)錯(cuò) if(USB_INT_SUCCESS != err) { return OPENFILEERR; }

//文件大小 TolFileSize= CH376GetFileSize( ); //總的扇區(qū)數(shù) //字節(jié)不是扇區(qū)的整數(shù)倍 //扇區(qū)加一 TolSector=TolFileSize/DEF_SECTOR_SIZE; if((TolFileSize%DEF_SECTOR_SIZE)!=0) { TolSector+=1; } //初始化讀到緩存的地址 //mCmdParam.SectorRead.mStartSector=(UINT32)(pDestAddr);

//每次讀255個(gè)扇區(qū)(最大只可以讀255個(gè)扇區(qū)) 需要寫入的次數(shù) int32u1=TolSector/255; //剩余的扇區(qū)數(shù) mSector=TolSector%255; int32u2=0; if(int32u1>0) { do { //一次讀取255個(gè)扇區(qū)數(shù)據(jù) //一次最大只可以讀255個(gè)扇區(qū) //因?yàn)閙CmdParam.ReadX.mSectorCount為字節(jié)類型 //mCmdParam.SectorRead.mSectorCount=255; err=CH376SecRead(pDestAddr+int32u2*255*DEF_SECTOR_SIZE,255 ,NULL) ; //讀取 if(USB_INT_SUCCESS!=err) { return OPENFILEERR; } int32u1--; int32u2++;

}while(int32u1!=0); } if(mSector > 0) { //OS_ENTER_CRITICAL(); err=CH376SecRead(pDestAddr+int32u2*255*DEF_SECTOR_SIZE,mSector,NULL) ; //OS_EXIT_CRITICAL(); if(USB_INT_SUCCESS!=err) { return OPENFILEERR; } } //讀文件完成 關(guān)閉文件

err = CH376FileClose(TRUE);

//關(guān)閉文件錯(cuò)誤 報(bào)錯(cuò)處理 if(USB_INT_SUCCESS!=err) { return OPENFILEERR; } return TolFileSize;

}

//寫文件 成功返回TRUE,失敗返回FALSE INT32U WriteFileToU(PUINT8 pDestAddr, char *pFileName,INT32U uiFileSize) { //OS_//cpu_sr //cpu_sr; char FileName[16]; INT8U err; INT32U int32u1,int32u2,int32u3; INT32U TolSector,mSector,FileSize; UINT8 s; //cpu_sr = 0; FileSize = uiFileSize; if(strlen(pFileName) <= 4)//ZHULIJUN120906 ADD 無文件名的.DPP報(bào)錯(cuò) { return FALSE; } FileName[0]='/'; strcpy(FileName+1,pFileName); strcpy( (char *)FileName1.Name, (char *)FileName); //生成文件 //OS_ENTER_CRITICAL();

err = CH376FileCreate(FileName1.Name); //OS_EXIT_CRITICAL(); //報(bào)錯(cuò) if(USB_INT_SUCCESS!=err) { return FALSE; } s = CH376FileOpen( FileName1.Name); /* 再次打開文件 */ if(s == USB_INT_SUCCESS) { s = CH376DirInfoRead( ); /* 讀取當(dāng)前文件的目錄信息FAT_DIR_INFO,將相關(guān)數(shù)據(jù)調(diào)到內(nèi)存中 */

if(s == USB_INT_SUCCESS) { buf[0] = ATTR_ARCHIVE; CH376WriteOfsBlock( buf, STRUCT_OFFSET( FAT_DIR_INFO, DIR_Attr ), 1 ); /* 向內(nèi)部緩沖區(qū)偏移地址DIR_Attr寫入1個(gè)字節(jié) */ buf[0] = (UINT8)MAKE_FILE_TIME( InRtc.Hour, InRtc.Minute, InRtc.Second ); //低八位在前 buf[1] = (UINT8)MAKE_FILE_TIME( InRtc.Hour, InRtc.Minute, InRtc.Second )>>8; //高八位在后 CH376WriteOfsBlock( buf, STRUCT_OFFSET( FAT_DIR_INFO, DIR_CrtTime ), 2 ); /* 向內(nèi)部緩沖區(qū)偏移地址DIR_CrtTime寫入2個(gè)字節(jié) */ buf[0] = (UINT8)MAKE_FILE_DATE( InRtc.Year, InRtc.Month, InRtc.Date ); //低八位在前 buf[1] = (UINT8)MAKE_FILE_DATE( InRtc.Year, InRtc.Month, InRtc.Date )>>8; //高八位在后 CH376WriteOfsBlock( buf, STRUCT_OFFSET( FAT_DIR_INFO, DIR_CrtDate ), 2 ); /* 向內(nèi)部緩沖區(qū)偏移地址DIR_CrtDate寫入2個(gè)字節(jié) */ buf[0] = (UINT8)FileSize; buf[1] = (UINT8)FileSize>>8; buf[2] = (UINT8)FileSize>>16; buf[3] = (UINT8)FileSize>>24; CH376WriteOfsBlock( buf, STRUCT_OFFSET( FAT_DIR_INFO, DIR_FileSize ), 4 ); /* 向內(nèi)部緩沖區(qū)偏移地址DIR_FileSize寫入4個(gè)字節(jié) */

s = CH376DirInfoSave( ); /* 保存文件的目錄信息 */ if ( s == USB_INT_SUCCESS ) { /* 成功修改并保存 */ } }

}

//VAR_FILE_SIZE TolSector=uiFileSize/DEF_SECTOR_SIZE; if((uiFileSize%DEF_SECTOR_SIZE)!=0) { TolSector+=1; }

//每次寫255個(gè)扇區(qū)(最大只可以寫255個(gè)扇區(qū)) 需要寫入的次數(shù) int32u1=TolSector/255; //剩余的扇區(qū)數(shù) mSector=TolSector%255; int32u2 = 0; if(int32u1>0) { do { //一次寫入255個(gè)扇區(qū)的數(shù)據(jù) //一次最大只可以寫255個(gè)扇區(qū) //因?yàn)閙CmdParam.WriteX.mSectorCount為字節(jié)類型 //寫入數(shù)據(jù)到文件 err = CH376SecWrite(pDestAddr+int32u2*255*DEF_SECTOR_SIZE,255,NULL); //報(bào)錯(cuò) if(USB_INT_SUCCESS!=err) { return FALSE; } int32u1--; int32u2++; }while(int32u1!=0); } if(mSector>0) { //寫入剩余的扇區(qū)數(shù)據(jù)

//寫入數(shù)據(jù)到文件 err = CH376SecWrite(pDestAddr+int32u2*255*DEF_SECTOR_SIZE,mSector,NULL); //報(bào)錯(cuò) if(USB_INT_SUCCESS!=err) { return FALSE; } } //關(guān)閉文件 err = CH376FileClose(TRUE); //報(bào)錯(cuò) if(USB_INT_SUCCESS!=err) { return FALSE; } return TRUE; }

你看一下你創(chuàng)建文件名的格式?文件名必須是8+3格式的,英文大寫文件名,數(shù)字和漢字。如果想要支持長(zhǎng)文件名和小寫文件名請(qǐng)參考CH376EVT\EVT\EXAM\EXAM11


文件名的格式是對(duì)的


那么你創(chuàng)建的文件名是什么樣的文件名?所謂打不開是在計(jì)算機(jī)上面打不開嗎?


不是,是在我們自己的移動(dòng)設(shè)備上


我們先是創(chuàng)建這個(gè)文件,然后打開,經(jīng)過調(diào)試,發(fā)現(xiàn)創(chuàng)建的文件和打開的文件都是一樣的,而且內(nèi)容也是正確的,但是我們要打開進(jìn)行預(yù)覽的時(shí)候總是加載失敗


只有登錄才能回復(fù),可以選擇微信賬號(hào)登錄

国产91精品新入口,国产成人综合网在线播放,九热这里只有精品,本道在线观看,美女视频a美女视频,韩国美女激情视频,日本美女pvp视频