📄 usb20d.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 + -