unit CameraParamsUnit; interface uses Windows, SysUtils, Variants, Classes, PixelTypeUnit; const // Definition of correct code MV_OK: Integer = $00000000; // ch:通用错误码定义:范围0x80000000-0x800000FF | en: Definition of common error code : 0x80000000-0x800000FF MV_E_HANDLE: Integer = $80000000; ///< 错误或无效的句柄 | en:Error or invalid handle MV_E_SUPPORT: Integer = $80000001; ///< 不支持的功能 | en:Not supported function MV_E_BUFOVER: Integer = $80000002; ///< 缓存已满 | en:Cache is full MV_E_CALLORDER: Integer = $80000003; ///< 函数调用顺序错误 | en:Function calling order error MV_E_PARAMETER: Integer = $80000004; ///< 错误的参数 | en:Incorrect parameter MV_E_RESOURCE: Integer = $80000006; ///< 资源申请失败 | en:Applying resource failed MV_E_NODATA: Integer = $80000007; ///< 无数据 | en:No data MV_E_PRECONDITION: Integer = $80000008; ///< 前置条件有误,或运行环境已发生变化 | en:Precondition error, or running environment changed MV_E_VERSION: Integer = $80000009; ///< 版本不匹配 | en:Version mismatches MV_E_NOENOUGH_BUF: Integer = $8000000A; ///< 传入的内存空间不足 | en:Insufficient memory MV_E_ABNORMAL_IMAGE: Integer = $8000000B; ///< 异常图像,可能是丢包导致图像不完整 | en:Abnormal image, maybe incomplete image because of lost packet MV_E_LOAD_LIBRARY: Integer = $8000000C; ///< 动态导入DLL失败 | en:Load library failed MV_E_UNKNOW: Integer = $800000FF; ///< 未知的错误 | en:Unknown error // ch:GenICam系列错误:范围0x80000100-0x800001FF | en:GenICam Series Error Codes: Range from 0x80000100 to 0x800001FF MV_E_GC_GENERIC: Integer = $80000100; ///< 通用错误 | en:General error MV_E_GC_ARGUMENT: Integer = $80000101; ///< 参数非法 | en:Illegal parameters MV_E_GC_RANGE: Integer = $80000102; ///< 值超出范围 | en:The value is out of range MV_E_GC_PROPERTY: Integer = $80000103; ///< 属性 | en:Property MV_E_GC_RUNTIME: Integer = $80000104; ///< 运行环境有问题 | en:Running environment error MV_E_GC_LOGICAL: Integer = $80000105; ///< 逻辑错误 | en:Logical error MV_E_GC_ACCESS: Integer = $80000106; ///< 节点访问条件有误 | en:Node accessing condition error MV_E_GC_TIMEOUT: Integer = $80000107; ///< 超时 | en:Timeout MV_E_GC_DYNAMICCAST: Integer = $80000108; ///< 转换异常 | en:Transformation exception MV_E_GC_UNKNOW: Integer = $800001FF; ///< GenICam未知错误 | en:GenICam unknown error //ch:GigE_STATUS对应的错误码:范围0x80000200-0x800002FF | en:GigE_STATUS Error Codes: Range from 0x80000200 to 0x800002FF MV_E_NOT_IMPLEMENTED: Integer = $80000200; ///< 命令不被设备支持 | en:The command is not supported by device MV_E_INVALID_ADDRESS: Integer = $80000201; ///< 访问的目标地址不存在 | en:The target address being accessed does not exist MV_E_WRITE_PROTECT: Integer = $80000202; ///< 目标地址不可写 | en:The target address is not writable MV_E_ACCESS_DENIED: Integer = $80000203; ///< 设备无访问权限 | en:No permission MV_E_BUSY: Integer = $80000204; ///< 设备忙,或网络断开 | en:Device is busy, or network disconnected MV_E_PACKET: Integer = $80000205; ///< 网络包数据错误 | en:Network data packet error MV_E_NETER: Integer = $80000206; ///< 网络相关错误 | en:Network error // GigE相机特有的错误码 MV_E_IP_CONFLICT = $80000221; ///< 设备IP冲突 | en:Device IP conflict //ch:USB_STATUS对应的错误码:范围0x80000300-0x800003FF | en:USB_STATUS Error Codes: Range from 0x80000300 to 0x800003FF MV_E_USB_READ: Integer = $80000300; ///< 读usb出错 | en:Reading USB error MV_E_USB_WRITE: Integer = $80000301; ///< 写usb出错 | en:Writing USB error MV_E_USB_DEVICE: Integer = $80000302; ///< 设备异常 | en:Device exception MV_E_USB_GENICAM: Integer = $80000303; ///< GenICam相关错误 | en:GenICam error MV_E_USB_BANDWIDTH: Integer = $80000304; ///< 带宽不足 该错误码新增 | en:Insufficient bandwidth, this error code is newly added MV_E_USB_DRIVER: Integer = $80000305; ///< 驱动不匹配或者未装驱动 | en:Driver mismatch or unmounted drive MV_E_USB_UNKNOW: Integer = $800003FF; ///< USB未知的错误 | en:USB unknown error //ch:升级时对应的错误码:范围0x80000400-0x800004FF | en:Upgrade Error Codes: Range from 0x80000400 to 0x800004FF MV_E_UPG_FILE_MISMATCH: Integer = $80000400; ///< 升级固件不匹配 | en:Firmware mismatches MV_E_UPG_LANGUSGE_MISMATCH: Integer = $80000401; ///< 升级固件语言不匹配 | en:Firmware language mismatches MV_E_UPG_CONFLICT: Integer = $80000402; ///< 升级冲突(设备已经在升级了再次请求升级即返回此错误) | en:Upgrading conflicted (repeated upgrading requests during device upgrade) MV_E_UPG_INNER_ERR: Integer = $80000403; ///< 升级时相机内部出现错误 | en:Camera internal error during upgrade MV_E_UPG_UNKNOW: Integer = $800004FF; ///< 升级时未知错误 | en:Unknown error during upgrade // ch: 设备类型 | en: device type MV_UNKNOW_DEVICE: Integer = $00000000; // ch:未知设备类型,保留意义 | en:Unknown Device Type, Reserved MV_GIGE_DEVICE: Integer = $00000001; // ch:GigE设备 | en:GigE Device MV_1394_DEVICE: Integer = $00000002; // ch:1394-a/b 设备 | en:1394-a/b Device MV_USB_DEVICE: Integer = $00000004; // ch:USB3.0 设备 | en:USB3.0 Device MV_CAMERALINK_DEVICE: Integer = $00000008; // ch:CameraLink设备 | en:CameraLink Device // device information type MV_GIGE_DEVICE_INFO = record nIpCfgOption: Cardinal; nIpCfgCurrent: Cardinal; nCurrentIp: Cardinal; nCurrentSubNetMask: Cardinal; nDefultGateWay: Cardinal; chManufacturerName: array[0..31] of Byte; chModelName: array[0..31] of Byte; chDeviceVersion: array[0..31] of Byte; chManufacturerSpecificInfo: array[0..47] of Byte; chSerialNumber: array[0..15] of Byte; chUserDefinedName: array[0..15] of Byte; nNetExport: Cardinal; nReserved: array[0..3] of Cardinal; end; type MV_USB3_DEVICE_INFO = record CrtlInEndPoint: Byte; CrtlOutEndPoint: Byte; StreamEndPoint: Byte; EventEndPoint: Byte; idVendor: Byte; idProduct: Byte; nDeviceNumber: Cardinal; chDeviceGUID: array[0..63] of Byte; chVendorName: array[0..63] of Byte; chModelName: array[0..63] of Byte; chFamilyName: array[0..63] of Byte; chDeviceVersion: array[0..63] of Byte; chManufacturerName: array[0..63] of Byte; chSerialNumber: array[0..63] of Byte; chUserDefinedName: array[0..63] of Byte; nbcdUSB: Cardinal; nReserved: array[0..2] of Cardinal; end; type MV_CC_SpecialInfo = record case integer of 0: (stGigEInfo: MV_GIGE_DEVICE_INFO); 1: (stUsb3VInfo: MV_USB3_DEVICE_INFO); end; type MV_CC_DEVICE_INFO = record nMajorVer: Word; nMinorVer: Word; nMacAddrHigh: Cardinal; nMacAddrLow: Cardinal; nTLayerType: Cardinal; nReserved: array[0..3] of Cardinal; SpecialInfo: MV_CC_SpecialInfo; end; type PMV_CC_DEVICE_INFO_LIST = ^MV_CC_DEVICE_INFO_LIST; MV_CC_DEVICE_INFO_LIST = record nDeviceNum: Cardinal; pDeviceInfo: array[0..255] of ^MV_CC_DEVICE_INFO; end; // data type of feature node type PMVCC_INTVALUE = ^MVCC_INTVALUE; MVCC_INTVALUE = record nCurValue: Cardinal; nMax: Cardinal; nMin: Cardinal; nInc: Cardinal; nReserved: array[0..3] of Cardinal; end; type PMVCC_FLOATVALUE = ^MVCC_FLOATVALUE; MVCC_FLOATVALUE = record fCurValue: Single; fMax: Single; fMin: Single; nReserved: array[0..3] of Cardinal; end; type PMVCC_ENUMVALUE = ^MVCC_ENUMVALUE; MVCC_ENUMVALUE = record nCurValue: Cardinal; nSupportedNum: Cardinal; nSupportValue: array[0..63] of Cardinal; nReserved: array[0..3] of Cardinal; end; type PMVCC_STRINGVALUE = ^MVCC_STRINGVALUE; MVCC_STRINGVALUE = record chCurValue: array[0..255] of AnsiChar; nReserved: array[0..3] of Cardinal; end; // ch:输出帧的信息 | en:Output Frame Information type PMV_FRAME_OUT_INFO_EX = ^MV_FRAME_OUT_INFO_EX; MV_FRAME_OUT_INFO_EX = record nWidth: Word; // ch:图像宽 | en:Image Width nHeight: Word; // ch:图像高 | en:Image Height enPixelType: MvGvspPixelType; nFrameNum: Cardinal; // ch:帧号 | en:Frame Number nDevTimeStampHigh: Cardinal; // ch:时间戳高32位 | en:Timestamp high 32 bits nDevTimeStampLow: Cardinal; // ch:时间戳低32位 | en:Timestamp low 32 bits nReserved0: Cardinal; // ch:保留,8字节对齐 | en:Reserved, 8-byte aligned nHostTimeStamp: Int64; // ch:主机生成的时间戳 | en:Host-generated timestamp nFrameLen: Cardinal; // ch:以下为chunk新增水印信息 | en:The followings are chunk add frame-specific information // ch:设备水印时标 | en:Device frame-specific time scale nSecondCount: Cardinal; nCycleCount: Cardinal; nCycleOffset: Cardinal; fGain: Single; fExposureTime: Single; nAverageBrightness: Cardinal; // ch:平均亮度 | en:Average brightness // ch:白平衡相关 | en:White balance nRed: Cardinal; nGreen: Cardinal; nBlue: Cardinal; nFrameCounter: Cardinal; nTriggerIndex: Cardinal; // ch:触发计数 | en:Trigger Counting // ch:Line 输入/输出 | en:Line Input/Output nInput: Cardinal; nOutput: Cardinal; // ch:ROI区域 | en:ROI Region nOffsetX: Word; nOffsetY: Word; nChunkWidth: Word; nChunkHeight: Word; nLostPacket: Cardinal; // ch:本帧丢包数 | en:Lost Pacekt Number In This Frame nReserved: array[0..38] of Cardinal; end; // ch:保存图片格式 | en:Save image type type MV_SAVE_IAMGE_TYPE = ( MV_Image_Undefined = 0, MV_Image_Bmp = 1, MV_Image_Jpeg = 2, MV_Image_Png = 3, // ch:不支持 | en:Not support MV_Image_Tif = 4); // ch:不支持 | en:Not support // ch:图片保存参数 | en:Save Image Parameters type PMV_SAVE_IMAGE_PARAM_EX = ^MV_SAVE_IMAGE_PARAM_EX; MV_SAVE_IMAGE_PARAM_EX = record pData: PAnsiChar; // [IN] ch:输入数据缓存 | en:Input Data Buffer nDataLen: Cardinal; // [IN] ch:输入数据大小 | en:Input Data Size enPixelType: MvGvspPixelType; // [IN] ch:输入数据的像素格式 | en:Input Data Pixel Format nWidth: Word; // [IN] ch:图像宽 | en:Image Width nHeight: Word; // [IN] ch:图像高 | en:Image Height pImageBuffer: PAnsiChar; // [OUT] ch:输出图片缓存 | en:Output Image Buffer nImageLen: Cardinal; // [OUT] ch:输出图片大小 | en:Output Image Size nBufferSize: Cardinal; // [IN] ch:提供的输出缓冲区大小 | en:Output buffer size provided enImageType: MV_SAVE_IAMGE_TYPE; // [IN] ch:输出图片格式 | en:Output Image Format nJpgQuality: Cardinal; // [IN] ch:编码质量, (50-99] | en:Encoding quality, (50-99] // [IN]ch:Bayer格式转为RGB24的插值方法 0-最近邻 1-双线性 2-Hamilton (如果传入其它值则默认为最近邻) // [IN]en:Interpolation method of convert Bayer to RGB24 0-nearest neighbour 1-bilinearity 2-Hamilton nMethodValue: Cardinal; nReserved: array[0..2] of Cardinal; end; // ch:设备状态 | en:device state // ch:采集模式 | en:Acquisition mode type MV_CAM_ACQUISITION_MODE = ( MV_ACQ_MODE_SINGLE = 0, // ch:单帧模式 | en:Single Mode MV_ACQ_MODE_MUTLI = 1, // ch:多帧模式 | en:Multi Mode MV_ACQ_MODE_CONTINUOUS = 1); // ch:持续采集模式 | en:Continuous Mode // ch:增益模式 | en:Gain Mode type MV_CAM_GAIN_MODE = ( MV_GAIN_MODE_OFF = 0, // ch:关闭 | en:Single Mode MV_GAIN_MODE_ONCE = 1, // ch:一次 | en:Multi Mode MV_GAIN_MODE_CONTINUOUS = 1); // ch:连续 | en:Continuous Mode // ch:曝光模式 | en:Exposure Mode type MV_CAM_EXPOSURE_MODE = ( MV_EXPOSURE_MODE_TIMED = 0, MV_EXPOSURE_MODE_TRIGGER_WIDTH = 1); // ch:自动曝光模式 | en:Auto Exposure Mode type MV_CAM_EXPOSURE_AUTO_MODE = ( MV_EXPOSURE_AUTO_MODE_OFF = 0, // ch:关闭 | en:Off MV_EXPOSURE_AUTO_MODE_ONCE = 1, // ch:一次 | en:Once MV_EXPOSURE_AUTO_MODE_CONTINUOUS = 2); // ch:连续 | en:Continuous type MV_CAM_TRIGGER_MODE = ( MV_TRIGGER_MODE_OFF = 0, // ch:关闭 | en:Off MV_TRIGGER_MODE_ON = 1); // ch:打开 | en:ON type MV_CAM_GAMMA_SELECTOR = ( MV_GAMMA_SELECTOR_USER = 0, MV_GAMMA_SELECTOR_SRGB = 1); type MV_CAM_BALANCEWHITE_AUTO = ( MV_BALANCEWHITE_AUTO_OFF = 0, MV_BALANCEWHITE_AUTO_CONTINUOUS = 1, MV_BALANCEWHITE_AUTO_ONCE = 2); type MV_CAM_TRIGGER_SOURCE = ( MV_TRIGGER_SOURCE_LINE0 = 0, MV_TRIGGER_SOURCE_LINE1 = 1, MV_TRIGGER_SOURCE_LINE2 = 2, MV_TRIGGER_SOURCE_LINE3 = 3, MV_TRIGGER_SOURCE_COUNTER0 = 4, MV_TRIGGER_SOURCE_RESERVED = 5, MV_TRIGGER_SOURCE_RESERVED2 = 6, MV_TRIGGER_SOURCE_SOFTWARE = 7, MV_TRIGGER_SOURCE_FrequencyConverter = 8); type MV_GIGE_TRANSMISSION_TYPE = ( MV_GIGE_TRANSTYPE_UNICAST = $0, // ch:表示单播(默认) | en:Unicast mode MV_GIGE_TRANSTYPE_MULTICAST = $1, // ch:表示组播 | en:Multicast mode MV_GIGE_TRANSTYPE_LIMITEDBROADCAST = $2, // ch:表示局域网内广播,暂不支持 | en:Limited broadcast mode,not support MV_GIGE_TRANSTYPE_SUBNETBROADCAST = $3, // ch:表示子网内广播,暂不支持 | en:Subnet broadcast mode,not support MV_GIGE_TRANSTYPE_CAMERADEFINED = $4, // ch:表示从相机获取,暂不支持 | en:Transtype from camera,not support MV_GIGE_TRANSTYPE_UNICAST_DEFINED_PORT = $5, // ch:表示用户自定义应用端接收图像数据Port号 | en:User Defined Receive Data Port MV_GIGE_TRANSTYPE_UNICAST_WITHOUT_RECV = $00010000, // ch:表示设置了单播,但本实例不接收图像数据 | en:Unicast without receive data MV_GIGE_TRANSTYPE_MULTICAST_WITHOUT_RECV = $00010001); // ch:表示组播模式,但本实例不接收图像数据 | en:Multicast without receive data implementation end.