亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? ch374hft.c

?? CH374 USB-HOST文件系統單片機子程序庫
?? C
?? 第 1 頁 / 共 2 頁
字號:
/* 對于檢測到USB設備的,最多等待100*50mS,主要針對有些MP3太慢,對于檢測到USB設備并且連接DISK_MOUNTED的,最多等待5*50mS,主要針對DiskReady不過的 */
				for ( i = 0; i < 100; i ++ ) {  /* 最長等待時間,100*50mS */
					CH374DelaymS( 50 );
					printf( "Ready ?\n" );
					if ( CH374DiskReady( ) == ERR_SUCCESS ) break;  /* 查詢磁盤是否準備好 */
					if ( CH374DiskStatus < DISK_CONNECT ) {  /* 檢測到斷開,重新檢測并計時 */
						printf( "Device gone\n" );
						break;  /* 重新等待 */
					}
					if ( CH374DiskStatus >= DISK_MOUNTED && i > 5 ) break;  /* 有的U盤總是返回未準備好,不過可以忽略,只要其建立連接MOUNTED且嘗試5*50mS */
					if ( CH374DiskStatus == DISK_CONNECT ) {  /* 有設備連接 */
						if ( CH374vHubPortCount ) {  /* 連接了一個USB-HUB,但可能沒有U盤 */
							printf( "No Udisk in USB_HUB\n" );
							break;
						}
						else {  /* 未知USB設備,有可能是U盤反應太慢,所以要再試試 */
						}
					}
				}
				if ( CH374DiskStatus >= DISK_MOUNTED ) {  /* 是U盤 */
					break;  /* 開始操作U盤 */
				}
				if ( CH374DiskStatus == DISK_CONNECT ) {  /* 多次嘗試還是不行,估計不是U盤 */
					if ( CH374vHubPortCount ) {  /* 連接了一個USB-HUB,但可能沒有U盤 */
/* 在while中等待HUB端口有U盤 */
					}
					else {  /* 未知USB設備,例如USB鍵盤、打印機等,而且已經試了很多次還不行 */
						printf( "Unknown device\n" );
						goto UnknownUsbDevice;
					}
				}
			}
		}
		LED_OUT_ACT( );  /* LED亮 */
#endif

#if DISK_BASE_BUF_LEN
		if ( DISK_BASE_BUF_LEN < CH374vSectorSize ) {  /* 檢查磁盤數據緩沖區是否足夠大,CH374vSectorSize是U盤的實際扇區大小 */
			printf( "Too large sector size\n" );
			goto UnknownUsbDevice;
		}
#endif

