CH376寫(xiě)文件,長(zhǎng)度無(wú)法自動(dòng)更新

我使用STM32+CH376實(shí)現(xiàn)U盤(pán)文件的讀寫(xiě)。目前遇到文件大小總是固定為1的問(wèn)題。

主代碼如下:

uint8_t AppZndbFile2UsbDiskMain(void)

{

? ? sDateTime dt;

? ? char filename[15];

? ? char testnr[18];

? ? uint16_t rsize;


? ? if(TRUE == AppZndbFile2UsbInit()) /* 已經(jīng)初始化 */

? ? {

? ? ? ? if(TRUE == CheckTimer(eTMR_UsbSpace))

? ? ? ? {

? ? ? ? ? ? StartTimer(eTMR_UsbSpace,1000);

? ? ? ? ? ? if(FALSE == UsbDiskIn)/* 沒(méi)有檢測(cè)到U盤(pán) */

? ? ? ? ? ? {

? ? ? ? ? ? ? ? UsbDiskIn = DrvCh376DiskConnect();/* 檢測(cè)到U盤(pán)已經(jīng)插入 */

? ? ? ? ? ? ? ? if(TRUE==UsbDiskIn)

? ? ? ? ? ? ? ? {

? ? ? ? ? ? ? ? ? ? if(TRUE == DrvCh376DiskMount()) ? /* U盤(pán)枚舉成功 */

? ? ? ? ? ? ? ? ? ? {

? ? ? ? ? ? ? ? ? ? ? ? dt = AppZndbDataRtcTime();

? ? ? ? ? ? ? ? ? ? ? ? //sprintf(filename,"%02d%02d%02d%02d%02d%02d.JL",dt.Year_U8,dt.Month_U8,dt.Day_U8,dt.Hour_U8,dt.Min_U8,dt.Sec_U8);

? ? ? ? ? ? ? ? ? ? ? ? sprintf(filename,"/%c%c%02d%02d%02d.REC\0",DecTo36Char(dt.Month_U8),DecTo36Char(dt.Day_U8),dt.Hour_U8,dt.Min_U8,dt.Sec_U8);

? ? ? ? ? ? ? ? ? ? ? ? if(TRUE == DrvCh376FileCreate((uint8_t*)filename))/* 文件創(chuàng)建完成 */

? ? ? ? ? ? ? ? ? ? ? ? {

? ? ? ? ? ? ? ? ? ? ? ? ? ? sprintf(testnr,"0123456789ABCDEF\r\n");

? ? ? ? ? ? ? ? ? ? ? ? ? ? DrvCh376FileWrite((uint8_t *)testnr,16,NULL);

? ? ? ? ? ? ? ? ? ? ? ? ? ? DrvCh376FileClose(TRUE);

? ? ? ? ? ? ? ? ? ? ? ? ? ? DelayMS(5);

? ? ? ? ? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? ? ? ? else

? ? ? ? ? ? ? ? ? ? {

? ? ? ? ? ? ? ? ? ? ? ? UsbDiskIn = FALSE;

? ? ? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? ? }

? ? ? ? ? ? }

? ? ? ? ? ? else

? ? ? ? ? ? {

? ? ? ? ? ? ? ? if(FALSE == DrvCh376DiskConnect()) UsbDiskIn = FALSE;

? ? ? ? ? ? }

? ? ? ? }

? ? }

? ? return UsbDiskIn;

}


上面函數(shù)DrvCh376****均直接采用示例里面的FILE_SYS.C的原型,未做任何更改。


執(zhí)行完成后,U盤(pán)可以看到文件名,文件大小為1字節(jié),利用Winhex直接查看U盤(pán)??梢钥吹綄?xiě)入的16個(gè)字節(jié)。

說(shuō)明文件內(nèi)容已經(jīng)寫(xiě)入,但文件的大小并未更新。


后右增加了設(shè)置文件大小指令,將FileClose的參數(shù)改為FALSE。文件大小仍然為1字節(jié)。


這個(gè)情況該如何解決?


熱門(mén)產(chǎn)品 : CH390:以太網(wǎng)控制器芯片

看到論壇有采用openfile再close的方法。

修部分內(nèi)容:

? ? ? ? ? ? ? ? ? ? ? ? ? ? DrvCh376FileClose(TRUE);/*FileCreate的關(guān)閉*/

? ? ? ? ? ? ? ? ? ? ? ? ? ? DelayMS(5);

? ? ? ? ? ? ? ? ? ? ? ? ? ? DrvCh376FileOpen((uint8_t *)filename);/*重新OpenFile*/

? ? ? ? ? ? ? ? ? ? ? ? ? ? DrvCH376SetFileInfo(dt,filesize);/* 更新文件日期及大小 */

? ? ? ? ? ? ? ? ? ? ? ? ? ? DelayMS(5);

? ? ? ? ? ? ? ? ? ? ? ? ? ? DrvCh376FileClose(FALSE);


這樣現(xiàn)在文件的大小和時(shí)間就是正確的了。



字節(jié)寫(xiě)之后使用CH376FileClose( 1 )可以更新文件大小。此外,?xWriteCH376Cmd( CMD2H_BYTE_WRITE );
?xWriteCH376Data(0);xWriteCH376Data( 0);
?即寫(xiě)0長(zhǎng)度同樣可以更新,可以一試。
?


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

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