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

📄 hvapi.pas

📁 Led识别与统计系统,基于DELPHI 7.0下
💻 PAS
字号:

//!
//!-----------------------------------------------------------------------------
//!       Name            HvAPI.PAS
//!       Purpose         Device Driver Interface for Win32s, Win9X/NT/XP/2000
//!       Image karte	  Microvision MV Series Frame Grabber
//!       Development Kit Borland Delphi 5.00
//!       Author          Hujun
//!       Date            2004/03/13
//!
//!
//!       Description     Ver 0.9 Beta
//!
//!
//!-----------------------------------------------------------------------------

unit HVAPI;

interface

type
  HHV                     = Longword;
  HVTYPE                  = Longword;
  HV_RESOLUTION           = Longword;
  HV_SNAP_MODE            = Longword;
  HV_POLARITY             = Longword;
  HV_SNAP_SPEED           = Longword;
  HV_CHANNEL              = Longword;
  HV_ADC_CONTROL          = Longword;
  HV_ADC_LEVEL            = Longword;
  HV_AEC_CONTROL          = Longword;
  HV_BIAS_CONTROL         = Longword;
  HV_MIRROR_DIRECTION     = Longword;
  HV_DEVICE_INFO          = Longword;
  HV_RAW_DATA_TYPE        = Longword;
  HV_IMAGE_MODE           = Longword;
  HV_RESOLUTION_MAX_VALUE = Longword;
  HVSTATUS                = Longint;
  HV_BAYER_CONVERT_TYPE   = Longword;
  HV_BAYER_LAYOUT         = Longword;
  HV_COMMAND_CODE         = Longword;

HV_CHECK_PARAM = packed record
    byParam1: BYTE;
    byParam2: BYTE;
    byParam3: BYTE;
    byParam4: BYTE;
 end;

HV_SNAP_INFO = packed record
	hhv: HHV;
	nDevice: Integer;
	nIndex: Integer;
	pParam: Pointer;
 end;

  HV_SNAP_PROC = function(var pInfo: HV_SNAP_INFO): Integer; stdcall;

