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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? hpi.c

?? ls811的USB FAT文件系統(tǒng)
?? C
?? 第 1 頁 / 共 2 頁
字號:
	
	if(pDirInfo->startCluster<0x2)
	{
		UartRspBlock.errcode=ERC_NODEVICE;
		return FALSE;		
	}
	pDirInfo->length=0;
	ThisFile.bFileOpen=0;
	bstop=0;
	
	for(sector=0;sector<DeviceInfo.BPB_RootEntCnt;sector++)
	{   
		if(!RBC_Read(DeviceInfo.RootStartSector+sector,1,DBUF))
		{
			UartRspBlock.errcode=ERC_DEVICEERR;
				return FALSE;	
		}

		for(i=0;i<DeviceInfo.BPB_BytesPerSec;i=i+32)
		{
			if((DBUF[i]==0x00)||(DBUF[i]==0xE5))
			{
				for(j=0;j<32;j++)
					DBUF[i+j]=*(pBuffer+j);
					
				if(!RBC_Write(DeviceInfo.RootStartSector+sector,1,DBUF))
		  	 	{
		  	 		UartRspBlock.errcode=ERC_DEVICEERR;
					return FALSE;	
		  	 	}
				bstop=1;
				break;
			}
		}
		if(bstop==1)	break;
	}
	
	ThisFile.StartCluster=SwapINT16(pDirInfo->startCluster);
	ThisFile.LengthInByte=0;
	ThisFile.ClusterPointer=ThisFile.StartCluster;
	ThisFile.SectorPointer=FirstSectorofCluster(ThisFile.StartCluster);
	ThisFile.OffsetofSector=0;
	ThisFile.SectorofCluster=0;
	ThisFile.bFileOpen=1;
	ThisFile.pointer=0;
	ThisFile.FatSectorPointer=0;

	FreeFat.SectorNum=DeviceInfo.FatStartSector;
	FreeFat.OldSectorNum=DeviceInfo.FatStartSector;
	FreeFat.OffsetofSector=2;
	
	return TRUE;
#undef RspBlockCreateFile
}

