command_unit.c

来自「USBUSB开发资料类」· C语言 代码 · 共 578 行 · 第 1/2 页

C
578
字号
{
	vCMD_pCommand->Parameter[1]	=	FilePointer;
	vCMD_pCommand->Parameter[2]	=	FilePointer>>8;
	vCMD_pCommand->Parameter[3]	=	FilePointer>>16;
	vCMD_pCommand->Parameter[4]	=	FilePointer>>24;

	vCMD_pCommand->Command	=	cCMD_CMD_SET_FILE_POINTER;

	if	(!CMD_DoCommand(66,	64,	cCMD_CMD_SET_FILE_POINTER_RSP))
	{	return	FALSE;	}
	else
	{
		return	((vCMD_pStatus->Command	==	cCMD_CMD_SET_FILE_POINTER_RSP)	&&	(vCMD_pStatus->Result));
	}
}
//============================================================================================================
//函数名:		CMD_Detect
//
//调用关系:	被	外部函数	调用。
//
//功能描述:	检查,是否有U盘。
//
//入口参数:	无
//
//返回值:		是否有U盘。
//============================================================================================================
BOOL	CMD_Detect(	 void	)
{
	DWORD	i;

	vCMD_pCommand->Command	=	cCMD_CMD_DETECT_DEVICE;
	for	(i=0;i<63;i++)
	{
		vCMD_pCommand->Parameter[i]	=	i;
	}

	if	(!CMD_DoCommand(66,	64,	cCMD_CMD_DETECT_DEVICE_RSP))
	{	return	FALSE;	}
	else
	{
		//return	vCMD_pStatus->Result;
		/*if	(vCMD_pStatus->Result)
		{
			if	((vCMD_pStatus->Result)	!=	1)
			{
				vCMD_pStatus->Result	=	0;
			}
			//vCMD_pStatus->Result	=	1;
		}
		else
		{
			vCMD_pCommand->Parameter[0]	==	cCMD_CMD_DETECT_DEVICE_RSP;	
		}*/
		return	((vCMD_pStatus->Command	==	cCMD_CMD_DETECT_DEVICE_RSP)	&&	(vCMD_pStatus->Result));
	}
}
//============================================================================================================
//函数名:		CMD_GetVersion
//
//调用关系:	被	外部函数	调用。
//
//功能描述:	得到版本号。
//
//出口参数:	无
//
//返回值:		是否有U盘。
//============================================================================================================
BOOL	CMD_GetVersion(	WORD*	pVersion	)
{

	vCMD_pCommand->Command	=	cCMD_CMD_GET_VERSION;

	if	(!CMD_DoCommand(66,	64,	cCMD_CMD_GET_VERSION_RSP))
	{	return	FALSE;	}
	else
	{
		if	(((vCMD_pStatus->Command	==	cCMD_CMD_GET_VERSION_RSP)	&&	(vCMD_pStatus->Result)))
		{
			*pVersion	=	(vCMD_pStatus->Parameter[0])<<8	+	vCMD_pStatus->Parameter[1];
			return	TRUE;
		}
		else
		{	return	FALSE;	}
	}
}
//============================================================================================================
//函数名:		CMD_InDir
//
//调用关系:	被	外部函数	调用。
//
//功能描述:	进入子目录。
//
//入口参数:	pDirName	目录名,必须8个字节
//
//返回值:		是否成功。
//============================================================================================================
BOOL	CMD_InDir(	char*	pDirName	)
{
	DWORD	i;

	//复制文件名和扩展名
	for	(i=0;	i<8;	i++)
		vCMD_pCommand->Parameter[i]	=	pDirName[i];

	vCMD_pCommand->Command	=	cCMD_CMD_IN_DIR;

	if	(!CMD_DoCommand(66,	64,	cCMD_CMD_IN_DIR_RSP))
	{	return	FALSE;	}
	else
	{
		return	((vCMD_pStatus->Command	==	cCMD_CMD_IN_DIR_RSP)	&&	(vCMD_pStatus->Result));
	}
}
//============================================================================================================
//函数名:		CMD_OutDir
//
//调用关系:	被	外部函数	调用。
//
//功能描述:	返回上级目录。
//
//入口参数:	无
//
//返回值:		是否成功。
//============================================================================================================
BOOL	CMD_OutDir(	 void	)
{

	vCMD_pCommand->Command	=	cCMD_CMD_OUT_DIR;

	if	(!CMD_DoCommand(66,	64,	cCMD_CMD_OUT_DIR_RSP))
	{	return	FALSE;	}
	else
	{
		return	((vCMD_pStatus->Command	==	cCMD_CMD_OUT_DIR_RSP)	&&	(vCMD_pStatus->Result));
	}
}
//============================================================================================================
//函数名:		CMD_RootDir
//
//调用关系:	被	外部函数	调用。
//
//功能描述:	返回根目录。
//
//入口参数:	无
//
//返回值:		是否成功。
//============================================================================================================
BOOL	CMD_RootDir(	 void	)
{

	vCMD_pCommand->Command	=	cCMD_CMD_ROOT_DIR;

	if	(!CMD_DoCommand(66,	64,	cCMD_CMD_ROOT_DIR_RSP))
	{	return	FALSE;	}
	else
	{
		return	((vCMD_pStatus->Command	==	cCMD_CMD_ROOT_DIR_RSP)	&&	(vCMD_pStatus->Result));
	}
}
//============================================================================================================
//函数名:		CMD_MakeDir
//
//调用关系:	被	外部函数	调用。
//
//功能描述:	创建目录。
//
//入口参数:	pDirName	目录名,必须8个字节
//
//返回值:		是否创建成功。
//============================================================================================================
BOOL	CMD_MakeDir(	char*	pDirName	)
{
	PFS_DirItem	pItem;
	DWORD	i;

	pItem	=	(PFS_DirItem)&(vCMD_pCommand->Parameter[0]);

	//清空
	for	(i=0;	i<11;	i++)
	{
		vCMD_pCommand->Parameter[i]	=	0x20;
	}
	for	(i=12;	i<63;	i++)
	{
		vCMD_pCommand->Parameter[i]	=	0;
	}

	//复制文件名和扩展名
	for	(i=0;	i<8;	i++)
	{
		if	(pDirName[i]	==	0)
			break;
		pItem->FileName[i]	=	pDirName[i];
	}
	pItem->Attribute		=	cFS_ATTR_DIRECTORY;
	pItem->ResForNT			=	0;
	pItem->CreateTimeTenth	=	88;
	pItem->CreateTime		=	0x4104;
	pItem->CreateDate		=	0x3908;
	pItem->LastAccDate		=	0x3908;
	pItem->StartClusterHI	=	0;
	pItem->Time				=	0x4104;
	pItem->Data				=	0x3908;
	pItem->StartClusterLO	=	0;
	pItem->FileLength		=	0;


	vCMD_pCommand->Command	=	cCMD_CMD_MAKE_DIR;

	if	(!CMD_DoCommand(66,	64,	cCMD_CMD_MAKE_DIR_RSP))
	{	return	FALSE;	}
	else
	{
		return	((vCMD_pStatus->Command	==	cCMD_CMD_MAKE_DIR_RSP)	&&	(vCMD_pStatus->Result));
	}
}
//============================================================================================================
//函数名:		CMD_Remove
//
//调用关系:	被	外部函数	调用。
//
//功能描述:	删除文件。
//
//入口参数:	pFileName	文件名,必须8个字节
//				pExtName	扩展名,必须3个字节
//
//返回值:		是否删除成功。
//============================================================================================================
BOOL	CMD_Remove(	char*	pFileName,	char*	pExtName	)
{
	DWORD	i;

	//复制文件名和扩展名
	for	(i=0;	i<8;	i++)
		vCMD_pCommand->Parameter[i]	=	pFileName[i];
	for	(i=0;	i<3;	i++)
		vCMD_pCommand->Parameter[i+8]	=	pExtName[i];

	vCMD_pCommand->Command	=	cCMD_CMD_REMOVE_FILE;

	if	(!CMD_DoCommand(66,	64,	cCMD_CMD_REMOVE_FILE_RSP))
	{	return	FALSE;	}
	else
	{
		return	((vCMD_pStatus->Command	==	cCMD_CMD_REMOVE_FILE_RSP)	&&	(vCMD_pStatus->Result));
	}
}
//============================================================================================================
//函数名:		CMD_GetCapacity
//
//调用关系:	被	外部函数	调用。
//
//功能描述:	得到U盘容量和剩余空间。
//
//出口参数:	无
//
//返回值:		U盘容量和剩余空间。
//============================================================================================================
BOOL	CMD_GetCapacity(	DWORD*	AvailableSpace,	DWORD*	FreeSpace	)
{

	vCMD_pCommand->Command	=	cCMD_CMD_GET_CAPACITY;

	if	(!CMD_DoCommand(66,	64,	cCMD_CMD_GET_CAPACITY_RSP))
	{	return	FALSE;	}
	else
	{
		if	(((vCMD_pStatus->Command	==	cCMD_CMD_GET_CAPACITY_RSP)	&&	(vCMD_pStatus->Result)))
		{
			*AvailableSpace	=	(vCMD_pStatus->Parameter[0])	+	(vCMD_pStatus->Parameter[1])<<8
							+	(vCMD_pStatus->Parameter[2])<<16	+	(vCMD_pStatus->Parameter[3])<<24;
			*FreeSpace		=	(vCMD_pStatus->Parameter[4])	+	(vCMD_pStatus->Parameter[5])<<8
							+	(vCMD_pStatus->Parameter[6])<<16	+	(vCMD_pStatus->Parameter[7])<<24;
			return	TRUE;
		}
		else
		{	return	FALSE;	}
	}
}
//============================================================================================================



//============================================================================================================
//
//			End	of	File
//
//============================================================================================================

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?