s = mInitCH376Host( );
while ( 1 ) {
while ( CH376DiskConnect( ) != USB_INT_SUCCESS ) { /* 检查U盘是否连接,等待U盘插入,对于SD卡,可以由单片机直接查询SD卡座的插拔状态引脚 */
mDelaymS( 100 );
LCD_ShowString(4,3,"没有优盘");
}
mDelaymS( 200 );
/* 延时,可选操作,有的USB存储器需要几十毫秒的延时 */
/* 对于检测到USB设备的,最多等待100*50mS,主要针对有些MP3太慢,对于检测到USB设备并且连接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,"准备就绪");
mDelaymS( 200 );
//s = ListAll( );
break;
}/* 准备好 */
else if ( s == ERR_DISK_DISCON ){
LCD_ShowString(4,3,"设备断开");
break;} /* 检测到断开,重新检测并计时 */
if ( CH376GetDiskStatus( ) >= DEF_DISK_MOUNTED && i >= 5 ) break; /* 有的U盘总是返回未准备好,不过可以忽略,只要其建立连接MOUNTED且尝试5*50mS */
}
if ( s == ERR_DISK_DISCON ) { /* 检测到断开,重新检测并计时 */
//printf( "Device gone\n" );
LCD_ShowString(4,3,"设备拔出");
continue;
}
if ( CH376GetDiskStatus( ) < DEF_DISK_MOUNTED ) { /* 未知USB设备,例如USB键盘、打印机等 */
goto UnknownUsbDevice;
}
//i = CH376ReadBlock( buf ); /* 如果需要,可以读取数据块CH376_CMD_DATA.DiskMountInq,返回长度 */
//if ( i == sizeof( INQUIRY_DATA ) ) { /* U盘的厂商和产品信息 */
//buf[ i ] = 0;
//LCD_ShowString(0,,((P_INQUIRY_DATA)buf) -> VendorIdStr );
//}
mDelaymS( 20 );
UnknownUsbDevice:
LCD_ShowString(4,3,"未知设备");
while ( CH376DiskConnect( ) == USB_INT_SUCCESS ) { /* 检查U盘是否连接,等待U盘拔出 */
mDelaymS( 100 );
}
mDelaymS( 200 );
}