s = mInitCH376Host( );?
while ( 1 ) {
while ( CH376DiskConnect( ) != USB_INT_SUCCESS ) { ?/* 檢查U盤是否連接,等待U盤插入,對于SD卡,可以由單片機直接查詢SD卡座的插拔狀態(tài)引腳 */
mDelaymS( 100 );
LCD_ShowString(4,3,"沒有優(yōu)盤");
}
mDelaymS( 200 );?
/* 延時,可選操作,有的USB存儲器需要幾十毫秒的延時 */
/* 對于檢測到USB設(shè)備的,最多等待100*50mS,主要針對有些MP3太慢,對于檢測到USB設(shè)備并且連接DISK_MOUNTED的,最多等待5*50mS,主要針對DiskReady不過的 */
for ( i = 0; i < 100; i ++ ) { ?/* 最長等待時間,100*50mS */
mDelaymS( 50 );
s = CH376DiskMount( ); ?/* 初始化磁盤并測試磁盤是否就緒 */
if ( s == USB_INT_SUCCESS ){
LCD_ShowString(4,3,"準(zhǔn)備就緒");
mDelaymS( 200 );?
//s = ListAll( );?
break;
}/* 準(zhǔn)備好 */
else if ( s == ERR_DISK_DISCON ){
LCD_ShowString(4,3,"設(shè)備斷開");
break;} ?/* 檢測到斷開,重新檢測并計時 */
if ( CH376GetDiskStatus( ) >= DEF_DISK_MOUNTED && i >= 5 ) break; ?/* 有的U盤總是返回未準(zhǔn)備好,不過可以忽略,只要其建立連接MOUNTED且嘗試5*50mS */
}
if ( s == ERR_DISK_DISCON ) { ?/* 檢測到斷開,重新檢測并計時 */
//printf( "Device gone\n" );
LCD_ShowString(4,3,"設(shè)備拔出");
continue;
}
if ( CH376GetDiskStatus( ) < DEF_DISK_MOUNTED ) { ?/* 未知USB設(shè)備,例如USB鍵盤、打印機等 */
goto UnknownUsbDevice;
}
//i = CH376ReadBlock( buf ); ?/* 如果需要,可以讀取數(shù)據(jù)塊CH376_CMD_DATA.DiskMountInq,返回長度 */
//if ( i == sizeof( INQUIRY_DATA ) ) { ?/* U盤的廠商和產(chǎn)品信息 */
//buf[ i ] = 0;
//LCD_ShowString(0,,((P_INQUIRY_DATA)buf) -> VendorIdStr );
//}
mDelaymS( 20 );
UnknownUsbDevice:
LCD_ShowString(4,3,"未知設(shè)備");
while ( CH376DiskConnect( ) == USB_INT_SUCCESS ) { ?/* 檢查U盤是否連接,等待U盤拔出 */
mDelaymS( 100 );
}
mDelaymS( 200 );
}