const
   HV1300UCTYPE: HVTYPE = 0;
   HV2000UCTYPE: HVTYPE = 1;
   HV1301UCTYPE: HVTYPE = 2;
   HV2001UCTYPE: HVTYPE = 3;
   HV3000UCTYPE: HVTYPE = 4;
   HV1300UMTYPE: HVTYPE = 5;
   HV1302UCTYPE: HVTYPE = 6;
   HV2002UCTYPE: HVTYPE = 7;
   HV3102UCTYPE: HVTYPE = 8;
   HV1302UMTYPE: HVTYPE = 9;
   HV1300FCTYPE: HVTYPE = 10;
   HV2000FCTYPE: HVTYPE = 11;
   HV3100FCTYPE: HVTYPE = 12;
   HV1300FMTYPE: HVTYPE = 13;
   HV1303UCTYPE: HVTYPE = 14;
   HV2003UCTYPE: HVTYPE = 15;
   HV3103UCTYPE: HVTYPE = 16;
   HV1303UMTYPE: HVTYPE = 17;

   RES_MODE0: HV_RESOLUTION = 0;
   RES_MODE1: HV_RESOLUTION = 1;
   RES_MODE2: HV_RESOLUTION = 2;
   RES_MODE3: HV_RESOLUTION = 3;

   CONTINUATION: HV_SNAP_MODE  = 0;
   TRIGGER: HV_SNAP_MODE       = 1;
   TRIGGER_EDGE: HV_SNAP_MODE  = 2;
   TRIGGER_LEVEL: HV_SNAP_MODE = 3;

   LOW:	HV_POLARITY  = 0;
   HIGH: HV_POLARITY = 1;

   NORMAL_SPEED: HV_SNAP_SPEED = 0;
   HIGH_SPEED: HV_SNAP_SPEED   = 1;

   RED_CHANNEL: HV_CHANNEL    = 16;
   GREEN_CHANNEL1: HV_CHANNEL = 17;
   GREEN_CHANNEL2: HV_CHANNEL = 18;
   BLUE_CHANNEL: HV_CHANNEL   = 19;

   ADC_BITS: HV_ADC_CONTROL	                  = 0;
   ADC_BLKLEVEL_CAL: HV_ADC_CONTROL		  = 1;
   ADC_BLKLEVEL_CAL_REDCHANNEL: HV_ADC_CONTROL	  = 16;
   ADC_BLKLEVEL_CAL_GREENCHANNEL1: HV_ADC_CONTROL = 17;
   ADC_BLKLEVEL_CAL_GREENCHANNEL2: HV_ADC_CONTROL = 18;
   ADC_BLKLEVEL_CAL_BLUECHANNEL: HV_ADC_CONTROL	  = 19;

   ADC_LEVEL0: HV_ADC_LEVEL = 0;
   ADC_LEVEL1: HV_ADC_LEVEL = 1;
   ADC_LEVEL2: HV_ADC_LEVEL = 2;
   ADC_LEVEL3: HV_ADC_LEVEL = 3;

   AEC_EXPOSURE_TIME: HV_AEC_CONTROL = 1;

   VERT_DIR: HV_MIRROR_DIRECTION = 1;
		
   DESC_DEVICE_TYPE: HV_DEVICE_INFO	        = 0; 
   DESC_RESOLUTION: HV_DEVICE_INFO              = 1;
   DESC_DEVICE_MARK: HV_DEVICE_INFO	        = 2;
   DESC_DEVICE_SERIESNUM: HV_DEVICE_INFO        = 3;
   DESC_DEVICE_BLANKSIZE: HV_DEVICE_INFO        = 4;
   DESC_DEVICE_HARDWARE_VERSION: HV_DEVICE_INFO = 6;

   HV_COLOR: HV_IMAGE_MODE = 0;
   HV_BW: HV_IMAGE_MODE    = 1;
		

		
   STATUS_OK: HVSTATUS	                     = 0;
   STATUS_NO_DEVICE_FOUND: HVSTATUS	     = -1;
   STATUS_DEVICE_HANDLE_INVALID: HVSTATUS    = -2;
   STATUS_HW_DEVICE_TYPE_ERROR: HVSTATUS     = -3;
   STATUS_HW_INIT_ERROR: HVSTATUS	     = -4;
   STATUS_HW_RESET_ERROR: HVSTATUS	     = -5;
   STATUS_NOT_ENOUGH_SYSTEM_MEMORY: HVSTATUS = -6;
   STATUS_HW_IO_ERROR: HVSTATUS	             = -7;
   STATUS_HW_IO_TIMEOUT: HVSTATUS	     = -8;
   STATUS_HW_ACCESS_ERROR: HVSTATUS	     = -9;

   STATUS_OPEN_DRIVER_FAILED: HVSTATUS	   = -10;
   STATUS_NOT_SUPPORT_INTERFACE: HVSTATUS  = -11;
   STATUS_PARAMETER_INVALID: HVSTATUS	   = -12;
   STATUS_PARAMETER_OUT_OF_BOUND: HVSTATUS = -13;
   STATUS_IN_WORK: HVSTATUS	           = -14;
   STATUS_NOT_OPEN_SNAP: HVSTATUS	   = -15;
   STATUS_NOT_START_SNAP: HVSTATUS	   = -16;
   STATUS_FILE_CREATE_ERROR: HVSTATUS	   = -17;
   STATUS_FILE_INVALID: HVSTATUS	   = -18;
   STATUS_NOT_START_SNAP_INT: HVSTATUS	   = -19;
   STATUS_INTERNAL_ERROR: HVSTATUS	   = -20;

   BAYER2RGB_ZHC: HV_BAYER_CONVERT_TYPE           = 0;
   BAYER2RGB_NEIGHBOUR: HV_BAYER_CONVERT_TYPE     = 1;
   BAYER2RGB_BILINER: HV_BAYER_CONVERT_TYPE       = 2;
   BAYER2RGB_PATTERN: HV_BAYER_CONVERT_TYPE       = 3;
   BAYER2RGB_EDGESENSING: HV_BAYER_CONVERT_TYPE   = 4;
   BAYER2RGB_RF: HV_BAYER_CONVERT_TYPE            = 5;
   BAYER2RGB_PIXELGROUPING: HV_BAYER_CONVERT_TYPE = 6;
   BAYER2RGB_RESERVERED1: HV_BAYER_CONVERT_TYPE   = 7;
   BAYER2RGB_RESERVERED2: HV_BAYER_CONVERT_TYPE   = 8;
   BAYER2RGB_RESERVERED3: HV_BAYER_CONVERT_TYPE   = 9;

   BAYER_GB: HV_BAYER_LAYOUT = 1;
   BAYER_GR: HV_BAYER_LAYOUT = 2;
   BAYER_BG: HV_BAYER_LAYOUT = 3;
   BAYER_RG: HV_BAYER_LAYOUT = 4;
   
   CMD_RESERVED0: HV_COMMAND_CODE = 0;
   CMD_RESERVED1: HV_COMMAND_CODE = 1;
   
//! Show Trace Information if Error occured
procedure HV_VERIFY(status: HVSTATUS);
function HV_SUCCESS(status: HVSTATUS):boolean;