/* 查詢磁盤物理容量 */
/*		printf( "DiskSize\n" );
		i = CH374DiskSize( );  
		mStopIfError( i );
		printf( "TotalSize = %u MB \n", (unsigned int)( mCmdParam.DiskSize.mDiskSizeSec * ( CH374vSectorSize / 512 ) >> 11 ) );  顯示為以MB為單位的容量
*/
/* 讀取原文件 */
		printf( "Open\n" );
		strcpy( (char *)mCmdParam.Open.mPathName, "\\C51\\CH374HFT.C" );  /* 文件名,該文件在C51子目錄下 */
		i = CH374FileOpen( );  /* 打開文件 */
		if ( i == ERR_MISS_DIR || i == ERR_MISS_FILE ) {  /* 沒有找到文件 */
/* 列出文件 */
			if ( i == ERR_MISS_DIR ) pCodeStr = (PUINT8)"\\*";  /* C51子目錄不存在則列出根目錄下的文件 */
			else pCodeStr = (PUINT8)"\\C51\\CH*";  /* CH374HFT.C文件不存在則列出\C51子目錄下的以CH開頭的文件 */
			printf( "List file %s\n", pCodeStr );
			for ( count = 0; count < 10000; count ++ ) {  /* 最多搜索前10000個文件,實際上沒有限制 */
				strcpy( (char *)mCmdParam.Open.mPathName, (char *)pCodeStr );  /* 搜索文件名,*為通配符,適用于所有文件或者子目錄 */
				i = strlen( (char *)mCmdParam.Open.mPathName );
				mCmdParam.Open.mPathName[ i ] = 0xFF;  /* 根據字符串長度將結束符替換為搜索的序號,從0到254,如果是0xFF即255則說明搜索序號在CH374vFileSize變量中 */
				CH374vFileSize = count;  /* 指定搜索/枚舉的序號 */
				i = CH374FileOpen( );  /* 打開文件,如果文件名中含有通配符*,則為搜索文件而不打開 */
/* CH374FileEnum 與 CH374FileOpen 的唯一區別是當后者返回ERR_FOUND_NAME時那么對應于前者返回ERR_SUCCESS */
				if ( i == ERR_MISS_FILE ) break;  /* 再也搜索不到匹配的文件,已經沒有匹配的文件名 */
				if ( i == ERR_FOUND_NAME ) {  /* 搜索到與通配符相匹配的文件名,文件名及其完整路徑在命令緩沖區中 */
					printf( "  match file %04d#: %s\n", (unsigned int)count, mCmdParam.Open.mPathName );  /* 顯示序號和搜索到的匹配文件名或者子目錄名 */
					continue;  /* 繼續搜索下一個匹配的文件名,下次搜索時序號會加1 */
				}
				else {  /* 出錯 */
					mStopIfError( i );
					break;
				}
			}
			pCodeStr = (PUINT8)"找不到/C51/CH374HFT.C文件\xd\n";
			for ( i = 0; i != 255; i ++ ) {
				if ( ( my_buffer[i] = *pCodeStr ) == 0 ) break;
				pCodeStr++;
			}
			NewSize = i;  /* 新文件的長度 */
			SecCount = 1;  /* (NewSize+CH374vFileSize-1)/CH374vFileSize, 計算文件的扇區數,因為讀寫是以扇區為單位的 */
		}
		else {  /* 找到文件或者出錯 */
			mStopIfError( i );
/*			printf( "Query\n" );
			i = CH374FileQuery( );  查詢當前文件的信息
			mStopIfError( i );*/
			printf( "Read\n" );
			if ( CH374vFileSize > sizeof( my_buffer ) ) {  /* 原文件長度大于緩沖區長度,一次讀取不完 */
				SecCount = sizeof( my_buffer ) / CH374vSectorSize;  /* 由于演示板用的62256只有32K字節,其中CH374子程序用CH374vSectorSize個字節,所以只讀取不超過60個扇區,也就是不超過30K字節 */
				NewSize = sizeof( my_buffer );  /* 由于RAM有限所以限制長度 */
			}
			else {  /* 如果原文件較小,那么使用原長度 */
				SecCount = ( CH374vFileSize + CH374vSectorSize - 1 ) / CH374vSectorSize;  /* 計算文件的扇區數,因為讀寫是以扇區為單位的,先加CH374vSectorSize-1是為了讀出文件尾部不足1個扇區的部分 */
				NewSize = (UINT16)CH374vFileSize;  /* 原文件的長度 */
			}
			printf( "Size=%ld, Len=%d, Sec=%d\n", CH374vFileSize, NewSize, (UINT16)SecCount );
			mCmdParam.ReadX.mSectorCount = SecCount;  /* 讀取全部數據,如果超過60個扇區則只讀取60個扇區 */
			mCmdParam.ReadX.mDataBuffer = &my_buffer[0];  /* 指向文件數據緩沖區的起始地址 */
			CH374vFileSize += CH374vFileSize - 1;  /* 默認情況下,以扇區方式讀取數據時,無法讀出文件尾部不足1個扇區的部分,所以必須臨時加大文件長度以讀取尾部零頭 */
			i = CH374FileReadX( );  /* 從文件讀取數據 */
			CH374vFileSize -= CH374vFileSize - 1;  /* 恢復原文件長度 */
			mStopIfError( i );
/*
		如果文件比較大,一次讀不完,可以再調用CH374FileReadX繼續讀取,文件指針自動向后移動
		while ( 1 ) {
			c = 32;   每次讀取32個扇區
			mCmdParam.ReadX.mSectorCount = c;   指定讀取的扇區數
			mCmdParam.ReadX.mDataBuffer = &my_buffer[0];  指向文件數據緩沖區的起始地址
			CH374FileReadX();   讀完后文件指針自動后移
			處理數據
			if ( mCmdParam.ReadX.mSectorCount < c ) break;   實際讀出的扇區數較小則說明文件已經結束
		}

	    如果希望從指定位置開始讀寫,可以移動文件指針
		mCmdParam.Locate.mSectorOffset = 3;  跳過文件的前3個扇區開始讀寫
		i = CH374FileLocate( );
		mCmdParam.ReadX.mSectorCount = 10;
		mCmdParam.ReadX.mDataBuffer = &my_buffer[0];  指向文件數據緩沖區的起始地址
		CH374FileReadX();   直接讀取從文件的第(CH374vFileSize*3)個字節開始的數據,前3個扇區被跳過

	    如果希望將新數據添加到原文件的尾部,可以移動文件指針
		i = CH374FileOpen( );
		mCmdParam.Locate.mSectorOffset = 0xffffffff;  移到文件的尾部,以扇區為單位,如果原文件是3字節,則從CH374vFileSize個字節處開始添加
		i = CH374FileLocate( );
		mCmdParam.WriteX.mSectorCount = 10;
		mCmdParam.WriteX.mDataBuffer = &my_buffer[0];
		CH374FileWriteX();   在原文件的后面添加數據

使用CH374FileReadX可以自行定義數據緩沖區的起始地址
		mCmdParam.ReadX.mSectorCount = 2;
		mCmdParam.ReadX.mDataBuffer = 0x2000;  將讀出的數據放到2000H開始的緩沖區中
		CH374FileReadX();   從文件中讀取2個扇區到指定緩沖區

使用CH374FileWriteX可以自行定義數據緩沖區的起始地址
		mCmdParam.WiiteX.mSectorCount = 2;
		mCmdParam.WriteX.mDataBuffer = 0x4600;  將4600H開始的緩沖區中的數據寫入
		CH374FileWriteX();   將指定緩沖區中的數據寫入2個扇區到文件中

*/
			printf( "Close\n" );
			i = CH374FileClose( );  /* 關閉文件 */
			mStopIfError( i );

			i = my_buffer[100];
			my_buffer[100] = 0;  /* 置字符串結束標志,最多顯示100個字符 */
			printf( "Line 1: %s\n", my_buffer );
			my_buffer[100] = i;  /* 恢復原字符 */
			for ( count=0; count < NewSize; count ++ ) {  /* 將文件中的小寫字符轉換為大寫 */
				c = my_buffer[ count ];
				if ( c >= 'a' && c <= 'z' ) my_buffer[ count ] = c - ( 'a' - 'A' );
			}
		}

