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

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

?? hpi.c

?? 讀寫U盤C代碼,基于CH375FAT芯片,實用的一個代碼
?? C
?? 第 1 頁 / 共 2 頁
字號:

	    }
	/////////////////////////////////////////////
	//pDirInfo=(PDIR_INFO)RspBlockOpenFile.item;
	//ThisFile.FatSectorPointer=ThisFatSecNum(ThisFile.StartCluster);
	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)
{
#define RspBlockWriteFile CHRspBlock.RspBlock.Rsp_WriteFile
	unsigned int len,sector,i;
	PDIR_INFO pDirInfo;
	unsigned char bSuccess,bStop,step;

	if(!bXXGFlags.bits.SLAVE_IS_ATTACHED)	//U盤是否已經連接
	{
	CHRspBlock.errcode=ERC_NODEVICE;
	return FALSE;
	}
	if(!ThisFile.bFileOpen)			//文件是否已經打開
	{
	CHRspBlock.errcode=ERC_FILENOTOPENED;
	return FALSE;
	}
	///////////////////////////////////////////////////////////
	//if(CHCmdBlock.CmdBlock.Cmd_WriteFile.writeLength>0)
	//	{
	//	for(i=CHCmdBlock.CmdBlock.Cmd_WriteFile.writeLength;i<MAX_WRITE_LENGTH;i++)
	//	CHBUF[i]=0;
	//	}

	///////////////////////////////////////////////////////////
	ThisFile.bFileOpen=0;
	bSuccess=1;
	bStop=0;

	CHRspBlock.len=0;
	//if(CHCmdBlock.CmdBlock.Cmd_WriteFile.writeLength)
	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))
				{
		   		CHRspBlock.errcode=ERC_DEVICEERR;
				return FALSE;
		   		}
		   			//ThisFile.OffsetofSector=len;
			len=len-ThisFile.OffsetofSector;
		   	for(i=0;i<len;i++)
		   		//DBUF[ThisFile.OffsetofSector+i]=CHBUF[i];
		   		DBUF[ThisFile.OffsetofSector+i]=*(pBuffer+i);
		   	if(!RBC_Write(ThisFile.SectorPointer,1,DBUF))
		   			{
		   			CHRspBlock.errcode=ERC_DEVICEERR;
					return FALSE;
		   			}
		  	ThisFile.OffsetofSector=ThisFile.OffsetofSector+len;
		   	}
		 else
		 	{
		 	if(writeLength>DeviceInfo.BPB_BytesPerSec)
		   		{
		   		step=writeLength/DeviceInfo.BPB_BytesPerSec;
		   		//step=step-ThisFile.SectorofCluster;
		   		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+CHRspBlock.len))
		   		{
		   		CHRspBlock.errcode=ERC_DEVICEERR;
				return FALSE;
		   		}
		   	ThisFile.OffsetofSector=len;
		 	}
		 /////////////////////////////////////////////////////
		 //if(ThisFile.OffsetofSector>DeviceInfo.BPB_BytesPerSec-1)
		 //  	ThisFile.OffsetofSector-=DeviceInfo.BPB_BytesPerSec;
		   writeLength-=len;
		   CHRspBlock.len+=len;
		   //ThisFile.LengthInByte+=len;
		/////////////更新文件指針 //////////////////////////////
		//改變參數: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+CHRspBlock.len<ThisFile.LengthInByte)
		   			ThisFile.ClusterPointer=GetNextClusterNum(ThisFile.ClusterPointer);
		   		else
		 		 	ThisFile.ClusterPointer=CreateClusterLink(ThisFile.ClusterPointer);//GetNextClusterNum(ThisFile.ClusterPointer);
		 		 if(ThisFile.ClusterPointer==0x00)
		 		 	{
		 		 //	   RspBlockReadFile.errcode=ERC_REACHEND;
		   			//   RspBlockReadFile.result=0x0;
		   			CHRspBlock.errcode=ERC_DEVICEERR;
					return FALSE;
		 			}
		 		 ThisFile.SectorPointer=FirstSectorofCluster(ThisFile.ClusterPointer);
		   	}
		   	else
		   		ThisFile.SectorPointer=ThisFile.SectorPointer+step;
		    }


	}//end while
	ThisFile.pointer+=CHRspBlock.len;

	UpdateFat(FreeFat.SectorNum);
	///////////更新文件目錄信息/////////////////////////////
	if(bSuccess==1)
	{

		for(sector=0;sector<DeviceInfo.BPB_RootEntCnt;sector++)
	    	{
		//////////////////////////////////////////////////
		if(!RBC_Read(DeviceInfo.RootStartSector+sector,1,DBUF))
			{
			CHRspBlock.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;
				//else
				//	ThisFile.pointer=;

				pDirInfo->length=SwapINT32(ThisFile.LengthInByte);
				if(!RBC_Write(DeviceInfo.RootStartSector+sector,1,DBUF))
		   		{
		   		CHRspBlock.errcode=ERC_DEVICEERR;
				return FALSE;
		   		}
				 bStop=1;
				 break;
				}
			}
		if(bStop==1)
			break;
		////////////////////////////////////////////////////
	       }

	}
	/*
	if(bSuccess==0)
	{
	RspBlockWriteFile.errcode=ERC_DEVICEERR;
	RspBlockWriteFile.result=0x0;
	}
	*/
	CHRspBlock.len=0;
	ThisFile.bFileOpen=1;
	//////////////////////////////////////////////
	return TRUE;