//! Common Functions for Hv digital Framer Grabber  	
function BeginHVDevice(nDevice:integer;var pHandle: HHV): HVSTATUS; stdcall;
function EndHVDevice(hhv:HHV ): HVSTATUS; stdcall;

function HVSetResolution(hhv:HHV ; resoultion:HV_RESOLUTION ): HVSTATUS; stdcall;
function HVSetOutputWindow(hhv: HHV ;nXStart,nYStart,nWidth,nHeight: integer): HVSTATUS; stdcall;
function HVSetSnapMode(hhv:HHV; mode: HV_SNAP_MODE): HVSTATUS; stdcall;
function HVSetTriggerPolarity(hhv:HHV; polarity: HV_POLARITY): HVSTATUS; stdcall;
function HVSetStrobePolarity(hhv:HHV; polarity: HV_POLARITY): HVSTATUS; stdcall;
function HVSetSnapSpeed(hhv:HHV; speed:HV_SNAP_SPEED): HVSTATUS; stdcall;
function HVEnableVideoMirror(hhv: HHV ; dir: HV_MIRROR_DIRECTION; bEnable: Longbool): HVSTATUS; stdcall;

function HVADCControl(hhv:HHV ; byParam: BYTE; lValue:longword): HVSTATUS; stdcall;
function HVAGCControl(hhv:HHV ; byParam:BYTE; lValue:longword): HVSTATUS; stdcall;
function HVAECControl(hhv:HHV ; byParam:BYTE; lValue:longword): HVSTATUS; stdcall;

function HVSnapShot(hhv:HHV ; ppBuffer: longword; nSum:integer): HVSTATUS; stdcall;

function HVOpenSnap(hhv:HHV ; lpSnapFunc: HV_SNAP_PROC; pParam: PChar): HVSTATUS; stdcall;
function HVStartSnap(hhv:HHV ; ppBuffer: longword; nSum:integer): HVSTATUS; stdcall;
function HVStopSnap(hhv:HHV): HVSTATUS; stdcall;
function HVTriggerShot(hhv:HHV): HVSTATUS; stdcall;
function HVCloseSnap(hhv:HHV): HVSTATUS; stdcall;
function HVSetBlanking(hhv:HHV; nHor,nVert:integer): HVSTATUS; stdcall;

function HVWaitSync(hhv:HHV): HVSTATUS; stdcall;

function HVGetErrorString(status: HVSTATUS): PChar; stdcall;
function HVGetDeviceTotal(var pNumber: integer): HVSTATUS; stdcall;

function HVGetDeviceInfo(hhv:HHV ; Param:HV_DEVICE_INFO; pInfo:PChar; var pSize: integer): HVSTATUS; stdcall;
function HVCheckDevice(hhv:HHV ; Param: HV_CHECK_PARAM; var pStatus:Longbool): HVSTATUS; stdcall;
function HVDeviceMemRead(hhv:HHV ; Offset:longword; pBuffer:PChar; Length: longword): HVSTATUS; stdcall;
function HVDeviceMemWrite(hhv:HHV ; Offset:longword; pBuffer:PChar; Length: longword): HVSTATUS; stdcall;

function HVCommand(hhv:HHV ; CommandCode:HV_COMMAND_CODE; pContext:PChar; var pLength: integer): HVSTATUS; stdcall;

procedure ConvertBayer2Rgb(pDest: PChar; pSrce: PChar; nWidth, nHeight: integer; cvtype:HV_BAYER_CONVERT_TYPE;
							 pLutR:longword;pLutG:longword;pLutB:longword;bIsFlip:Longbool;dataType:HV_BAYER_LAYOUT); stdcall;
procedure GetWhiteBalanceRatio(pSrce:PChar; nWidth,nHeight: integer; var pRatioR,pRatioG,pRatioB: double);stdcall;

procedure SetGammaLut(pLutGamma:longword;dGammaRatio:double);stdcall;
procedure DetectDeadPixel(pRawImgBuf:PChar; pBadPixelPosBuf:PChar;nImgWid,nImgHei:integer);stdcall;
procedure EraseDeadPixel(pRawImgBuf:PChar; pBadPixelPosBuf:PChar;nXPos,nYPos,nImgWid,nImgHei,nBadPixelBufWid,nBadPixelBufHei:integer);stdcall;
procedure GetPatternNoise(pRawImgBuf:PChar;pPatternBuf:PChar;nPatternWid,nPatternHei:integer);stdcall;
procedure AvgPatternNoise(pPatternBuf:PChar;nPatternWid,nPatternHei,nAvgTimes:integer);stdcall;
procedure FixPatternNoise(pRawImgBuf:PChar;pPatternBuf:PChar;nXPos,nYPos,nImgWid,nImgHei,nPatternWid,nPatternHei:integer);stdcall;



