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