我用的ch376T,采用公司例程,發(fā)現(xiàn) (1)在U盤創(chuàng)建文件時(shí),用例程仿真時(shí)成功的在U盤創(chuàng)建了文件MY_ADC.TXT,單我用程序中的時(shí)鐘時(shí)間(ds1302)動(dòng)態(tài)的創(chuàng)建文件名稱時(shí),仿真時(shí)成功,把U盤拿到計(jì)算機(jī)上檢查,在U盤中發(fā)現(xiàn)該文件,但無(wú)法打開(kāi)該文件,提示是該文件非法; (2)同時(shí),無(wú)法修改文件的創(chuàng)建時(shí)間
void writefiledata(void) { unsigned char s,u; //保存CH376的操作狀態(tài)或出錯(cuò)代碼 unsigned char buf[126]; char filename_now[32];
if( CH376DiskConnect( ) != USB_INT_SUCCESS ) return;
Delay(0xAFFFF); for ( s = 0; s < 10; s ++ ) { /* 最長(zhǎng)等待時(shí)間,10*50mS */ Delay(0xAFFFF);Delay(0xAFFFF); Delay(0xAFFFF);Delay(0xAFFFF); u = CH376DiskMount( ); /* 初始化磁盤并測(cè)試磁盤是否就緒 */ if ( u == USB_INT_SUCCESS ) break; /* 準(zhǔn)備好 */ } //定義文件名稱,原來(lái)用"/MY_ADC.TXT"成功創(chuàng)建文件并能在計(jì)算機(jī)上打開(kāi)并讀出數(shù)據(jù) //現(xiàn)在,用新定義的文件名來(lái)進(jìn)行下面的文件創(chuàng)建并寫數(shù)據(jù),操作好象沒(méi)有問(wèn)題,在U盤上存在該文件, //但在計(jì)算機(jī)上不能打開(kāi)該文件,說(shuō)該文件是不存在的. for(s=0;s<32;s++) filename_now[s]=0; sprintf( filename_now, "/%02d%02d%02d.txt", month, day, hour);
//s = CH376FileOpen( "/MY_ADC.TXT" ); /* 打開(kāi)文件,該文件在根目錄下 */ s = CH376FileOpen( filename_now ); /* 打開(kāi)文件,該文件在根目錄下 */ if ( s == USB_INT_SUCCESS ) { /* 文件存在并且已經(jīng)被打開(kāi),移動(dòng)文件指針到尾部以便添加數(shù)據(jù) */ s = CH376ByteLocate( 0xFFFFFFFF ); /* 移到文件的尾部 */ } else {//if ( s == ERR_MISS_FILE ) { /* 沒(méi)有找到文件,必須新建文件 */ s = CH376FileCreate( NULL ); /* 新建文件并打開(kāi),如果文件已經(jīng)存在則先刪除后再新建,不必再提供文件名,剛才已經(jīng)提供給CH376FileOpen */ } //else mStopIfError( s ); /* 打開(kāi)文件時(shí)出錯(cuò) */ for(u=0;u<200;u++){ s=sprintf(buf,"%03d,%03d,%03d,%03d,%03d,%03d,%03d,%03d,%03d,%03d\xd\xa",u,u,u,u,u,u,u,u,u,u); s = CH376ByteWrite( buf, s, NULL ); // 以字節(jié)為單位向文件寫入數(shù)據(jù) } s = CH376FileClose( TRUE ); /* 關(guān)閉文件,自動(dòng)計(jì)算文件長(zhǎng)度,以字節(jié)為單位寫文件,建議讓程序庫(kù)關(guān)閉文件以便自動(dòng)更新文件長(zhǎng)度 */
/* 為指定文件設(shè)置創(chuàng)建日期和時(shí)間 */ /* 為指定文件設(shè)置創(chuàng)建日期和時(shí)間 */ //現(xiàn)在,不能修改文件創(chuàng)建日期和時(shí)間 s = SetFileCreateTime( filename_now, MAKE_FILE_DATE( 2000+year, month, day ), MAKE_FILE_TIME( hour, minute, second ) ); while ( CH376DiskConnect( ) == USB_INT_SUCCESS ) { /* 檢查U盤是否連接,等待U盤拔出 */ Delay(0xAFFFF); } }
/* 為指定文件設(shè)置創(chuàng)建日期和時(shí)間 */ /* 輸入?yún)?shù): 原始文件名在iFileName中, 新的創(chuàng)建日期和時(shí)間: iCreateDate, iCreateTime */ /* 返回狀態(tài)碼: USB_INT_SUCCESS = 設(shè)置成功, 其它狀態(tài)碼參考CH376INC.H */ unsigned char SetFileCreateTime( PUINT8 iFileName, unsigned int iCreateDate, unsigned int iCreateTime ) { unsigned char s; unsigned char buf[64];
s = CH376FileOpen( iFileName ); /* 打開(kāi)文件 */ 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] = (UINT8)iCreateTime; /* 文件創(chuàng)建的時(shí)間,低8位在前 */ buf[1] = (UINT8)(iCreateTime>>8); /* 文件創(chuàng)建的時(shí)間,高8位在后 */ CH376WriteOfsBlock( buf, STRUCT_OFFSET( FAT_DIR_INFO, DIR_CrtTime ), 2 ); /* 向內(nèi)部緩沖區(qū)偏移地址DIR_CrtTime寫入2個(gè)字節(jié) */ buf[0] = (UINT8)iCreateDate; /* 文件創(chuàng)建的日期,低8位在前 */ buf[1] = (UINT8)(iCreateDate>>8); /* 文件創(chuàng)建的日期,高8位在后 */ CH376WriteOfsBlock( buf, STRUCT_OFFSET( FAT_DIR_INFO, DIR_CrtDate ), 2 ); /* 向內(nèi)部緩沖區(qū)偏移地址DIR_CrtDate寫入2個(gè)字節(jié) */ s = CH376DirInfoSave( ); /* 保存文件的目錄信息 */ if ( s == USB_INT_SUCCESS ) { /* 成功修改并保存 */ /* 文件讀寫操作等... */ } } CH376FileClose( FALSE ); /* 關(guān)閉文件 */ } return( s ); }