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

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

?? ch374hft.c

?? CH374 USB-HOST文件系統單片機子程序庫
?? C
?? 第 1 頁 / 共 2 頁
字號:
					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+CH374vSectorSize-1)/CH374vSectorSize, 計算文件的扇區數,因為讀寫是以扇區為單位的 */
		}
		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 += CH374vSectorSize - 1;  /* 默認情況下,以扇區方式讀取數據時,無法讀出文件尾部不足1個扇區的部分,所以必須臨時加大文件長度以讀取尾部零頭 */
			i = CH374FileReadX( );  /* 從文件讀取數據 */
			CH374vFileSize -= CH374vSectorSize - 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();   直接讀取從文件的第(CH374vSectorSize*3)個字節開始的數據,前3個扇區被跳過

	    如果希望將新數據添加到原文件的尾部,可以移動文件指針
		i = CH374FileOpen( );
		mCmdParam.Locate.mSectorOffset = 0xffffffff;  移到文件的尾部,以扇區為單位,如果原文件是3字節,則從CH374vSectorSize個字節處開始添加
		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;  /* 不要自動計算文件長度,如果自動計算,那么該長度總是CH374vSectorSize的倍數 */
		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一区二区三区免费野_久草精品视频
精品三级av在线| 亚洲成人你懂的| 久久人人爽爽爽人久久久| 国产精品一卡二| 天堂成人国产精品一区| 一区二区三区日韩精品视频| 欧美高清在线一区二区| 精品久久人人做人人爽| 精品视频在线免费| 91麻豆国产福利精品| 成人av在线播放网站| 丁香婷婷深情五月亚洲| 欧美色网站导航| 久久久久久麻豆| 不卡欧美aaaaa| 麻豆精品新av中文字幕| 日韩成人一级大片| 经典三级在线一区| 黄色小说综合网站| 丁香六月综合激情| 一本大道久久a久久综合| 91高清视频在线| 日韩欧美久久一区| 欧美日韩国产成人在线91| 欧美另类变人与禽xxxxx| 在线播放中文一区| 精品国产乱码久久久久久蜜臀| 精品国产一区二区三区久久久蜜月 | www一区二区| 精品国产91洋老外米糕| 中文字幕精品在线不卡| 日韩电影在线免费观看| 国产精品系列在线播放| 在线亚洲+欧美+日本专区| 日韩精品一区在线观看| 久久久久国产精品人| 亚洲网友自拍偷拍| 高清不卡一区二区在线| 欧美高清激情brazzers| 国产精品三级电影| 国产乱人伦精品一区二区在线观看| 韩国女主播成人在线| 欧美久久久久久蜜桃| 中文字幕欧美日韩一区| 日韩主播视频在线| 国产成人丝袜美腿| 精品国内片67194| 免费人成黄页网站在线一区二区| 91免费在线播放| 亚洲欧洲精品一区二区三区| 国内精品久久久久影院薰衣草 | 欧美一区午夜视频在线观看| 亚洲最快最全在线视频| 99视频精品免费视频| 欧美国产欧美综合| 国产成a人亚洲精品| 国产精品视频九色porn| 成人妖精视频yjsp地址| 欧美亚洲综合色| 婷婷开心激情综合| 日韩亚洲欧美一区二区三区| 蜜桃视频在线一区| 国产三级欧美三级日产三级99| 国产二区国产一区在线观看| 国产欧美一区二区精品性色超碰| 国产成人精品免费一区二区| |精品福利一区二区三区| 欧洲亚洲国产日韩| 亚洲精品va在线观看| 在线亚洲精品福利网址导航| 日韩成人av影视| 欧美国产欧美综合| 欧美日韩成人一区二区| 国产剧情一区二区三区| 一区二区三区日韩在线观看| 欧美大片一区二区| 色天天综合色天天久久| 午夜精品在线看| 久久久精品国产99久久精品芒果| 成人网页在线观看| 日本欧美在线观看| 一区二区三区视频在线看| 精品国产一区二区三区不卡| 欧美日韩你懂得| 99精品视频一区二区| 亚洲自拍偷拍九九九| 国产欧美精品一区二区色综合 | 国产精品护士白丝一区av| 久久一区二区三区四区| 国产亚洲欧美中文| 国产精品久久久久久久久搜平片 | 丁香五精品蜜臀久久久久99网站 | 丝袜亚洲另类欧美| 久久久五月婷婷| 欧美久久免费观看| 欧美一区二区视频免费观看| 91精品国产综合久久精品麻豆| 欧美日韩亚洲另类| 日韩欧美国产三级电影视频| 日韩欧美国产系列| 国产精品麻豆99久久久久久| 亚洲免费观看高清在线观看| 亚洲一区二区美女| 狠狠网亚洲精品| 色偷偷成人一区二区三区91| 欧美日韩在线不卡| 国产日韩欧美一区二区三区乱码| 国产精品久久久久久久久果冻传媒 | 2020日本不卡一区二区视频| 国产精品久久久久久久久久免费看| 一区二区三区欧美视频| 久久er精品视频| 欧美久久久久久蜜桃| 国产精品久久久久久久久免费樱桃 | 美女脱光内衣内裤视频久久网站 | 久久久亚洲欧洲日产国码αv| 中文字幕免费一区| 免费成人av在线播放| 色综合久久综合| 国产精品成人午夜| 国产高清精品在线| 欧美本精品男人aⅴ天堂| 亚洲人吸女人奶水| 成人激情免费网站| 久久先锋影音av鲁色资源网| 亚洲午夜视频在线| 91同城在线观看| 亚洲黄色性网站| 色av一区二区| 亚洲电影你懂得| 欧美精品一二三区| 亚洲国产精品精华液网站| 91免费看`日韩一区二区| 国产精品乱人伦一区二区| 国产福利一区二区三区在线视频| 欧美变态tickling挠脚心| 日韩电影在线观看电影| 911国产精品| 国产一区二区三区视频在线播放| 日韩一区二区精品葵司在线| 免费高清在线视频一区·| 欧美欧美欧美欧美首页| 日韩精品欧美成人高清一区二区| 欧美日韩1234| 国产在线精品一区在线观看麻豆| 精品精品国产高清a毛片牛牛| 国产福利精品一区| 亚洲精品中文字幕在线观看| 欧美影片第一页| 精品中文字幕一区二区小辣椒| 欧美经典一区二区| 欧美少妇性性性| 国产成人精品一区二| 亚洲一区二区免费视频| 久久色在线视频| 欧美亚州韩日在线看免费版国语版| 天天色图综合网| 亚洲日本一区二区| 久久久久97国产精华液好用吗| 色呦呦国产精品| 岛国一区二区三区| 国内成人精品2018免费看| 一区二区三区中文字幕精品精品| 日韩欧美第一区| 欧美色窝79yyyycom| 91在线观看污| 成人涩涩免费视频| 久久国产精品99久久久久久老狼| 亚洲精品水蜜桃| 亚洲欧洲日韩综合一区二区| 久久一区二区视频| 欧美精品一区二| 欧美一区二区免费观在线| 在线观看亚洲成人| 成av人片一区二区| 不卡一区中文字幕| 91麻豆产精品久久久久久 | 久久综合九色综合欧美就去吻| 欧美色欧美亚洲另类二区| 色综合一区二区三区| 成人av综合一区| 91欧美激情一区二区三区成人| 丁香激情综合国产| 色av一区二区| 日韩一区二区在线观看视频| 欧美成人一级视频| 国产精品福利影院| 一区二区三区精品在线观看| 又紧又大又爽精品一区二区| 亚洲一区二区成人在线观看| 午夜视黄欧洲亚洲| 国产福利一区二区| 在线精品视频一区二区三四| 91精品国产乱| 国产精品麻豆久久久| 日本少妇一区二区| www.日韩av| www一区二区| 日韩精品亚洲一区| 91在线观看成人|