如題 用51單片機(W79E227)的異步串口方式(串口1)
如果 i值28,29,30,31的時候 能讀出來28個字符,且不報錯順利通過 如果i值不為這幾個數(shù),則要么等待時間特別長(8s左右),要么返回FA超時 一般情況下,小于27的數(shù)等待時間特別長,但能讀出來,大于32的數(shù),返回FA超時,屏蔽掉報錯程序mStopIfError( s );后,同樣只可以讀出來28個字節(jié)的數(shù)據(jù)
打開文件成功后 s = CH376ByteRead(buf, i, &RealCount ); mStopIfError( s );
另外寫的時候 buf里面裝的數(shù)超過30個的時候就會返回FA超時
新建文件成功后 strcpy( buf, "a1" ); s =CH376ByteWrite( buf, strlen( buf ), NULL ); mStopIfError( s ); 我用的異步串口的方式,改中斷等待時間沒用,該波特率也沒用
可能是什么地方出了錯?或者是說這個函數(shù)本來就是這樣 CH376ByteWrite
CH376ByteRead 都是網(wǎng)站上下載的程序 UINT8 CH376ByteRead( PUINT8 buf, UINT16 ReqCount, PUINT16 RealCount ) /* 以字節(jié)為單位從當(dāng)前位置讀取數(shù)據(jù)塊 */ { UINT8 s; xWriteCH376Cmd( CMD2H_BYTE_READ ); xWriteCH376Data( (UINT8)ReqCount ); xWriteCH376Data( (UINT8)(ReqCount>>8) ); // xEndCH376Cmd( ); if ( RealCount ) *RealCount = 0; while ( 1 ) { s = Wait376Interrupt( ); if ( s == USB_INT_DISK_READ ) { // s = CH376ReadBlock( buf ); /* 從當(dāng)前主機端點的接收緩沖區(qū)讀取數(shù)據(jù)塊,返回長度 */ if ( *(PUINT8)&buf ) s = CH376ReadBlockX( buf ); /* 外部RAM */ else s = CH376ReadBlockI( buf ); /* 內(nèi)部RAM */ xWriteCH376Cmd( CMD0H_BYTE_RD_GO ); // xEndCH376Cmd( ); buf += s; if ( RealCount ) *RealCount += s; } /* else if ( s == USB_INT_SUCCESS ) return( s );*/ /* 結(jié)束 */ else return( s ); /* 錯誤 */ } }
UINT8 CH376ByteWrite( PUINT8 buf, UINT16 ReqCount, PUINT16 RealCount ) /* 以字節(jié)為單位向當(dāng)前位置寫入數(shù)據(jù)塊 */ { UINT8 s; xWriteCH376Cmd( CMD2H_BYTE_WRITE ); xWriteCH376Data( (UINT8)ReqCount ); xWriteCH376Data( (UINT8)(ReqCount>>8) ); // xEndCH376Cmd( ); if ( RealCount ) *RealCount = 0; while ( 1 ) { s = Wait376Interrupt( ); if ( s == USB_INT_DISK_WRITE ) { // s = CH376WriteReqBlock( buf ); /* 向內(nèi)部指定緩沖區(qū)寫入請求的數(shù)據(jù)塊,返回長度 */ if ( *(PUINT8)&buf ) s = CH376WriteReqBlockX( buf ); /* 外部RAM */ else s = CH376WriteReqBlockI( buf ); /* 內(nèi)部RAM */ xWriteCH376Cmd( CMD0H_BYTE_WR_GO ); // xEndCH376Cmd( ); buf += s; if ( RealCount ) *RealCount += s; } /* else if ( s == USB_INT_SUCCESS ) return( s );*/ /* 結(jié)束 */ else return( s ); /* 錯誤 */ } }
另外一個問題:命令里面有一個“繼續(xù)枚舉文件”,也就是枚舉下一個文件,那要是想枚舉上一個文件該怎么辦