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

📄 camio.hpp

📁 有gsm打电话功能.可以做图象处理.还有unicode的转化函数
💻 HPP
字号:
/*******************************************************************************\
                                                                              
      Copyright (C) 2001-2008, Vimicro Corporation ("VIMICRO")
      
      VIMICRO USB CAMERA DRIVER FOR WINDOWS CE 3.0
      -------------------------------------------------------------------------- 
    + This program has been developed by Vimicro Corporation. You have VIMICRO's
	  permission to incorporate this code into your product, royalty free.                                                
    + VIMICRO specifically disclaims all warranties, express or implied, and all
      liability, including consequential and other indirect damages, for the use
	  of this code, including liability for infringement of any proprietary
	  rights, and including the warranties of merchantability and fitness for a
	  particular purpose. VIMICRO does not assume any responsibility for any
	  errors which may appear in this code nor any responsibility to update it.
     --------------------------------------------------------------------------
      Component:  CAMLINK / CAMPRP / CAMSRC / USBCAM
      File:       CAMIO.HPP   
      Author:     Bob Lu      <bob@vimicro.com> / <bob_lu@msn.com>
\*******************************************************************************/


#ifndef _CAMIO_HPP_
#define _CAMIO_HPP_

#include <windows.h>
#include <windev.h>
#include <nkintr.h>

#include "caminc.hpp"

//
//	Device IO Control Code -----------------------------------------------------
//

#define FILE_DEVICE_CAM         FILE_DEVICE_VIDEO
#define CAM_MAX_LOADSTRING      0x64

//------------------------------------------------------------------------------

// IOCTL_CAM_START_DEVICE
#define IOCTL_CAM_START_DEVICE \
			CTL_CODE(FILE_DEVICE_CAM,  \
					0x0010, \
					METHOD_BUFFERED,  \
					FILE_ANY_ACCESS)

typedef struct _CAM_IO_START_DEVICE
{
	DWORD dwSlotNo;
	DWORD dwBandwidth;
	DWORD dwFlags;
} CAM_IO_START_DEVICE, * PCAM_IO_START_DEVICE;

//------------------------------------------------------------------------------

// IOCTL_CAM_STOP_DEVICE
#define IOCTL_CAM_STOP_DEVICE \
			CTL_CODE(FILE_DEVICE_CAM,  \
					0x0011, \
					METHOD_BUFFERED,  \
					FILE_ANY_ACCESS)

typedef struct _CAM_IO_STOP_DEVICE
{
	DWORD dwSlotNo;
	DWORD dwFlags;
} CAM_IO_STOP_DEVICE, * PCAM_IO_STOP_DEVICE;

//------------------------------------------------------------------------------

// IOCTL_CAM_SET_PROPERTY
#define IOCTL_CAM_SET_PROPERTY \
			CTL_CODE(FILE_DEVICE_CAM,  \
					0x0012, \
					METHOD_BUFFERED,  \
					FILE_ANY_ACCESS)

#define FRAME_FORMAT_JPG 0
#define FRAME_FORMAT_RAW 1
#define FRAME_FORMAT_RGB 2

typedef enum {
    CAM_BRIGHTNESS	= 0,	// RW O
    CAM_CONTRAST	= 1,	// RW O
    CAM_GAMMA		= 2,	// RW O
	CAM_REGISTER	= 3,	// RW O
	CAM_SIZE		= 4,	// RW O
	CAM_FLICKER		= 5,	// RW O
	CAM_BANDWIDTH	= 6,	// RW O
	CAM_MODE		= 7,	// RW O
	CAM_TYPE		=98,
	CAM_SENSOR		= 99,
} PROPERTY;

typedef struct _CAM_IO_SET_PROPERTY
{
	DWORD dwSlotNo;
	PROPERTY Property;
	DWORD dwValue;
} CAM_IO_SET_PROPERTY, * PCAM_IO_SET_PROPERTY;

//------------------------------------------------------------------------------

// IOCTL_CAM_GET_PROPERTY
#define IOCTL_CAM_GET_PROPERTY \
			CTL_CODE(FILE_DEVICE_CAM,  \
					0x0013, \
					METHOD_BUFFERED,  \
					FILE_ANY_ACCESS)

typedef struct _CAM_IO_GET_PROPERTY
{
	DWORD dwSlotNo;
	PROPERTY Property;
	DWORD dwValue;
} CAM_IO_GET_PROPERTY, * PCAM_IO_GET_PROPERTY;

//------------------------------------------------------------------------------

// IOCTL_CAM_READ_DATA
#define IOCTL_CAM_READ_DATA \
			CTL_CODE(FILE_DEVICE_CAM,  \
					0x0014, \
					METHOD_BUFFERED,  \
					FILE_ANY_ACCESS)

