我用atmega64讀寫U盤,采用的CH375B,用的貴公司提供的庫函數(shù) 【問題1】我現(xiàn)在采用的字節(jié)方式寫文本文件,在U盤上寫一個文本文件,我想更新其中一部分文件,現(xiàn)在采用的辦法是 mCmdParam.ByteLocate.mByteOffset = CH375vFileSize-14; CH375ByteLocate( ); mCmdParam.ByteWrite.mByteCount = 14; for(i=0;i<12;i++) { mCmdParam.ByteWrite.mByteBuffer[i] = temp[i]; } mCmdParam.ByteWrite.mByteBuffer[12]=0x0D; mCmdParam.ByteWrite.mByteBuffer[13]=0x0A;
CH375ByteWrite( ); filesize=CH375vFileSize; i = CH375FileClose( ); mStopIfError( i ); 例如,有一個文件是080203112210 080203112210,想把后半段更新一下,改成080203112210 090305081123 通過上面的方法實現(xiàn)不了,更新不了文件,請問怎樣才能實現(xiàn)呢? 【問題2】另外,如果想獲得當(dāng)前文件的創(chuàng)建時間,則怎么實現(xiàn)呢?我現(xiàn)在采用CH375FileModify()函數(shù),不改變?nèi)魏螀?shù),mCmdParam.Modify.mFileTime,mCmdParam.Modify.mFileDate中的到的時間不對啊 mCmdParam.Modify.mFileAttr = 0xff; mCmdParam.Modify.mFileTime = 0xffff; mCmdParam.Modify.mFileDate = 0xffff; mCmdParam.Modify.mFileSize = 0xffffffff; i = CH375FileModify( ); mStopIfError( i ); //獲取文件創(chuàng)建日期和時間 temptime.year=(UINT8)((mCmdParam.Modify.mFileDate>>9)&0x007F+80);//文件創(chuàng)建時間年 temptime.month=(mCmdParam.Modify.mFileDate>>5)&0x000F;//月 temptime.day=mCmdParam.Modify.mFileDate&0x001F;//日 temptime.hour=mCmdParam.Modify.mFileTime>>11;//時 temptime.minute=(mCmdParam.Modify.mFileTime>>5)&0x003F;//分 temptime.second=(mCmdParam.Modify.mFileTime&0x001F)<<1; //秒 【問題3】計算U盤剩余容量溢出 i = CH375DiskQuery( ); mStopIfError( i ); return((unsigned int)((mCmdParam.DiskSize.mDiskSizeSec * (mCmdParam.Query.mFreeSector>>9))>>11)); 我的U盤是1G的,計算剩余容量,返回值為8890,溢出了,我用了很多方法都溢出了。 用同樣的方法計算U盤的總大小去沒有問題(CH375DiskSize( ))。
我用的是ICCAVR。