/*-----------------------------------------------------------------------------------
名稱: unsigned char WriteFile(unsigned int writeLength,unsigned char *pBuffer)
功能: 寫入數(shù)據(jù)到文件.
-----------------------------------------------------------------------------------*/
unsigned char WriteFile(unsigned int writeLength,unsigned char *pBuffer)
{
#define RspBlockWriteFile UartRspBlock.RspBlock.Rsp_WriteFile

	unsigned int len,sector,i;
	PDIR_INFO pDirInfo;
	unsigned char bSuccess,bStop,step;
	
	if(!bXXGFlags.bits.SLAVE_IS_ATTACHED)	//U盤是否已經(jīng)連接
	{
		UartRspBlock.errcode=ERC_NODEVICE;
		return FALSE;		
	}
	if(!ThisFile.bFileOpen)			//文件是否已經(jīng)打開
	{
		UartRspBlock.errcode=ERC_FILENOTOPENED;
		return FALSE;		
	}
		
	ThisFile.bFileOpen=0;
	bSuccess=1;
	bStop=0;

	UartRspBlock.len=0;
	while(writeLength>0)				
	{
		 if(ThisFile.OffsetofSector>0)
		 {
		 	if(writeLength+ThisFile.OffsetofSector>DeviceInfo.BPB_BytesPerSec)
		   		len=DeviceInfo.BPB_BytesPerSec;
			else
		   		len=writeLength+ThisFile.OffsetofSector;
		   		
		 	if(!RBC_Read(ThisFile.SectorPointer,1,DBUF))
			{
		   		UartRspBlock.errcode=ERC_DEVICEERR;
				return FALSE;	
		   	}

			len=len-ThisFile.OffsetofSector;
		   	for(i=0;i<len;i++)
		   		DBUF[ThisFile.OffsetofSector+i]=*(pBuffer+i);
		   		
		   	if(!RBC_Write(ThisFile.SectorPointer,1,DBUF))
		   	{
		   		UartRspBlock.errcode=ERC_DEVICEERR;
				return FALSE;	
		   	}
		  	ThisFile.OffsetofSector=ThisFile.OffsetofSector+len;
		 }
		 else
		 {
		 	if(writeLength>DeviceInfo.BPB_BytesPerSec)
		   	{
		   		step=writeLength/DeviceInfo.BPB_BytesPerSec;
		   		
		   		if(step>DeviceInfo.BPB_SecPerClus)
		   		{
		   			step=DeviceInfo.BPB_SecPerClus-ThisFile.SectorofCluster;
		   			len=step*DeviceInfo.BPB_BytesPerSec;	
		   		}
		   		else	
		   		{
		   			step=step-ThisFile.SectorofCluster;
		   			len=step*DeviceInfo.BPB_BytesPerSec;
		   		}
		    }
			else
		   	{
		   		step=1;
		   		len=writeLength;
		   	}
		   	
		 	if(!RBC_Write(ThisFile.SectorPointer,step,pBuffer+UartRspBlock.len))
		   	{
		   		UartRspBlock.errcode=ERC_DEVICEERR;
				return FALSE;	
		   	}
		   	ThisFile.OffsetofSector=len;
		}
		
		writeLength-=len;
		UartRspBlock.len+=len;

		/////////////更新文件指針 //////////////////////////////
		//改變參數(shù):OffsetofSector,SectorofCluster,SectorPointer,ClusterPointer
		step=ThisFile.OffsetofSector/DeviceInfo.BPB_BytesPerSec;
		  
		if(step>0)
		{	
		   	ThisFile.OffsetofSector-=step*DeviceInfo.BPB_BytesPerSec;
		   	ThisFile.SectorofCluster+=step;
		   	
		   	if(ThisFile.SectorofCluster>DeviceInfo.BPB_SecPerClus-1)
		   	{
		   		ThisFile.SectorofCluster=0;
		   		
		   		if(ThisFile.pointer+UartRspBlock.len<ThisFile.LengthInByte)
		   			ThisFile.ClusterPointer=GetNextClusterNum(ThisFile.ClusterPointer);
		   		else
		 		 	ThisFile.ClusterPointer=CreateClusterLink(ThisFile.ClusterPointer);//GetNextClusterNum(ThisFile.ClusterPointer);
		 		 
		 		if(ThisFile.ClusterPointer==0x00)
		 		{
		   			UartRspBlock.errcode=ERC_DEVICEERR;
					return FALSE;	
		 		}
		 		ThisFile.SectorPointer=FirstSectorofCluster(ThisFile.ClusterPointer); 	
		   	}
		   	else
		   		ThisFile.SectorPointer=ThisFile.SectorPointer+step;
		}
	}//end while
	ThisFile.pointer+=UartRspBlock.len;
	UpdateFat(FreeFat.SectorNum);
	
	/*更新文件目錄信息*/
	if(bSuccess==1)
	{
		for(sector=0;sector<DeviceInfo.BPB_RootEntCnt;sector++)
	    {   
			if(!RBC_Read(DeviceInfo.RootStartSector+sector,1,DBUF))
			{
				UartRspBlock.errcode=ERC_DEVICEERR;
				return FALSE;	
			}
			
			for(i=0;i<DeviceInfo.BPB_BytesPerSec;i=i+32)
			{
				pDirInfo=(PDIR_INFO)(DBUF+i);
			
				if(pDirInfo->startCluster==SwapINT16(ThisFile.StartCluster))
				{
					if(ThisFile.pointer>ThisFile.LengthInByte)
						ThisFile.LengthInByte=ThisFile.pointer;
				
					pDirInfo->length=SwapINT32(ThisFile.LengthInByte);
					
					if(!RBC_Write(DeviceInfo.RootStartSector+sector,1,DBUF))
		   			{
		   				UartRspBlock.errcode=ERC_DEVICEERR;
						return FALSE;	
		   			}
					bStop=1;
				 	break;
				}
			}
			if(bStop==1)	break;
		}
	}
	UartRspBlock.len=0;
	ThisFile.bFileOpen=1;
	return TRUE;
#undef RspBlockWriteFile
}

