請問一下CH376T SET_FILE_SIZE指令問題

使用SET_FILE_SIZE命令時,不能設(shè)置文件大小。


使用信息:

芯片:CH376T? 版本V4.4


由于官方庫沒有提供這一指令的實現(xiàn)函數(shù),函數(shù)是自己編寫的。

voidCH376SetFileSize( UINT32 size )? /* 讀取當(dāng)前文件長度 */

{

? xWriteCH376Cmd( CMD50_SET_FILE_SIZE );

xWriteCH376Data( 0x68 );? /* head */

? ? ? ??

? ? ? ? xWriteCH376Data( (UINT8)(size & 0xff) );? /* 長度,低位在前 */

? ? ? ? xWriteCH376Data( (UINT8)((size > 8) & 0xff) );

? ? ? ? xWriteCH376Data( (UINT8)((size > 16) & 0xff) );

? ? ? ? xWriteCH376Data( (UINT8)((size > 24) & 0xff) );


? ? ? ? xEndCH376Cmd( );

}


指令函數(shù)使用:

CH376SetFileSize(0x60000);

s = CH376FileClose( TRUE );? /* 關(guān)閉文件 */ //(也使用過FALSE)


然后重新打開該文件,使用GET_FILE_SIZE讀取文件大小,并printf。

offset = CH376GetFileSize();

printf( "offset = %x\n",(UINT16)offset );


最后結(jié)果是,SET_FILE_SIZE指令并不能實現(xiàn)文件大小更改,請問一下為什么?謝謝。



熱門產(chǎn)品 : USB3.0 HUB控制器:CH634

跟進(jìn):使用庫自帶的寫文件系統(tǒng)變量命令CH376WriteVar32也不行(因為函數(shù)實際上是一樣的)


你好:
使用 CH376SetFileSize 只是刷新 CH376內(nèi)存中的數(shù)據(jù)長度,并沒有真正寫入U盤中,需要進(jìn)行文件保存。
文件保存的方法建議:

步驟1. CH376FileClose( TRUE );或調(diào)用寫文件函數(shù),寫入0長度數(shù)據(jù);
步驟2. 執(zhí)行一次底層傳輸(例如打開某個文件/目錄,讀寫文件,創(chuàng)建/刪除文件等);這步對某些U盤是可選操作,建議加上。

另外,問下,你這個文件長度相對于實際寫入數(shù)據(jù)是變大還是減小???




@3樓,您好:

  1. 步驟一我有使用到,但也是沒有效果,文件大小并沒有被改動,但我并沒有測試步驟2

  2. 新的文件長度相對于實際是增大的,因為我是想創(chuàng)建一個文件后,將文件指針移動到后面指定位置再進(jìn)行寫入。

  3. 后面我也使用過直接修改系統(tǒng)信息(用修改日期的那個方法),但是設(shè)置之后,在PC中顯示的大小是正確的,但是不能打開文件,顯示已經(jīng)損壞。(這種情況存在于設(shè)置大小>0x1000,偏移比較小的話就基本上可以實現(xiàn),太大的話文件才會錯誤)

  4. 為了解決我實際的需求,我后面的做法是新建文件后,直接全部填0,然后再重新寫入我自己的數(shù)據(jù),這樣可以實現(xiàn)。

  5. 后續(xù)我會按照3樓提供的步驟二重新測試一下。謝謝


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

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