#undef RspBlockWriteFile
}

unsigned char RemoveFile(unsigned char *pBuffer)   //刪除文件
{
#define RspBlockRemoveFile CHRspBlock.RspBlock.Rsp_RemoveFile
	unsigned int sector,i;
	unsigned char bStop,j;
	PDIR_INFO pDirInfo;

	if(!bXXGFlags.bits.SLAVE_IS_ATTACHED)
	{
	CHRspBlock.errcode=ERC_NODEVICE;
	return FALSE;
	}
	///////////////////////////////////////////////////////////
	//RspBlockRemoveFile.result=0x1;
	////////////// 清除目錄/////////////////////////////////////
	for(sector=0;sector<DeviceInfo.BPB_RootEntCnt;sector++)
	    	{
		//////////////////////////////////////////////////
		if(!RBC_Read(DeviceInfo.RootStartSector+sector,1,DBUF))
			{
			CHRspBlock.errcode=ERC_DEVICEERR;
			return FALSE;
			}
		///////////////////////////////////////////////////
		for(i=0;i<DeviceInfo.BPB_BytesPerSec;i=i+32)
			{
			if(DBUF[i]==0x00)
				{
				CHRspBlock.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);
			 	//DelayMs(15);
			 	if(!RBC_Write(DeviceInfo.RootStartSector+sector,1,DBUF))
					{
					CHRspBlock.errcode=ERC_DEVICEERR;
					return FALSE;
					}
				//////////////////// 清除FAT中的紀錄////////////////////////
				//DelayMs(10);
				if(!DeleteClusterLink(ThisFile.StartCluster))
						{
						CHRspBlock.errcode=ERC_DEVICEERR;
						return FALSE;
						}
			 	bStop=1;
			 	break;
			 	}

			}//end for
		if(bStop==1)
			break;

	       }//end search
	if(sector>=DeviceInfo.BPB_RootEntCnt)
		{
		CHRspBlock.errcode=ERC_FILENOTFOUND;
			return FALSE;
		}
	//////////////////////////////////////////////
	return TRUE;
#undef RspBlockRemoveFile
}

unsigned char GetCapacity(void)
{
	unsigned int sectorNum,freesectorcnt,i;

#define RspBlockGetCapacity CHRspBlock.RspBlock.Rsp_GetCapacity
	PREAD_CAPACITY_RSP pBuf;

	if(!bXXGFlags.bits.SLAVE_IS_ATTACHED)
	{
	CHRspBlock.errcode=ERC_NODEVICE;
	return FALSE;
	}
	///////////////////////////////////////////////////////////
	if(!ReadCapacity())
	{
	CHRspBlock.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)
		  	{
		  	 //clusterNum++;

		  	 if((DBUF[i]==0xff)&&(DBUF[i+1]==0xff))
		  	 	{
		  	 	freesectorcnt++;
		  	 	}
		  	// clusterNum++;
		  	}
		}
		else
			{
			CHRspBlock.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)
{
#define RspBlockGetCapacity CHRspBlock.RspBlock.Rsp_GetFreeCapacity
	if(!bXXGFlags.bits.SLAVE_IS_ATTACHED)
	{
	CHRspBlock.errcode=ERC_NODEVICE;
	return FALSE;
	}
	//////////////////////////////////////////////


	return TRUE;
#undef RspBlockGetFreeCapacity
}