#ifdef EN_DISK_WRITE  /* 子程序庫支持寫操作 */
/* 產生新文件 */
		printf( "Create\n" );
		strcpy( (char *)mCmdParam.Create.mPathName, "\\NEWFILE.TXT" );  /* 新文件名,在根目錄下 */
		i = CH374FileCreate( );  /* 新建文件并打開,如果文件已經存在則先刪除后再新建 */
		mStopIfError( i );
		printf( "Write\n" );
		mCmdParam.WriteX.mSectorCount = SecCount;  /* 寫入所有扇區的數據 */
		mCmdParam.WriteX.mDataBuffer = &my_buffer[0];  /* 指向文件數據緩沖區的起始地址 */
		i = CH374FileWriteX( );  /* 向文件寫入數據 */
		mStopIfError( i );
/* 默認情況下,如果扇區數mCmdParam.WriteX.mSectorCount不為0那么CH374FileWriteX只負責寫入數據而不修改文件長度,
   如果長時間不寫入數據則應該更新文件長度,防止突然斷電后前面寫入的數據與文件長度不相符,
   如果需要寫完數據后立即修改/更新文件長度,那么可以置扇區數mCmdParam.WriteX.mSectorCount為0后調用CH374FileWriteX強行更新文件長度,
   如果確定不會突然斷電或者后面很快有數據不斷寫入則不必更新文件長度,可以提高速度并減少U盤損耗(U盤內部的內存壽命有限,不宜頻繁改寫) */
		printf( "Modify\n" );
		mCmdParam.Modify.mFileAttr = 0xff;  /* 輸入參數: 新的文件屬性,為0FFH則不修改 */
		mCmdParam.Modify.mFileTime = 0xffff;  /* 輸入參數: 新的文件時間,為0FFFFH則不修改,使用新建文件產生的默認時間 */
		mCmdParam.Modify.mFileDate = MAKE_FILE_DATE( 2004, 5, 18 );  /* 輸入參數: 新的文件日期: 2004.05.18 */
		mCmdParam.Modify.mFileSize = NewSize;  /* 輸入參數: 如果原文件較小,那么新的文件長度與原文件一樣長,否則被RAM所限,如果文件長度大于64KB,那么NewSize必須為UINT32 */
		i = CH374FileModify( );  /* 修改當前文件的信息,修改日期和長度 */
		mStopIfError( i );
		printf( "Close\n" );
		mCmdParam.Close.mUpdateLen = 0;  /* 不要自動計算文件長度,如果自動計算,那么該長度總是CH374vFileSize的倍數 */
		i = CH374FileClose( );
		mStopIfError( i );