/*-----------------------------------------------------------------------------------
名稱: unsigned char RemoveFile(unsigned char *pBuffer)
功能: 刪除文件.
-----------------------------------------------------------------------------------*/
unsigned char RemoveFile(unsigned char *pBuffer)
{
#define RspBlockRemoveFile UartRspBlock.RspBlock.Rsp_RemoveFile

	unsigned int sector,i;
	unsigned char bStop,j;
	PDIR_INFO pDirInfo;
	
	if(!bXXGFlags.bits.SLAVE_IS_ATTACHED)
	{
		UartRspBlock.errcode=ERC_NODEVICE;
		return FALSE;		
	}
	
	/*清除目錄*/
	for(sector=0;sector<DeviceInfo.BPB_RootEntCnt;sector++)
	{   
		if(!RBC_Read(DeviceInfo.RootStartSector+sector,1,DBUF))
		{
			UartRspBlock.errcode=ERC_DEVICEERR;
			return FALSE;	
		}
		for(i=0;i<DeviceInfo.BPB_BytesPerSec;i=i+32)
		{
			if(DBUF[i]==0x00)
			{
				UartRspBlock.errcode=ERC_FILENOTFOUND;
				return FALSE;	
			}
			j=0;
			
			while(DBUF[i+j]==*(pBuffer+j))
			{
				 j=j+1;
				 if(j>10) break;
			}//end while
			
			if(j>10)
			{	
			 	DBUF[i]=0xE5;
			 	pDirInfo=(PDIR_INFO)(DBUF+i);
			 	ThisFile.StartCluster=SwapINT16(pDirInfo->startCluster);

			 	if(!RBC_Write(DeviceInfo.RootStartSector+sector,1,DBUF))
				{
					UartRspBlock.errcode=ERC_DEVICEERR;
					return FALSE;	
				}
				
				/*清除FAT中的紀(jì)錄*/
				
				if(!DeleteClusterLink(ThisFile.StartCluster))
				{
					UartRspBlock.errcode=ERC_DEVICEERR;
					return FALSE;	
				}
			 	bStop=1;
			 	break;
			}
			
		}//end for
		if(bStop==1)	break;
		
	}//end search
	if(sector>=DeviceInfo.BPB_RootEntCnt)
	{
		UartRspBlock.errcode=ERC_FILENOTFOUND;
		return FALSE;	
	}
	
	return TRUE;
#undef RspBlockRemoveFile
}

/*-----------------------------------------------------------------------------------
名稱: unsigned char GetCapacity(void)
功能: 獲取磁盤空間.
-----------------------------------------------------------------------------------*/
unsigned char GetCapacity(void)
{	
#define RspBlockGetCapacity UartRspBlock.RspBlock.Rsp_GetCapacity
	
	unsigned int sectorNum,freesectorcnt,i;
	
	PREAD_CAPACITY_RSP pBuf;
	
	if(!bXXGFlags.bits.SLAVE_IS_ATTACHED)
	{
		UartRspBlock.errcode=ERC_NODEVICE;
		return FALSE;		
	}

	if(!RBC_ReadCapacity())
	{
		UartRspBlock.errcode=ERC_DEVICEERR;
		return FALSE;	
	}
	
	pBuf=(PREAD_CAPACITY_RSP)DBUF;
	RspBlockGetCapacity.disksize=SwapINT32((pBuf->LastLBA+1)*pBuf->BlockSize);
	sectorNum=DeviceInfo.FatStartSector;
	freesectorcnt=0;
	
	while(sectorNum<DeviceInfo.BPB_FATSz16+DeviceInfo.FatStartSector)
	{
		
		if(RBC_Read(sectorNum,1,DBUF))
		{
		  	for(i=0;i<DeviceInfo.BPB_BytesPerSec;i=i+2)
		  	{
		  	 	if((DBUF[i]==0xff)&&(DBUF[i+1]==0xff))
		  	 	{	
		  	 		freesectorcnt++;
		  	 	}
		  	}	
		}
		else
		{
			UartRspBlock.errcode=ERC_DEVICEERR;
			return FALSE;	
		}
		sectorNum++;
	}
	
	RspBlockGetCapacity.freedisksize=DeviceInfo.BPB_BytesPerSec*DeviceInfo.BPB_SecPerClus;
	RspBlockGetCapacity.freedisksize=freesectorcnt*RspBlockGetCapacity.freedisksize;
	RspBlockGetCapacity.freedisksize=SwapINT32(RspBlockGetCapacity.disksize)-RspBlockGetCapacity.freedisksize;
	RspBlockGetCapacity.freedisksize=SwapINT32(RspBlockGetCapacity.freedisksize);
		
	return TRUE;
#undef RspBlockGetCapacity
}