unsigned char SetFilePointer(unsigned long pointer)
{
#define RspBlockSetFilePointer CHRspBlock.RspBlock.Rsp_SetFilePointer

	//ThisFile.FilePointer=CHCmdBlock.CmdBlock.Cmd_SetFilePointer.pointer;
	if(!bXXGFlags.bits.SLAVE_IS_ATTACHED)
	{
	CHRspBlock.errcode=ERC_NODEVICE;
	return FALSE;
	}
	if(!ThisFile.bFileOpen)
	{
	CHRspBlock.errcode=ERC_FILENOTOPENED;
	return FALSE;
	}
	///////////////////////////////////////////////////////////
	ThisFile.pointer=pointer;
	if(ThisFile.pointer>ThisFile.LengthInByte)
	{
	CHRspBlock.errcode=ERC_LENGTHEXCEED;
	return FALSE;
	}

	if(!GoToPointer(ThisFile.pointer))
	{
	ThisFile.bFileOpen=0;
	CHRspBlock.errcode=ERC_DEVICEERR;
	return FALSE;
	}
	//////////////////////////////////////////////
	return TRUE;

#undef RspBlockSetFilePointer
}

unsigned char GetFirmwareVersion(void)
{
   #define RspBlockGetVersion CHRspBlock.RspBlock.Rsp_GetVersion
   ////////////////////////////////////////////////////////////
   RspBlockGetVersion.version=0x0100;
   return TRUE;
   #undef RspBlockGetVersion
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品传媒视频| 国产精品久久久久影院老司| 亚洲成a人v欧美综合天堂下载| 一本一本大道香蕉久在线精品 | 日韩久久免费av| 麻豆国产精品官网| 国产欧美日韩综合| 色婷婷综合久久久中文字幕| 性做久久久久久久免费看| 日韩午夜激情av| 岛国精品在线观看| 亚洲婷婷在线视频| 欧美日韩美少妇| 精品一区二区久久久| 中文字幕av一区二区三区高| 欧美在线视频你懂得| 免费国产亚洲视频| 中文字幕永久在线不卡| 欧美视频一区二区三区四区 | 日韩成人一级大片| 久久久美女艺术照精彩视频福利播放| 成人黄色大片在线观看| 亚洲一区二区欧美激情| 日韩视频免费直播| 91视视频在线直接观看在线看网页在线看 | 国产精品资源站在线| 亚洲欧美日韩一区| 精品国产91亚洲一区二区三区婷婷| 成人免费视频播放| 日本不卡视频在线| 亚洲欧美日韩系列| 久久女同精品一区二区| 欧美亚洲国产bt| 粗大黑人巨茎大战欧美成人| 五月天激情综合| 国产精品久久久久久妇女6080| 欧美精选午夜久久久乱码6080| 国产凹凸在线观看一区二区| 亚洲一二三区不卡| 国产精品久久久久久久蜜臀| 91精品国产综合久久精品app| 成人小视频免费观看| 青青草原综合久久大伊人精品 | 国产精品综合久久| 亚洲一级二级三级| 国产欧美视频一区二区三区| 欧美一区中文字幕| 色菇凉天天综合网| 成人免费看的视频| 韩国女主播一区二区三区| 亚洲一区二区三区视频在线播放| 久久精品一区二区三区四区| 欧美军同video69gay| av毛片久久久久**hd| 国产麻豆日韩欧美久久| 蜜乳av一区二区三区| 亚洲一区二区在线播放相泽| 国产精品乱子久久久久| 久久久噜噜噜久久中文字幕色伊伊| 欧美精品一二三四| 欧美日韩成人一区二区| 色综合 综合色| 99久久99久久精品免费看蜜桃 | 日韩成人伦理电影在线观看| 亚洲综合色在线| 亚洲天堂免费在线观看视频| 国产欧美日韩在线视频| 久久精品在线观看| 久久久久国产一区二区三区四区 | 日韩欧美国产高清| 欧美一级理论性理论a| 在线综合视频播放| 7777精品久久久大香线蕉| 欧美三级韩国三级日本三斤| 一本色道综合亚洲| 欧美性做爰猛烈叫床潮| 精品视频在线免费| 欧美日韩美少妇| 制服丝袜亚洲网站| 欧美一区二区三区影视| 欧美r级电影在线观看| 亚洲精品在线免费播放| 久久久精品综合| 国产精品视频九色porn| 综合中文字幕亚洲| 亚洲精品老司机| 视频在线在亚洲| 麻豆极品一区二区三区| 国产精品资源网站| 99视频超级精品| 欧美色综合影院| 91精品国产日韩91久久久久久| 日韩欧美激情一区| 国产亚洲婷婷免费| 一区二区三区在线看| 午夜视频一区二区| 久久精品72免费观看| 国产一区二区三区日韩 | 久久99精品国产.久久久久久| 久草中文综合在线| 国产精品123| 91网站在线观看视频| 欧美日韩久久不卡| 久久久久久麻豆| 亚洲欧美日韩精品久久久久| 日韩在线一区二区| 国产精品中文字幕日韩精品| 波多野结衣中文字幕一区 | 在线观看视频91| 欧美xxxxx牲另类人与| 国产精品久久看| 偷窥少妇高潮呻吟av久久免费| 韩国午夜理伦三级不卡影院| 91片黄在线观看| 日韩欧美在线影院| 亚洲欧美日韩中文播放 | 一区二区三区欧美| 另类欧美日韩国产在线| 国产69精品久久99不卡| 欧美日韩亚洲综合一区二区三区| 26uuu国产一区二区三区| 亚洲欧美日韩在线不卡| 国内成人免费视频| 91福利视频在线| 国产日韩欧美一区二区三区乱码 | 亚洲天堂网中文字| 精品午夜一区二区三区在线观看| 91丨九色丨尤物| 久久久一区二区三区捆绑**| 一区二区三区电影在线播| 国产原创一区二区| 欧美色大人视频| 中文字幕视频一区二区三区久| 蜜桃视频在线一区| 91黄色激情网站| 国产精品乱码一区二三区小蝌蚪| 蜜臀av性久久久久蜜臀aⅴ流畅| 99久久久无码国产精品| 久久嫩草精品久久久精品| 亚洲电影在线播放| 91免费精品国自产拍在线不卡| 欧美精品一区二区高清在线观看| 亚洲一二三区在线观看| jiyouzz国产精品久久| 精品国产精品一区二区夜夜嗨| 亚洲成av人片在线观看无码| 成人av电影免费观看| 日本一区二区三区四区在线视频| 久久精品免费观看| 日韩亚洲欧美一区二区三区| 亚洲资源中文字幕| 一本久久综合亚洲鲁鲁五月天| 国产欧美日韩三级| 国产福利不卡视频| 久久久久国产精品麻豆| 国产在线麻豆精品观看| 91精品国产福利| 日韩av中文字幕一区二区三区| 欧美图区在线视频| 亚洲尤物视频在线| 欧美视频中文一区二区三区在线观看| 中文字幕日韩精品一区| 99久久精品99国产精品| 成人欧美一区二区三区黑人麻豆| 成人污视频在线观看| 色呦呦一区二区三区| 亚洲欧美日韩在线播放| 国产经典欧美精品| 久久久国产午夜精品| 国产制服丝袜一区| 久久婷婷国产综合精品青草 | 在线综合视频播放| 美腿丝袜亚洲一区| 日韩精品一区在线观看| 国内精品国产三级国产a久久| 日韩精品一区二| 韩国v欧美v日本v亚洲v| 国产日产欧美一区二区三区| 国产成人免费视频网站 | 亚洲综合色区另类av| 欧美色视频在线观看| 日韩av一级片| 精品日韩成人av| 国产成人av一区二区三区在线| 久久精品在线免费观看| 99在线精品视频| 午夜影院在线观看欧美| 884aa四虎影成人精品一区| 美女免费视频一区| 国产偷国产偷精品高清尤物| 成人性生交大片免费看中文网站| 亚洲靠逼com| 欧美电视剧免费观看| 国产精品一区一区三区| 国产精品福利一区| 5566中文字幕一区二区电影| 裸体健美xxxx欧美裸体表演| 久久天天做天天爱综合色| 99精品视频一区| 日韩在线卡一卡二|