typedef struct _CAM_IO_READ_DATA
{
	DWORD dwSlotNo;
	DWORD dwFlags;
	DWORD dwBufLen;
} CAM_IO_READ_DATA, * PCAM_IO_READ_DATA;

//------------------------------------------------------------------------------

// IOCTL_CAM_ENUM_DEVICE
#define IOCTL_CAM_ENUM_DEVICE \
			CTL_CODE(FILE_DEVICE_CAM,  \
					0x0015, \
					METHOD_BUFFERED,  \
					FILE_ANY_ACCESS)

typedef struct _CAM_IO_ENUM_DEVICE_HEADER
{
	DWORD	dwCount;
} CAM_IO_ENUM_DEVICE_HEADER, * PCAM_IO_ENUM_DEVICE_HEADER; 

typedef struct _CAM_IO_ENUM_DEVICE_BODY
{
	DWORD	dwProductID;
	DWORD	dwSerialNo;
	DWORD	dwSlotNo;
	DWORD	dwUsage;
} CAM_IO_ENUM_DEVICE_BODY, * PCAM_IO_ENUM_DEVICE_BODY;

typedef struct _CAM_IO_ENUM_DEVICE
{
	CAM_IO_ENUM_DEVICE_HEADER stHeader;
	CAM_IO_ENUM_DEVICE_BODY   stBody[4];
} CAM_IO_ENUM_DEVICE, * PCAM_IO_ENUM_DEVICE;

//------------------------------------------------------------------------------

// IOCTL_CAM_ATTACH
#define IOCTL_CAM_ATTACH \
			CTL_CODE(FILE_DEVICE_CAM,  \
					0x0016, \
					METHOD_BUFFERED,  \
					FILE_ANY_ACCESS)

typedef struct _CAM_IO_ATTACH
{
	DWORD	dwSlotNo;
	BOOL	bAttaching;
	BOOL    bControl;
} CAM_IO_ATTACH, * PCAM_IO_ATTACH;

//
//	Device IO Control Functions ------------------------------------------------
//

//------------------------------------------------------------------------------

WORD CamWidth(WORD wSize);

//------------------------------------------------------------------------------

WORD CamHeight(WORD wSize);

//------------------------------------------------------------------------------

BOOL CamRegistryKey(PROPERTY property, DWORD& dwValue, BOOL bSet);

//------------------------------------------------------------------------------

DWORD CamIO_MessageError(LPCTSTR lpCaption);

//------------------------------------------------------------------------------

HANDLE CamIO_OpenHandle();

//------------------------------------------------------------------------------

BOOL CamIO_CloseHandle(HANDLE ObjectHandle);

//------------------------------------------------------------------------------

BOOL CamIO_Enum(HANDLE ObjectHandle, LPDWORD pdwCount, LPDWORD pdwAvailCount, LPDWORD pdwLstAval);

//------------------------------------------------------------------------------

BOOL CamIO_Attach(HANDLE ObjectHandle, DWORD SlotNo, BOOL bAttach, BOOL bControl);

//------------------------------------------------------------------------------

BOOL CamIO_SetProperty(HANDLE ObjectHandle, DWORD SlotNo, PROPERTY Property, DWORD Value);

//------------------------------------------------------------------------------

DWORD CamIO_GetProperty(HANDLE ObjectHandle, DWORD SlotNo, PROPERTY Property, DWORD Value);

//------------------------------------------------------------------------------

BOOL CamIO_StartDevice(HANDLE ObjectHandle, DWORD SlotNo, DWORD Bandwidth, DWORD Flags);

//------------------------------------------------------------------------------

BOOL CamIO_StopDevice(HANDLE ObjectHandle, DWORD SlotNo, DWORD Flags);

//------------------------------------------------------------------------------

BOOL CamIO_ReadData(HANDLE ObjectHandle, DWORD SlotNo, DWORD Flags, PUCHAR pBuffer, DWORD BufLen, LPDWORD pReadLen);

//------------------------------------------------------------------------------

void Cam_Scale(BYTE *psrc, BYTE *pdst, DWORD width, DWORD height);

//------------------------------------------------------------------------------

void Cam_Stretch(BYTE *psrc, BYTE *pdst, DWORD width, DWORD height);

//------------------------------------------------------------------------------

#define MASKADDR 0xFFFF0000
#define PIO_IN  0X37
#define PIO_OUT  0X38
#define IN_MASK  0X39
#define OUT_MASK 0X3A
#define PIO_DIR  0X3B

//------------------------------------------------------------------------------

DWORD ReadChipReg(DWORD dwAddr);

//------------------------------------------------------------------------------

BOOL WriteChipReg(DWORD, DWORD);

//------------------------------------------------------------------------------

BOOL WriteSensorReg(DWORD, DWORD);

//------------------------------------------------------------------------------

#endif // _CAMIO_HPP_

⌨️ 快捷键说明

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