/* 刪除某文件 */
/*		printf( "Erase\n" );
		strcpy( (char *)mCmdParam.Create.mPathName, "\\OLD" );  將被刪除的文件名,在根目錄下
		i = CH374FileErase( );  刪除文件并關閉
		if ( i != ERR_SUCCESS ) printf( "Error: %02X\n", (UINT16)i );  顯示錯誤
*/

/* 查詢磁盤信息 */
/*		printf( "Disk\n" );
		i = CH374DiskQuery( );
		mStopIfError( i );
		printf( "Fat=%d, Total=%ld, Free=%ld\n", (UINT16)mCmdParam.Query.mDiskFat, mCmdParam.Query.mTotalSector, mCmdParam.Query.mFreeSector );
*/
#endif
UnknownUsbDevice:
		printf( "Take out\n" );
		while ( 1 ) {  /* 支持USB-HUB */
			CH374DelaymS( 10 );  /* 沒必要頻繁查詢 */
			if ( CH374DiskConnect( ) != ERR_SUCCESS ) break;  /* 查詢方式: 檢查磁盤是否連接并更新磁盤狀態,返回成功說明連接 */
		}
		LED_OUT_INACT( );  /* LED滅 */
		CH374DelaymS( 200 );
	}
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
午夜激情一区二区| 国内精品自线一区二区三区视频| 亚洲精品国产视频| 日韩电影网1区2区| 96av麻豆蜜桃一区二区| 欧美三级中文字幕| 最新国产成人在线观看| 久久精品噜噜噜成人av农村| 色婷婷激情综合| 中文字幕av免费专区久久| 日韩av午夜在线观看| 99这里都是精品| 欧美极品aⅴ影院| 国模少妇一区二区三区| 欧美日韩大陆一区二区| 亚洲另类中文字| 972aa.com艺术欧美| 亚洲国产精品av| 成人黄色一级视频| 欧美激情一区二区三区四区 | 欧美一区二区三区在线看| 亚洲日本va午夜在线电影| 成人免费毛片app| 久久久亚洲午夜电影| 九色|91porny| 精品国产免费人成在线观看| 爽好久久久欧美精品| 欧美性大战久久久| 亚洲成a人v欧美综合天堂| 91麻豆自制传媒国产之光| 国产精品久久影院| 成人av在线一区二区三区| 国产拍揄自揄精品视频麻豆| 国产成人免费视频一区| 久久精品一区二区三区不卡| 久久精品二区亚洲w码| 欧美一级欧美三级在线观看| 日本大胆欧美人术艺术动态| 欧美一区二区三区视频在线| 奇米一区二区三区| 日韩精品一区二区三区视频| 韩国av一区二区三区四区| 久久久噜噜噜久久中文字幕色伊伊| 激情小说欧美图片| 亚洲精品在线三区| 高清在线观看日韩| 亚洲日本一区二区三区| 在线观看日韩av先锋影音电影院| 亚洲一级二级三级| 欧美一区日韩一区| 国产精品一级二级三级| 国产精品久久三区| 欧美伊人久久久久久午夜久久久久| 亚洲成人黄色影院| 欧美日本高清视频在线观看| 蜜臀av亚洲一区中文字幕| 精品久久99ma| 99免费精品视频| 日韩不卡免费视频| 久久久久99精品一区| 色呦呦日韩精品| 另类欧美日韩国产在线| 国产精品你懂的在线| 欧美网站大全在线观看| 黄一区二区三区| 亚洲免费大片在线观看| 欧美日韩卡一卡二| 成人一区在线看| 亚洲大片一区二区三区| 久久亚洲二区三区| 欧洲av在线精品| 国产精品白丝av| 亚洲成人7777| 国产精品高潮呻吟| 69堂成人精品免费视频| 成人一级黄色片| 日韩激情在线观看| 亚洲欧洲av在线| 2017欧美狠狠色| 6080午夜不卡| 91蜜桃在线免费视频| 黄色精品一二区| 午夜日韩在线电影| 国产精品久久久久影院老司| 欧美电视剧在线观看完整版| 欧美主播一区二区三区| 国产成a人无v码亚洲福利| 视频一区二区不卡| 中文字幕一区二区三区蜜月 | 亚洲成人手机在线| 国产精品热久久久久夜色精品三区| 欧美精品久久99| 色www精品视频在线观看| 国产精品一卡二卡在线观看| 免费人成精品欧美精品| 伊人色综合久久天天人手人婷| 国产午夜精品久久久久久免费视| 91精品免费观看| 欧美日韩国产三级| 色婷婷av一区二区| 92精品国产成人观看免费| 国产91精品一区二区| 国产呦精品一区二区三区网站| 日本欧美久久久久免费播放网| 亚洲国产成人va在线观看天堂| 亚洲色图视频网| 国产精品久久久久久户外露出| 久久久久国产精品人| 日韩精品在线一区| 精品久久久久久久久久久久久久久 | 视频在线在亚洲| 午夜视频一区二区三区| 一区二区久久久久| 亚洲卡通欧美制服中文| 一区二区三区欧美视频| 亚洲免费在线电影| 亚洲人成在线播放网站岛国| 亚洲日本va午夜在线电影| 亚洲日韩欧美一区二区在线| 亚洲黄一区二区三区| 亚洲激情六月丁香| 亚洲va天堂va国产va久| 午夜精彩视频在线观看不卡| 人人狠狠综合久久亚洲| 另类欧美日韩国产在线| 国产精品一区二区久久不卡 | 久久这里只有精品首页| 久久久影院官网| 国产精品久久久久影院老司| 亚洲啪啪综合av一区二区三区| 亚洲自拍偷拍麻豆| 午夜av电影一区| 久久99国产精品久久99果冻传媒| 极品少妇xxxx精品少妇偷拍| 国产乱妇无码大片在线观看| 国产成人免费视频一区| 一本色道久久综合亚洲91| 欧美性极品少妇| 亚洲精品一区二区三区四区高清| 国产日韩精品一区| 亚洲美女区一区| 久久91精品国产91久久小草| 国产一区福利在线| 99re热这里只有精品免费视频| 精品视频一区二区不卡| 精品久久99ma| 亚洲综合视频在线观看| 久久精品国产久精国产爱| www.亚洲人| 欧美一区二区啪啪| 中文字幕av资源一区| 日韩精品每日更新| 福利电影一区二区| 欧美日韩午夜在线视频| 久久久久久久久久美女| 亚洲一区av在线| 国产一区二区女| 欧美日韩国产在线播放网站| 国产亚洲精品bt天堂精选| 亚洲午夜精品在线| 成人永久看片免费视频天堂| 欧美精品久久一区| 国产精品不卡一区| 精品制服美女丁香| 欧美色中文字幕| 国产精品久久久久7777按摩| 奇米影视在线99精品| 色哟哟一区二区在线观看| 精品久久久久久久久久久久久久久 | 日本v片在线高清不卡在线观看| 国产福利一区在线| 欧美日韩国产首页| 亚洲人成网站在线| 国产成人亚洲综合a∨婷婷| 欧美日韩国产一级二级| 国产色综合久久| 另类人妖一区二区av| 欧美日韩中文字幕一区二区| 国产精品久久久一本精品| 国内外成人在线| 日韩欧美一区在线| 亚洲成a人片综合在线| 一本色道久久综合狠狠躁的推荐| 久久久精品tv| 精品在线播放免费| 欧美一区二区三区思思人| 亚洲国产cao| 欧美在线视频日韩| 亚洲色图一区二区三区| 99精品视频在线播放观看| 欧美经典一区二区| 国产精品一二三区在线| 久久亚洲精精品中文字幕早川悠里| 日韩成人一区二区三区在线观看| 在线影视一区二区三区| 亚洲女人小视频在线观看| av在线不卡电影| 中文字幕视频一区二区三区久| 成人免费毛片片v| 日韩一区欧美一区|