請(qǐng)問(wèn)u盤(pán)中的數(shù)據(jù)為什么是這樣?

用扇區(qū)寫(xiě)命令往u盤(pán)中寫(xiě)數(shù)據(jù),buffer中的數(shù)據(jù)是00和FF交替,可為什么u盤(pán)中的數(shù)據(jù)是這樣的呢? 程序是這樣的:

……

j=0; for(i=0;i<4096;i++) { buf[i]= j; j=~j; }

……

for(i=0;i<2;i++) { s=CH376SecWrite( buf, 8, NULL ); mStopIfError( s ); } s = CH376FileClose( TRUE ); mStopIfError( s );

……

桌面


UploadImages/201262114185399.rar


請(qǐng)用ultraedit打開(kāi),上面的文件,也可以看這里的圖片:UploadImages/20126211421132.rar


文件中的內(nèi)容如下:

00 80 02 02 1F 00 00 00 48 49 59 41 20 20 20 20; ....HIYA 55 42 20 46 6C 61 73 68 20 20 44 69 73 6B 20 25; UB Flash Disk % 7A 21 59 59 00 FF 00 FF 00 FF 00 FF 00 FF 00 FF; z!YY. . . . . . . 00 FF 00 FF 00 FF 00 FF 00 FF 00 FF 00 FF 00 FF; . . . . . . . . . 00 FF 00 FF 00 FF 00 FF 00 FF 00 FF 00 FF 00 FF; . . . . . . . . . …… …… 00 FF 00 FF 00 FF 00 FF 00 FF 00 FF 00 FF 00 FF; . . . . . . . . . 00 FF 00 FF 00 FF 00 FF 00 FF 00 FF 00 FF 00 FF; . . . . . . . . . 00 80 02 02 1F 00 00 00 48 49 59 41 20 20 20 20; ....HIYA 55 42 20 46 6C 61 73 68 20 20 44 69 73 6B 20 25; UB Flash Disk % 7A 21 59 59 00 FF 00 FF 00 FF 00 FF 00 FF 00 FF; z!YY. . . . . . . 00 FF 00 FF 00 FF 00 FF 00 FF 00 FF 00 FF 00 FF; . . . . . . . . . 00 FF 00 FF 00 FF 00 FF 00 FF 00 FF 00 FF 00 FF; . . . . . . . . . …… …… 00 FF 00 FF 00 FF 00 FF 00 FF 00 FF 00 FF 00 FF; . . . . . . . . . 00 FF 00 FF 00 FF 00 FF 00 FF 00 FF 00 FF 00 FF; . . . . . . . . .


文件中每次調(diào)用寫(xiě)命令CH376SecWrite( buf, 8, NULL ); 便會(huì)出現(xiàn): 00 80 02 02 1F 00 00 00 48 49 59 41 20 20 20 20; ....HIYA 55 42 20 46 6C 61 73 68 20 20 44 69 73 6B 20 25; UB Flash Disk % 7A 21 59 59 00 FF 00 FF 00 FF 00 FF 00 FF 00 FF; z!YY. . . . . . 以這些數(shù)據(jù)開(kāi)頭的數(shù)據(jù),請(qǐng)問(wèn)是怎么回事?

好像是我的u盤(pán)數(shù)據(jù),因?yàn)槲业膗盤(pán)是HIYA牌的。

但是這樣的話,我寫(xiě)了2次CH376SecWrite( buf, 8, NULL );的數(shù)據(jù)就不是完整的,因?yàn)槲页绦蛑械臄?shù)據(jù)完全是00和FF,如果把上面這些數(shù)據(jù)都變成00和FF的話,數(shù)據(jù)就是完整的,正好是8k字節(jié),可是這些數(shù)據(jù)是怎么回事呢?

煩請(qǐng)大俠指點(diǎn)。謝謝!


這肯定是你的緩沖區(qū)有問(wèn)題。 這個(gè)很好實(shí)驗(yàn),你在每次寫(xiě)數(shù)據(jù)的時(shí)候都去重新初始化一下緩沖區(qū)。這個(gè)數(shù)據(jù) 肯定是你寫(xiě)進(jìn)去的。 CH376初始化會(huì)獲取這個(gè)36字節(jié)的數(shù)據(jù),是否在U盤(pán)初始話之前初始化的緩沖區(qū)?然后后面有被其他函數(shù)使用這個(gè)緩沖區(qū)了? 把你的函數(shù)貼出來(lái)