function HVSaveJPEG(lpFileName,pBuffer:PChar;nWidth,nHeight,nBitCount: integer; bVerFlip: longbool;nQuality: integer): HVSTATUS; stdcall;
function HVLoadJPEG(lpFileName,pBuffer:PChar;var nWidth,nHeight,nBitCount: integer; bVerFlip: longbool): HVSTATUS; stdcall;


implementation

uses
  windows;
  
//! Show Trace Information if Error occured
procedure HV_VERIFY(status: HVSTATUS);
begin
  if((status) <> STATUS_OK) then
    MessageBox(0, HVGetErrorString(status), 'Error', MB_ICONWARNING or MB_OK);
end;


function HV_SUCCESS(status: HVSTATUS):boolean;
begin
  if((status) = STATUS_OK) then
        result := true
  else
        result := false;
end;




//! Common Functions for Hv digital Framer Grabber
function BeginHVDevice; external 'HVDAILT.dll' name 'BeginHVDevice';
function EndHVDevice; external 'HVDAILT.dll' name 'EndHVDevice';

function HVSetResolution; external 'HVDAILT.dll' name 'HVSetResolution';
function HVSetOutputWindow; external 'HVDAILT.dll' name 'HVSetOutputWindow';
function HVSetSnapMode; external 'HVDAILT.dll' name 'HVSetSnapMode';
function HVSetTriggerPolarity; external 'HVDAILT.dll' name 'HVSetTriggerPolarity';
function HVSetStrobePolarity; external 'HVDAILT.dll' name 'HVSetStrobePolarity';
function HVSetSnapSpeed; external 'HVDAILT.dll' name 'HVSetSnapSpeed';
function HVEnableVideoMirror; external 'HVDAILT.dll' name 'HVEnableVideoMirror';

function HVADCControl; external 'HVDAILT.dll' name 'HVADCControl';
function HVAGCControl; external 'HVDAILT.dll' name 'HVAGCControl';
function HVAECControl; external 'HVDAILT.dll' name 'HVAECControl';


function HVSnapShot; external 'HVDAILT.dll' name 'HVSnapShot';

function HVOpenSnap; external 'HVDAILT.dll' name 'HVOpenSnap';
function HVStartSnap; external 'HVDAILT.dll' name 'HVStartSnap';
function HVStopSnap; external 'HVDAILT.dll' name 'HVStopSnap';
function HVTriggerShot; external 'HVDAILT.dll' name 'HVTriggerShot';
function HVCloseSnap; external 'HVDAILT.dll' name 'HVCloseSnap';
function HVSetBlanking; external 'HVDAILT.dll' name 'HVSetBlanking';

function HVWaitSync; external 'HVDAILT.dll' name 'HVWaitSync';

function HVGetErrorString; external 'HVDAILT.dll' name 'HVGetErrorString';
function HVGetDeviceTotal; external 'HVDAILT.dll' name 'HVGetDeviceTotal';

function HVGetDeviceInfo; external 'HVDAILT.dll' name 'HVGetDeviceInfo';
function HVCheckDevice; external 'HVDAILT.dll' name 'HVCheckDevice';
function HVDeviceMemRead; external 'HVDAILT.dll' name 'HVDeviceMemRead';
function HVDeviceMemWrite; external 'HVDAILT.dll' name 'HVDeviceMemWrite';

function HVCommand; external 'HVDAILT.dll' name 'HVCommand';

procedure ConvertBayer2Rgb; external 'Raw2Rgb.dll' name 'ConvertBayer2Rgb';
procedure GetWhiteBalanceRatio; external 'Raw2Rgb.dll' name 'GetWhiteBalanceRatio';

procedure SetGammaLut; external 'Raw2Rgb.dll' name 'SetGammaLut';
procedure DetectDeadPixel; external 'Raw2Rgb.dll' name 'DetectDeadPixel';
procedure EraseDeadPixel; external 'Raw2Rgb.dll' name 'EraseDeadPixel';
procedure GetPatternNoise; external 'Raw2Rgb.dll' name 'GetPatternNoise';
procedure AvgPatternNoise; external 'Raw2Rgb.dll' name 'AvgPatternNoise';
procedure FixPatternNoise; external 'Raw2Rgb.dll' name 'FixPatternNoise';

function HVSaveJPEG; external 'HVUtil.dll' name 'HVSaveJPEG';
function HVLoadJPEG; external 'HVUtil.dll' name 'HVLoadJPEG';

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

end.

⌨️ 快捷键说明

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