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

📄 ov511cam.h

📁 Windows+CE下USB摄像头驱动开发,使用EVC开发。摄像头为 网眼 Webeye 2000 VID 0x05A9 PID 0xA511 输出格式:RAW-YUV
💻 H
字号:
//USB常量定义
#define DRIVER_NAME   TEXT("Ov511.dll")

#define DEVICE_PREFIX TEXT("CAM")

#define CLASS_NAME_SZ    TEXT("Video_Class")
#define CLIENT_REGKEY_SZ TEXT("Drivers\\USB\\ClientDrivers\\Video_Class")

//USB视频设备接口定义(类号码为14)
#define USB_DEVICE_CLASS_VIDEO                   0x0E

//USB驱动设置(设定设备特定特定的信息)
//USB_DRIVER_SETTINGS
#define DRIVER_SETTINGS \
            sizeof(USB_DRIVER_SETTINGS),  \
            USB_NO_INFO,   \
            USB_NO_INFO,   \
            USB_NO_INFO,   \
            USB_NO_INFO,   \
            USB_NO_INFO,   \
            USB_NO_INFO,   \
            USB_DEVICE_CLASS_VIDEO,   \
            USB_NO_INFO,   \
            USB_NO_INFO


//计算csCameras所含型号个数的函数
#define dim(a)  (sizeof(a)/sizeof(a[0]))

//
// Declare the driver entry points here. 
//
#ifdef __cplusplus
extern "C" {
#endif //__cplusplus
DWORD CAM_Init (DWORD dwContext);
BOOL  CAM_Deinit (DWORD dwContext);
DWORD CAM_Open (DWORD dwContext, DWORD dwAccess, DWORD dwShare);
BOOL  CAM_Close (DWORD dwOpen);
DWORD CAM_Read (DWORD dwOpen, LPVOID pBuffer, DWORD dwCount);
DWORD CAM_Write (DWORD dwOpen, LPVOID pBuffer, DWORD dwCount);
DWORD CAM_Seek (DWORD dwOpen, long lDelta, WORD wType);
DWORD CAM_IOControl (DWORD dwOpen, DWORD dwCode, 
                     PBYTE pIn, DWORD dwIn,
                     PBYTE pOut, DWORD dwOut, 
                     DWORD *pdwBytesWritten);
void CAM_PowerDown (DWORD dwContext);
void CAM_PowerUp (DWORD dwContext);

#ifdef __cplusplus
} // extern "C"
#endif //__cplusplus

//接口和端点结构体
typedef struct {
	USB_INTERFACE_DESCRIPTOR ifDesc;
	BOOL fEndpoint;
	USB_ENDPOINT_DESCRIPTOR epDesc;
} USBIF, *PUSBIF;

//管道结构体
typedef struct {
		USB_PIPE hPipe;
		UCHAR ucAddr;
		WORD wPacketSize;
		HANDLE hEvent;
} PIPE, *LPPIPE;

//设备上下文结构体
typedef struct {
	HANDLE hVendorEvent;

	int nInterfaces;
	//视频接口
	PUSBIF usbVideoIF;
	//视频管道
	PIPE pipeVideo;
} DEVICECONTEXT, *PDEVICECONTEXT;

//驱动程序上下文结构体
typedef struct {
    DWORD dwSize;
    int nNumOpens; //打开次数
	CRITICAL_SECTION csDCall; //应用程序操作临界区
	HANDLE hStreamDevice; //存储ActivateDevice返回值
	BOOL bStopped; //是否停止
	int nPacketSize; //包大小
	
	// USB support
	USB_HANDLE hDevice;
	LPCUSB_FUNCS lpUsbFuncs;
	
	//设备上下文指针
	DWORD dwDeviceContext;
	
} DRVCONTEXT, *PDRVCONTEXT;

//取得配置数据,CAM_Init函数中调用这个函数,从注册表找到设备上下文
PDRVCONTEXT GetConfigData (DWORD dwContext);

struct ov511_frame {
	int framenum;		/* Index of this frame */
	unsigned char *data;	/* Frame buffer */
	unsigned char *tempdata; /* Temp buffer for multi-stage conversions */
	unsigned char *rawdata;	/* Raw camera data buffer */
	unsigned char *compbuf;	/* Temp buffer for decompressor */

	int depth;		/* Bytes per pixel */
	int width;		/* Width application is expecting */
	int height;		/* Height application is expecting */

	int rawwidth;		/* Actual width of frame sent from camera */
	int rawheight;		/* Actual height of frame sent from camera */

	int sub_flag;		/* Sub-capture mode for this frame? */
	unsigned int format;	/* Format for this frame */
	int compressed;		/* Is frame compressed? */

	//volatile int grabstate;	/* State of grabbing */
	int scanstate;		/* State of scanning */

	int bytes_recvd;	/* Number of image bytes received from camera */

	long bytes_read;	/* Amount that has been read() */

	//wait_queue_head_t wq;	/* Processes waiting */

	int snapshot;		/* True if frame was a snapshot */
};

⌨️ 快捷键说明

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