Udisk( ) { UINT16 i, s,j; P_FAT_DIR_INFO pDir; UINT8 TarName[64]; mDelaymS( 100 ); /* 延時(shí)100毫秒 */

puts( "Start\n" );

s = mInitCH376Host( ); /* 初始化CH376 */ mStopIfError( s );

puts( "Wait Udisk/SD\n" ); while ( CH376DiskConnect( ) != USB_INT_SUCCESS ) { mDelaymS( 100 ); } mDelaymS( 200 ); /* 延時(shí),可選操作,有的USB存儲(chǔ)器需要幾十毫秒的延時(shí) */

for ( i = 0; i < 100; i ++ ) { /* 最長(zhǎng)等待時(shí)間,100*50mS */ mDelaymS( 50 ); puts( "Ready ?\n" ); s = CH376DiskMount( ); /* 初始化磁盤(pán)并測(cè)試磁盤(pán)是否就緒 */ if ( s == USB_INT_SUCCESS ) break; /* 準(zhǔn)備好 */ else if ( s == ERR_DISK_DISCON ) break; /* 檢測(cè)到斷開(kāi),重新檢測(cè)并計(jì)時(shí) */ if ( CH376GetDiskStatus( ) >= DEF_DISK_MOUNTED && i >= 5 ) break; /* 有的U盤(pán)總是返回未準(zhǔn)備好,不過(guò)可以忽略,只要其建立連接MOUNTED且嘗試5*50mS */ } if ( s == ERR_DISK_DISCON ) { /* 檢測(cè)到斷開(kāi),重新檢測(cè)并計(jì)時(shí) */ puts( "Device gone\n" ); }

j=0; for(i=0;i<512;i++) { buffer[i]= j; j=~j; }

strcpy( TarName, "\TEST.PCM" );

puts( "Create\n" ); s = CH376FileCreate( TarName ); mStopIfError( s );

puts( "Write\n" );

temp=0; while(1){ s=CH376SecWrite( buffer, 1, NULL ); temp++; if(temp==4)break; }

s=CH376SecWrite( buffer, 0, NULL ); /* 寫(xiě)0長(zhǎng)度,實(shí)際是刷新文件長(zhǎng)度,將CH376內(nèi)存中當(dāng)前文件長(zhǎng)度信息真正寫(xiě)入U(xiǎn)盤(pán)或者SD卡中 */ mStopIfError( s );

puts( "Close\n" );


上面是我的代碼,根據(jù)紅桃六老師的建議,我仔細(xì)看了一下緩沖區(qū),確實(shí)存在問(wèn)題,我又修改了一下代碼,如樓上所示。

前面的36個(gè)字節(jié)的數(shù)據(jù),現(xiàn)在還是會(huì)出現(xiàn): 00 80 02 02 1F 00 00 00 48 49 59 41 20 20 20 20; ....HIYA 55 42 20 46 6C 61 73 68 20 20 44 69 73 6B 20 25; UB Flash Disk % 7A 21 59 59 00 FF 00 FF 00 FF 00 FF 00 FF 00 FF; z!YY. . . . . . …… 00 FF 00 FF 00 FF 00 FF 00 FF 00 FF 00 FF 00 FF; . . . . . . . . . 00 FF 00 FF 00 FF 00 FF 00 FF 00 FF 00 FF 00 FF; . . . . . . . . .

現(xiàn)在我是總共寫(xiě)4個(gè)扇區(qū),每次寫(xiě)一個(gè)扇區(qū),寫(xiě)4次。 現(xiàn)在的情況是:整個(gè)文件2KB數(shù)據(jù)中,最前面的36個(gè)字節(jié)還是會(huì)出現(xiàn),只不過(guò)現(xiàn)在只出現(xiàn)一次,請(qǐng)問(wèn)這是哪里的問(wèn)題?

煩請(qǐng)紅桃六老師再幫忙看看。謝謝!


for(i=0;i<512;i++) { buffer= j; j=~j; }

這是什么意思?慢慢來(lái)。自己好好查查吧。如果把解決問(wèn)題的希望寄托給別人,總會(huì)產(chǎn)生依賴(lài)感。你犯了很多粗心的錯(cuò)誤。


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

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