/*-----------------------------------------------------------------------------------
名稱: unsigned char GetFreeCapacity(void)
功能: 獲取磁盤剩余空間.
-----------------------------------------------------------------------------------*/
unsigned char GetFreeCapacity(void)
{
#define RspBlockGetCapacity UartRspBlock.RspBlock.Rsp_GetFreeCapacity

	if(!bXXGFlags.bits.SLAVE_IS_ATTACHED)
	{
		UartRspBlock.errcode=ERC_NODEVICE;
		return FALSE;		
	}
	
	return TRUE;
#undef RspBlockGetFreeCapacity
}

/*-----------------------------------------------------------------------------------
名稱: unsigned char SetFilePointer(unsigned long pointer)
功能: 將文件指針移動到指定位置.
-----------------------------------------------------------------------------------*/
unsigned char SetFilePointer(unsigned long pointer)
{
#define RspBlockSetFilePointer UartRspBlock.RspBlock.Rsp_SetFilePointer
	
	if(!bXXGFlags.bits.SLAVE_IS_ATTACHED)
	{
		UartRspBlock.errcode=ERC_NODEVICE;
		return FALSE;		
	}
	if(!ThisFile.bFileOpen)
	{
		UartRspBlock.errcode=ERC_FILENOTOPENED;
		return FALSE;		
	}
	
	ThisFile.pointer=pointer;
	if(ThisFile.pointer>ThisFile.LengthInByte)
	{
		UartRspBlock.errcode=ERC_LENGTHEXCEED;
		return FALSE;	
	}
	
	if(!GoToPointer(ThisFile.pointer))
	{
		ThisFile.bFileOpen=0;
		UartRspBlock.errcode=ERC_DEVICEERR;
		return FALSE;	
	}
	return TRUE;

#undef RspBlockSetFilePointer
}

