⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 usb20d.h

📁 windows 界面编程
💻 H
字号:
#ifndef	__USB20D_DLL_C_DEF
#define	__USB20D_DLL_C_DEF

#include	"objbase.h"
#include	"initguid.h"
#include	<windows.h>
#include	<winuser.h>
#include	"SetupApi.h"
#include	"WinIOCtl.h"




//		定义GUID
//==============================================================================================//
// {AA9D2DD8-3688-4cce-BE9E-F161265E9AC9}
DEFINE_GUID(GUID_CLASS_MY_USB, 
0xaa9d2dd8, 0x3688, 0x4cce, 0xbe, 0x9e, 0xf1, 0x61, 0x26, 0x5e, 0x9a, 0xca);

//==============================================================================================//

#define MYUSB_IOCTL_INDEX  0x0000
#define IOCTL_USB_MyCancelIO  CTL_CODE(FILE_DEVICE_UNKNOWN,  \
                                                   MYUSB_IOCTL_INDEX+3,\
                                                   METHOD_BUFFERED,  \
                                                   FILE_ANY_ACCESS)                                                           



//		定义错误代码和字符串
//==============================================================================================//

#define	USB20D_ERR_Success			0
#define	USB20D_ERR_DeviceAlreadyOpen		1				//初始化设备时,设备曾经被初始化过一次。
#define	USB20D_ERR_CannotFindDevice		2				//初始化设备时,没有发现设备。
#define	USB20D_ERR_CannotOpenInfoOutPipe	3				//初始化设备时,已经发现设备,但是不能打开辅助输出管道。
#define	USB20D_ERR_CannotOpenInfoInPipe		4				//初始化设备时,已经发现设备,但是不能打开辅助输入管道。
#define	USB20D_ERR_CannotOpenMainOutPipe	5				//初始化设备时,已经发现设备,但是不能打开主输出管道。
#define	USB20D_ERR_CannotOpenMainInPipe		6				//初始化设备时,已经发现设备,但是不能打开主输入管道。
#define	USB20D_ERR_CannotCreateEndEvent		7				//初始化设备是,没能创建终止事件。

#define	USB20D_ERR_IOTimeOver			8				//读写操作超时。
#define	USB20D_ERR_IOOverlapError		9				//读写操作错误(重叠)。
#define	USB20D_ERR_IOError			10				//读写操作错误。

#define	USB20D_ERR_DeviceNotConnected		11				//设备没有连接。
#define	USB20D_ERR_LastIONotCompleted		12				//没有结束上次操作。
#define	USB20D_ERR_IllegalParameter		13				//函数的参数不合适。
#define	USB20D_ERR_IllegalDevice		14				//不是我们的设备。
//==============================================================================================//


	//这是与设备通讯的命令。
//==============================================================================================//
#define	Command_SetAddress		0x01
#define	Command_Output			0x02
#define	Command_Input			0x03
#define	Command_MixedIO			0x04

#define	Command_ResetDMAFIFO		0x05
#define	Command_StartDMA		0x06
#define	Command_EndDMA			0x07

#define	Command_SetCPUCS		0x0B
#define	Command_SetIFCFG		0x0C
#define	Command_GetUSBSpeed		0x0D

#define	Command_ReadXData		0x0E
#define	Command_WriteXData		0x0F
#define	Command_SetWorkMode		0x10

#define	Command_DMAFIFOStatus		0x11
#define	Command_SendUnlockCode		0x12
//==============================================================================================//

//Optimize	Mode
//==============================================================================================//
#define	WM_InOut			0
#define	WM_DedicateOut			1
#define	WM_DedicateIn			2
//==============================================================================================//

  //Used for CPUCS
//==============================================================================================//
#define	CPU12MHz			0x00
#define	CPU24MHz			0x08
#define	CPU48MHz			0x10
//==============================================================================================//


//		定义I2C器件的型号
//==============================================================================================//
#define	I2C24c01	1
#define	I2C24c02	2
#define	I2C24c04	3
#define	I2C24c16	4
#define	I2C24c32	5
#define	I2C24c64	6
#define	I2C24c128	7
#define	I2C24c256	8
//==============================================================================================//