/*-----------------------------------------------------------------------------------
名稱: unsigned char GetFirmwareVersion(void)
功能: 獲取軟件版本.
-----------------------------------------------------------------------------------*/
unsigned char GetFirmwareVersion(void)
{
#define RspBlockGetVersion UartRspBlock.RspBlock.Rsp_GetVersion
   RspBlockGetVersion.version=0x0102;
   return TRUE;
   #undef RspBlockGetVersion
}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
色94色欧美sute亚洲线路一ni| 日韩高清不卡一区| av在线不卡免费看| 亚洲欧美在线视频| 欧亚一区二区三区| 亚洲a一区二区| 欧美刺激脚交jootjob| 国产一区二区导航在线播放| 国产欧美视频一区二区| 成人激情视频网站| 亚洲精品免费播放| 91精品国产手机| 高清在线不卡av| 中文字幕日韩精品一区| 欧美三电影在线| 毛片不卡一区二区| 国产精品午夜电影| 在线影视一区二区三区| 日产欧产美韩系列久久99| 久久久久久毛片| 91浏览器打开| 日韩avvvv在线播放| 国产精品人妖ts系列视频| 欧美唯美清纯偷拍| 国产成人在线观看免费网站| 亚洲日本一区二区| 日韩精品一区二| 99久久精品情趣| 捆绑紧缚一区二区三区视频| 国产精品大尺度| 欧美一区二区三区四区五区| av一区二区三区四区| 首页国产丝袜综合| 成人免费一区二区三区在线观看| 777午夜精品视频在线播放| 国产成人午夜高潮毛片| 午夜精品免费在线观看| 中文欧美字幕免费| 欧美一级在线观看| 91美女在线看| 国产美女久久久久| 亚洲h精品动漫在线观看| 国产午夜精品在线观看| 欧美精品第一页| 97精品视频在线观看自产线路二| 捆绑变态av一区二区三区| 亚洲自拍偷拍麻豆| 欧美经典一区二区三区| 欧美一级夜夜爽| 色婷婷av一区二区三区之一色屋| 国产精品中文欧美| 免费国产亚洲视频| 亚洲成年人影院| 欧美激情一区二区三区蜜桃视频| 日韩欧美国产一二三区| 欧美人狂配大交3d怪物一区| 色婷婷综合久久久久中文| 国产一区二区三区免费看 | 日本成人在线不卡视频| 亚洲精品久久久蜜桃| 中国色在线观看另类| 久久中文字幕电影| 欧美变态tickling挠脚心| 91精品一区二区三区久久久久久| 一本一道综合狠狠老| 99精品欧美一区二区三区小说 | 成人久久久精品乱码一区二区三区| 奇米色一区二区| 亚洲不卡av一区二区三区| 亚洲三级小视频| 亚洲欧美激情视频在线观看一区二区三区 | 久久先锋资源网| 欧美不卡123| 欧美成人精品福利| 欧美一级欧美三级| 欧美精品1区2区| 欧美喷潮久久久xxxxx| 欧美精品tushy高清| 在线综合视频播放| 4438x成人网最大色成网站| 欧美老年两性高潮| 欧日韩精品视频| 欧美老肥妇做.爰bbww视频| 欧美精品一二三| 日韩欧美精品在线| 久久久精品免费网站| 国产三级欧美三级| 国产精品蜜臀av| 一区二区三区丝袜| 午夜精品免费在线观看| 久久国产福利国产秒拍| 国产制服丝袜一区| 国产91在线|亚洲| 91视频www| 91精品国产综合久久精品图片| 日韩一区二区精品葵司在线| 亚洲精品在线观看网站| 中文字幕+乱码+中文字幕一区| 欧美极品少妇xxxxⅹ高跟鞋 | 久久亚洲二区三区| 欧美激情一区二区在线| 一区二区三区自拍| 日产欧产美韩系列久久99| 激情成人综合网| 成人黄色免费短视频| 欧美午夜视频网站| 欧美r级电影在线观看| 国产精品美女久久久久久2018 | 精品视频一区三区九区| 欧美xxxx老人做受| 国产精品久久久久久户外露出| 亚洲人成伊人成综合网小说| 午夜精品久久久久久久| 国精产品一区一区三区mba视频| 成人99免费视频| 欧美日韩成人一区二区| 日本一区二区视频在线观看| 亚洲国产成人va在线观看天堂| 精品一区二区三区视频在线观看| 成人性生交大片免费看在线播放| 欧美日韩一区不卡| 欧美高清在线视频| 日韩精品一区第一页| 成人久久18免费网站麻豆 | 国产精品一区在线| 欧美天堂亚洲电影院在线播放| 久久免费视频一区| 亚洲成a人片综合在线| 成人黄色大片在线观看| 欧美v国产在线一区二区三区| 亚洲色图视频免费播放| 极品尤物av久久免费看| 欧美午夜精品一区| 国产精品美日韩| 国产麻豆精品久久一二三| 在线播放中文一区| 依依成人综合视频| 大美女一区二区三区| 日韩免费成人网| 亚洲第一福利视频在线| 97精品视频在线观看自产线路二| 久久综合九色综合97婷婷女人| 日韩电影在线看| 欧美日韩一区三区四区| 1区2区3区精品视频| 国产传媒欧美日韩成人| 久久综合成人精品亚洲另类欧美| 天天影视涩香欲综合网| 欧美日韩综合在线免费观看| 亚洲欧美日韩国产中文在线| 国产99久久久国产精品| 久久久久亚洲综合| 韩国v欧美v日本v亚洲v| 日韩欧美电影一二三| 水野朝阳av一区二区三区| 欧美亚男人的天堂| 亚洲综合久久久久| 色8久久精品久久久久久蜜| 综合久久久久久| 91玉足脚交白嫩脚丫在线播放| 久久精品人人爽人人爽| 久久精品国产第一区二区三区| 欧美日韩aaaaaa| 午夜一区二区三区在线观看| 91成人国产精品| 亚洲va欧美va人人爽午夜| 欧美午夜精品一区二区蜜桃| 亚洲第一电影网| 欧美一三区三区四区免费在线看 | 国产成人精品网址| 久久综合色播五月| 国产一区二区三区视频在线播放| 26uuu另类欧美| 国产suv精品一区二区6| 国产精品久久久久毛片软件| 成人黄色国产精品网站大全在线免费观看| 亚洲国产成人自拍| 色偷偷88欧美精品久久久| 亚洲一区二区三区国产| 欧美日韩一区二区三区四区五区| 亚洲午夜私人影院| 91麻豆精品91久久久久久清纯 | 久久精品男人天堂av| 国产凹凸在线观看一区二区| 亚洲欧洲美洲综合色网| 在线看不卡av| 日韩精品乱码av一区二区| 精品国产1区二区| 丰满白嫩尤物一区二区| 国产精品视频在线看| 91久久精品一区二区| 日欧美一区二区| 国产视频在线观看一区二区三区| 99久久精品情趣| 日韩二区在线观看| 国产日产欧美一区二区三区| 91久久精品一区二区| 久久99精品视频| 日韩一区在线免费观看| 欧美一区中文字幕|