//		初始化函数
//==============================================================================================//
void	Init_USB20D();
void	Done_USB20D();
BOOL	_stdcall	USB20D_GetDeviceName(int	DevNo,	char*	Name);
int	_stdcall	USB20D_EnumDeviceCount();
HANDLE	_stdcall	USB20D_Init(int	DevNo,	int	I2CChip);
void	_stdcall	USB20D_Done(HANDLE	DevHandle);
//==============================================================================================//




//		基本IO函数
//==============================================================================================//
BOOL	_stdcall	USB20D_SetAddress(HANDLE	DevHandle,	int	Addr);
BOOL	_stdcall	USB20D_MultInput(HANDLE	DevHandle,	int	Num,	void*	Buf);
int	_stdcall	USB20D_Input(HANDLE	DevHandle,	int	Addr);
BOOL	_stdcall	USB20D_MultOutput(HANDLE	DevHandle,	int	Num,	void*	Buf);
int	_stdcall	USB20D_Output(HANDLE	DevHandle,	int	Addr,	int	Data);
BOOL	_stdcall	USB20D_MixedIO(HANDLE	DevHandle,	int	Num,	void*	Buf);
//==============================================================================================//



//		DMA函数
//==============================================================================================//
BOOL	_stdcall	USB20D_ResetDMAFIFO(HANDLE	DevHandle);
BOOL	_stdcall	USB20D_StartDMA(HANDLE	DevHandle,	BOOL	DMARead,	BOOL	DB16,	int	OptimizeMode);
BOOL	_stdcall	USB20D_EndDMA(HANDLE	DevHandle);
BOOL	_stdcall	USB20D_DMARead(HANDLE	DevHandle,	void*	Buf,	DWORD	DataNeed,	DWORD*	DataRead,	long	OverTime);
BOOL	_stdcall	USB20D_DMAWrite(HANDLE	DevHandle,	void*	Buf,	DWORD	DataSize,	DWORD*	DataWritten,	long	OverTime);


BOOL	_stdcall	USB20D_DMAOutFIFOEmpty(HANDLE	DevHandle);
BOOL	_stdcall	USB20D_DMAOutFIFOFull(HANDLE	DevHandle);
BOOL	_stdcall	USB20D_DMAInFIFOEmpty(HANDLE	DevHandle);
BOOL	_stdcall	USB20D_DMAInFIFOFull(HANDLE	DevHandle);
BOOL	_stdcall	USB20D_DMAFIFOStatus(HANDLE	DevHandle,	BOOL * OutFIFOEmpty,	BOOL * OutFIFOFull,
										BOOL * InFIFOEmpty,	BOOL * InFIFOFull);


BOOL	_stdcall	USB20D_UnlockAfterDMA(HANDLE	DevHandle,	BOOL	SendUnlockCode);
//==============================================================================================//


//		设置函数
//==============================================================================================//
BOOL	_stdcall	USB20D_SetDMAClk(HANDLE	DevHandle, BOOL IntIFClk, BOOL IntClk48MHz, BOOL IntClkOutEn, BOOL IFClkInvert, BOOL AsyncFIFO, BOOL OnePulseEarly);
BOOL	_stdcall	USB20D_SetCPUClk(HANDLE	DevHandle,	int	CpuSpeed,	BOOL	ClkOutEnable,	BOOL	ClkInvert);
BOOL	_stdcall	USB20D_WorkAtHighSpeed(HANDLE	DevHandle);
//==============================================================================================//



//		辅助函数
//==============================================================================================//
int	_stdcall	USB20D_GetLastError(HANDLE	DevHandle);
BOOL	_stdcall	USB20D_GetLastErrorStrC(HANDLE	DevHandle,	int*	Size,	PCHAR	Buf);
BOOL	_stdcall	USB20D_GetLastErrorStrE(HANDLE	DevHandle,	int*	Size,	PCHAR	Buf);
void	_stdcall	USB20D_Delay(HANDLE	DevHandle,	int	DelayTime);
//==============================================================================================//



#endif

⌨️ 快捷键说明

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