You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

918 lines
41 KiB
C

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

#ifndef _MV_CAMERA_PARAMS_H_
#define _MV_CAMERA_PARAMS_H_
#include "PixelType.h"
#ifndef __cplusplus
typedef char bool;
#define true 1
#define false 0
#endif
// ch:设备类型定义 | en:Device Type Definition
#define MV_UNKNOW_DEVICE 0x00000000 // ch:未知设备类型,保留意义 | en:Unknown Device Type, Reserved
#define MV_GIGE_DEVICE 0x00000001 // ch:GigE设备 | en:GigE Device
#define MV_1394_DEVICE 0x00000002 // ch:1394-a/b 设备 | en:1394-a/b Device
#define MV_USB_DEVICE 0x00000004 // ch:USB3.0 设备 | en:USB3.0 Device
#define MV_CAMERALINK_DEVICE 0x00000008 // ch:CameraLink设备 | en:CameraLink Device
typedef struct _MV_GIGE_DEVICE_INFO_
{
unsigned int nIpCfgOption;
unsigned int nIpCfgCurrent; //IP configuration:bit31-static bit30-dhcp bit29-lla
unsigned int nCurrentIp; //curtent | en:
unsigned int nCurrentSubNetMask; //curtent subnet mask
unsigned int nDefultGateWay; //current gateway | en
unsigned char chManufacturerName[32];
unsigned char chModelName[32];
unsigned char chDeviceVersion[32];
unsigned char chManufacturerSpecificInfo[48];
unsigned char chSerialNumber[16];
unsigned char chUserDefinedName[16];
unsigned int nNetExport; // ch:网口IP地址 | en:GIGE IP Address
unsigned int nReserved[4];
}MV_GIGE_DEVICE_INFO;
#define INFO_MAX_BUFFER_SIZE 64 //新定义256
typedef struct _MV_USB3_DEVICE_INFO_
{
unsigned char CrtlInEndPoint; // ch:控制输入端点 | en:Control input endpoint
unsigned char CrtlOutEndPoint; // ch:控制输出端点 | en:Control output endpoint
unsigned char StreamEndPoint; // ch:流端点 | en:Flow endpoint
unsigned char EventEndPoint; // ch:事件端点 | en:Event endpoint
unsigned short idVendor; // ch:供应商ID号 | en:Vendor ID Number
unsigned short idProduct; // ch:产品ID号 | en:Device ID Number
unsigned int nDeviceNumber; // ch:设备序列号 | en:Device Serial Number
unsigned char chDeviceGUID[INFO_MAX_BUFFER_SIZE]; // ch:设备GUID号 | en:Device GUID Number
unsigned char chVendorName[INFO_MAX_BUFFER_SIZE]; // ch:供应商名字 | en:Vendor Name
unsigned char chModelName[INFO_MAX_BUFFER_SIZE]; // ch:型号名字 | en:Model Name
unsigned char chFamilyName[INFO_MAX_BUFFER_SIZE]; // ch:家族名字 | en:Family Name
unsigned char chDeviceVersion[INFO_MAX_BUFFER_SIZE]; // ch:设备版本号 | en:Device Version
unsigned char chManufacturerName[INFO_MAX_BUFFER_SIZE]; // ch:制造商名字 | en:Manufacturer Name
unsigned char chSerialNumber[INFO_MAX_BUFFER_SIZE]; // ch:序列号 | en:Serial Number
unsigned char chUserDefinedName[INFO_MAX_BUFFER_SIZE]; // ch:用户自定义名字 | en:User Defined Name
unsigned int nbcdUSB; // ch:支持的USB协议 | en:Support USB Protocol
unsigned int nReserved[3]; // ch:保留字节 | en:Reserved bytes
}MV_USB3_DEVICE_INFO;
typedef struct _MV_CamL_DEV_INFO_
{
unsigned char chPortID[INFO_MAX_BUFFER_SIZE];
unsigned char chModelName[INFO_MAX_BUFFER_SIZE];
unsigned char chFamilyName[INFO_MAX_BUFFER_SIZE];
unsigned char chDeviceVersion[INFO_MAX_BUFFER_SIZE];
unsigned char chManufacturerName[INFO_MAX_BUFFER_SIZE];
unsigned char chSerialNumber[INFO_MAX_BUFFER_SIZE];
unsigned int nReserved[38];
}MV_CamL_DEV_INFO;
// ch:设备信息 | en:Device Infomation
typedef struct _MV_CC_DEVICE_INFO_
{
// ch:common info | en:common info
unsigned short nMajorVer;
unsigned short nMinorVer;
unsigned int nMacAddrHigh; // ch:MAC 地址 | en:MAC Address
unsigned int nMacAddrLow;
unsigned int nTLayerType; // ch:设备传输层协议类型e.g. MV_GIGE_DEVICE | en:Device Transport Layer Protocol Type, e.g. MV_GIGE_DEVICE
unsigned int nReserved[4];
union
{
MV_GIGE_DEVICE_INFO stGigEInfo;
MV_USB3_DEVICE_INFO stUsb3VInfo;
MV_CamL_DEV_INFO stCamLInfo;
// more ...
}SpecialInfo;
}MV_CC_DEVICE_INFO;
// ch:网络传输的相关信息 | en:Network transmission information
typedef struct _MV_NETTRANS_INFO_
{
int64_t nReviceDataSize; // ch:已接收数据大小 [统计StartGrabbing和StopGrabbing之间的数据量] | en:Received Data Size [Calculate the Data Size between StartGrabbing and StopGrabbing]
int nThrowFrameCount; // ch:丢帧数量 | en:Throw frame number
unsigned int nNetRecvFrameCount;
__int64 nRequestResendPacketCount; // 请求重发包数
__int64 nResendPacketCount; // 重发包数
}MV_NETTRANS_INFO;
// ch:最多支持的传输层实例个数 | en:The maximum number of supported transport layer instances
#define MV_MAX_TLS_NUM 8
// ch:最大支持的设备个数 | en:The maximum number of supported devices
#define MV_MAX_DEVICE_NUM 256
// ch:设备信息列表 | en:Device Information List
typedef struct _MV_CC_DEVICE_INFO_LIST_
{
unsigned int nDeviceNum; // ch:在线设备数量 | en:Online Device Number
MV_CC_DEVICE_INFO* pDeviceInfo[MV_MAX_DEVICE_NUM]; // ch:支持最多256个设备 | en:Support up to 256 devices
}MV_CC_DEVICE_INFO_LIST;
// ch:输出帧的信息 | en:Output Frame Information
typedef struct _MV_FRAME_OUT_INFO_
{
unsigned short nWidth; // ch:图像宽 | en:Image Width
unsigned short nHeight; // ch:图像高 | en:Image Height
enum MvGvspPixelType enPixelType; // ch:像素格式 | en:Pixel Type
unsigned int nFrameNum; // ch:帧号 | en:Frame Number
unsigned int nDevTimeStampHigh; // ch:时间戳高32位 | en:Timestamp high 32 bits
unsigned int nDevTimeStampLow; // ch:时间戳低32位 | en:Timestamp low 32 bits
unsigned int nReserved0; // ch:保留8字节对齐 | en:Reserved, 8-byte aligned
int64_t nHostTimeStamp; // ch:主机生成的时间戳 | en:Host-generated timestamp
unsigned int nFrameLen;
unsigned int nLostPacket; // 本帧丢包数
unsigned int nReserved[2];
}MV_FRAME_OUT_INFO;
// ch:输出帧的信息 | en:Output Frame Information
typedef struct _MV_FRAME_OUT_INFO_EX_
{
unsigned short nWidth; // ch:图像宽 | en:Image Width
unsigned short nHeight; // ch:图像高 | en:Image Height
enum MvGvspPixelType enPixelType; // ch:像素格式 | en:Pixel Type
unsigned int nFrameNum; // ch:帧号 | en:Frame Number
unsigned int nDevTimeStampHigh; // ch:时间戳高32位 | en:Timestamp high 32 bits
unsigned int nDevTimeStampLow; // ch:时间戳低32位 | en:Timestamp low 32 bits
unsigned int nReserved0; // ch:保留8字节对齐 | en:Reserved, 8-byte aligned
int64_t nHostTimeStamp; // ch:主机生成的时间戳 | en:Host-generated timestamp
unsigned int nFrameLen;
// ch:以下为chunk新增水印信息 | en:The followings are chunk add frame-specific information
// ch:设备水印时标 | en:Device frame-specific time scale
unsigned int nSecondCount;
unsigned int nCycleCount;
unsigned int nCycleOffset;
float fGain;
float fExposureTime;
unsigned int nAverageBrightness; // ch:平均亮度 | en:Average brightness
// ch:白平衡相关 | en:White balance
unsigned int nRed;
unsigned int nGreen;
unsigned int nBlue;
unsigned int nFrameCounter;
unsigned int nTriggerIndex; // ch:触发计数 | en:Trigger Counting
// ch:Line 输入/输出 | en:Line Input/Output
unsigned int nInput; // ch:输入 | en:Input
unsigned int nOutput; // ch:输出 | en:Output
// ch:ROI区域 | en:ROI Region
unsigned short nOffsetX;
unsigned short nOffsetY;
unsigned short nChunkWidth;
unsigned short nChunkHeight;
unsigned int nLostPacket; // ch:本帧丢包数 | en:Lost Pacekt Number In This Frame
unsigned int nReserved[39]; // 保留
}MV_FRAME_OUT_INFO_EX;
// ch:图像结构体,输出图像指针地址及图像信息 | en:Image Struct, output the pointer of Image and the information of the specific image
typedef struct _MV_FRAME_OUT_
{
unsigned char* pBufAddr; // ch:图像指针地址 | en: pointer of image
MV_FRAME_OUT_INFO_EX stFrameInfo; // ch:图像信息 | en:information of the specific image
unsigned int nRes[16]; // ch:保留 | en:reserved
}MV_FRAME_OUT;
typedef struct _MV_DISPLAY_FRAME_INFO_
{
void* hWnd; // ch:窗口句柄 | en:HWND
unsigned char* pData; // ch:显示的数据 | en:Data Buffer
unsigned int nDataLen; // ch:数据长度 | en:Data Size
unsigned short nWidth; // ch:图像宽 | en:Width
unsigned short nHeight; // ch:图像高 | en:Height
enum MvGvspPixelType enPixelType; // ch:像素格式 | en:Pixel format
unsigned int nRes[4];
}MV_DISPLAY_FRAME_INFO;
// ch:保存图片格式 | en:Save image type
enum 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 type
typedef struct _MV_SAVE_IMAGE_PARAM_T_
{
unsigned char* pData; // [IN] ch:输入数据缓存 | en:Input Data Buffer
unsigned int nDataLen; // [IN] ch:输入数据大小 | en:Input Data Size
enum MvGvspPixelType enPixelType; // [IN] ch:输入数据的像素格式 | en:Input Data Pixel Format
unsigned short nWidth; // [IN] ch:图像宽 | en:Image Width
unsigned short nHeight; // [IN] ch:图像高 | en:Image Height
unsigned char* pImageBuffer; // [OUT] ch:输出图片缓存 | en:Output Image Buffer
unsigned int nImageLen; // [OUT] ch:输出图片大小 | en:Output Image Size
unsigned int nBufferSize; // [IN] ch:提供的输出缓冲区大小 | en:Output buffer size provided
enum MV_SAVE_IAMGE_TYPE enImageType; // [IN] ch:输出图片格式 | en:Output Image Format
}MV_SAVE_IMAGE_PARAM;
// ch:图片保存参数 | en:Save Image Parameters
typedef struct _MV_SAVE_IMAGE_PARAM_T_EX_
{
unsigned char* pData; // [IN] ch:输入数据缓存 | en:Input Data Buffer
unsigned int nDataLen; // [IN] ch:输入数据大小 | en:Input Data Size
enum MvGvspPixelType enPixelType; // [IN] ch:输入数据的像素格式 | en:Input Data Pixel Format
unsigned short nWidth; // [IN] ch:图像宽 | en:Image Width
unsigned short nHeight; // [IN] ch:图像高 | en:Image Height
unsigned char* pImageBuffer; // [OUT] ch:输出图片缓存 | en:Output Image Buffer
unsigned int nImageLen; // [OUT] ch:输出图片大小 | en:Output Image Size
unsigned int nBufferSize; // [IN] ch:提供的输出缓冲区大小 | en:Output buffer size provided
enum MV_SAVE_IAMGE_TYPE enImageType; // [IN] ch:输出图片格式 | en:Output Image Format
unsigned int nJpgQuality; // [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
unsigned int iMethodValue;
unsigned int nReserved[3];
}MV_SAVE_IMAGE_PARAM_EX;
// ch:图像转换结构体 | en:Pixel convert structure
typedef struct _MV_PIXEL_CONVERT_PARAM_T_
{
unsigned short nWidth; // [IN] ch:图像宽 | en:Width
unsigned short nHeight; // [IN] ch:图像高 | en:Height
enum MvGvspPixelType enSrcPixelType; // [IN] ch:源像素格式 | en:Source pixel format
unsigned char* pSrcData; // [IN] ch:输入数据缓存 | en:Input data buffer
unsigned int nSrcDataLen; // [IN] ch:输入数据大小 | en:Input data size
enum MvGvspPixelType enDstPixelType; // [IN] ch:目标像素格式 | en:Destination pixel format
unsigned char* pDstBuffer; // [OUT] ch:输出数据缓存 | en:Output data buffer
unsigned int nDstLen; // [OUT] ch:输出数据大小 | en:Output data size
unsigned int nDstBufferSize; // [IN] ch:提供的输出缓冲区大小 | en:Provided outbut buffer size
unsigned int nRes[4];
}MV_CC_PIXEL_CONVERT_PARAM;
// ch:录像格式定义 | en:Record Format Type
typedef enum _MV_RECORD_FORMAT_TYPE_
{
MV_FormatType_Undefined = 0,
MV_FormatType_AVI = 1,
}MV_RECORD_FORMAT_TYPE;
// ch:录像参数 | en:Record Parameters
typedef struct _MV_CC_RECORD_PARAM_T_
{
enum MvGvspPixelType enPixelType; // [IN] 输入数据的像素格式
unsigned short nWidth; // [IN] 图像宽(指定目标参数时需为2的倍数)
unsigned short nHeight; // [IN] 图像高(指定目标参数时需为2的倍数)
float fFrameRate; // [IN] 帧率fps(1/16-120)
unsigned int nBitRate; // [IN] 码率kbps(128kbps-16Mbps)
MV_RECORD_FORMAT_TYPE enRecordFmtType; // [IN] 录像格式
char* strFilePath; // [IN] 录像文件存放路径(如果路径中存在中文需转成utf-8)
unsigned int nRes[8];
}MV_CC_RECORD_PARAM;
// ch:录像数据 | en:Record Data
typedef struct _MV_CC_INPUT_FRAME_INFO_T_
{
unsigned char* pData; // [IN] 图像数据指针
unsigned int nDataLen; // [IN] 图像大小
unsigned int nRes[8];
}MV_CC_INPUT_FRAME_INFO;
// ch:采集模式 | en:Acquisition mode
typedef enum _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 = 2, // ch:持续采集模式 | en:Continuous Mode
}MV_CAM_ACQUISITION_MODE;
// ch:增益模式 | en:Gain Mode
typedef enum _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 = 2, // ch:连续 | en:Continuous Mode
}MV_CAM_GAIN_MODE;
// ch:曝光模式 | en:Exposure Mode
typedef enum _MV_CAM_EXPOSURE_MODE_
{
MV_EXPOSURE_MODE_TIMED = 0, // Timed
MV_EXPOSURE_MODE_TRIGGER_WIDTH = 1, // TriggerWidth
}MV_CAM_EXPOSURE_MODE;
// ch:自动曝光模式 | en:Auto Exposure Mode
typedef enum _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
}MV_CAM_EXPOSURE_AUTO_MODE;
typedef enum _MV_CAM_TRIGGER_MODE_
{
MV_TRIGGER_MODE_OFF = 0, // ch:关闭 | en:Off
MV_TRIGGER_MODE_ON = 1, // ch:打开 | en:ON
}MV_CAM_TRIGGER_MODE;
typedef enum _MV_CAM_GAMMA_SELECTOR_
{
MV_GAMMA_SELECTOR_USER = 1,
MV_GAMMA_SELECTOR_SRGB = 2,
}MV_CAM_GAMMA_SELECTOR;
typedef enum _MV_CAM_BALANCEWHITE_AUTO_
{
MV_BALANCEWHITE_AUTO_OFF = 0,
MV_BALANCEWHITE_AUTO_ONCE = 2,
MV_BALANCEWHITE_AUTO_CONTINUOUS = 1, // ch:连续 | en:Continuous
}MV_CAM_BALANCEWHITE_AUTO;
typedef enum _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_SOFTWARE = 7,
MV_TRIGGER_SOURCE_FrequencyConverter= 8,
}MV_CAM_TRIGGER_SOURCE;
typedef enum _MV_GIGE_TRANSMISSION_TYPE_
{
MV_GIGE_TRANSTYPE_UNICAST = 0x0, // ch:表示单播(默认) | en:Unicast mode
MV_GIGE_TRANSTYPE_MULTICAST = 0x1, // ch:表示组播 | en:Multicast mode
MV_GIGE_TRANSTYPE_LIMITEDBROADCAST = 0x2, // ch:表示局域网内广播,暂不支持 | en:Limited broadcast mode,not support
MV_GIGE_TRANSTYPE_SUBNETBROADCAST = 0x3, // ch:表示子网内广播,暂不支持 | en:Subnet broadcast mode,not support
MV_GIGE_TRANSTYPE_CAMERADEFINED = 0x4, // ch:表示从相机获取,暂不支持 | en:Transtype from camera,not support
MV_GIGE_TRANSTYPE_UNICAST_DEFINED_PORT = 0x5, // ch:表示用户自定义应用端接收图像数据Port号 | en:User Defined Receive Data Port
MV_GIGE_TRANSTYPE_UNICAST_WITHOUT_RECV = 0x00010000, // ch:表示设置了单播,但本实例不接收图像数据 | en:Unicast without receive data
MV_GIGE_TRANSTYPE_MULTICAST_WITHOUT_RECV = 0x00010001, // ch:表示组播模式,但本实例不接收图像数据 | en:Multicast without receive data
}MV_GIGE_TRANSMISSION_TYPE;
// GigEVision IP Configuration
#define MV_IP_CFG_STATIC 0x05000000
#define MV_IP_CFG_DHCP 0x06000000
#define MV_IP_CFG_LLA 0x04000000
// GigEVision Net Transfer Mode
#define MV_NET_TRANS_DRIVER 0x00000001
#define MV_NET_TRANS_SOCKET 0x00000002
// CameraLink Baud Rates (CLUINT32)
#define MV_CAML_BAUDRATE_9600 0x00000001
#define MV_CAML_BAUDRATE_19200 0x00000002
#define MV_CAML_BAUDRATE_38400 0x00000004
#define MV_CAML_BAUDRATE_57600 0x00000008
#define MV_CAML_BAUDRATE_115200 0x00000010
#define MV_CAML_BAUDRATE_230400 0x00000020
#define MV_CAML_BAUDRATE_460800 0x00000040
#define MV_CAML_BAUDRATE_921600 0x00000080
#define MV_CAML_BAUDRATE_AUTOMAX 0x40000000
// ch:信息类型 | en:Information Type
#define MV_MATCH_TYPE_NET_DETECT 0x00000001 // ch:网络流量和丢包信息 | en:Network traffic and packet loss information
#define MV_MATCH_TYPE_USB_DETECT 0x00000002 // ch:host接收到来自U3V设备的字节总数 | en:The total number of bytes host received from U3V device
// ch:某个节点对应的子节点个数最大值 | en:The maximum number of child nodes corresponding to a node
#define MV_MAX_XML_NODE_NUM_C 128
// ch:节点名称字符串最大长度 | en:The maximum length of node name string
#define MV_MAX_XML_NODE_STRLEN_C 64
// ch:节点String值最大长度 | en:The maximum length of Node String
#define MV_MAX_XML_STRVALUE_STRLEN_C 64
// ch:节点描述字段最大长度 | en:The maximum length of the node description field
#define MV_MAX_XML_DISC_STRLEN_C 512
// ch:最多的单元数 | en:The maximum number of units
#define MV_MAX_XML_ENTRY_NUM 10
// ch:父节点个数上限 | en:The maximum number of parent nodes
#define MV_MAX_XML_PARENTS_NUM 8
// ch:每个已经实现单元的名称长度 | en:The length of the name of each unit that has been implemented
#define MV_MAX_XML_SYMBOLIC_STRLEN_C 64
#define MV_MAX_XML_SYMBOLIC_NUM 64
// ch:重发包默认最大包数量 | en:The default maximum number of retransmission packets
// ch:全匹配的一种信息结构体 | en:A fully matched information structure
typedef struct _MV_ALL_MATCH_INFO_
{
unsigned int nType; // ch:需要输出的信息类型e.g. MV_MATCH_TYPE_NET_DETECT | en:Information type need to output ,e.g. MV_MATCH_TYPE_NET_DETECT
void* pInfo; // ch:输出的信息缓存,由调用者分配 | en:Output information cache, which is allocated by the caller
unsigned int nInfoSize; // ch:信息缓存的大小 | en:Information cache size
}MV_ALL_MATCH_INFO;
// ch:网络流量和丢包信息反馈结构体,对应类型为 MV_MATCH_TYPE_NET_DETECT
// en:Network traffic and packet loss feedback structure, the corresponding type is MV_MATCH_TYPE_NET_DETECT
typedef struct _MV_MATCH_INFO_NET_DETECT_
{
int64_t nReviceDataSize; // ch:已接收数据大小 [统计StartGrabbing和StopGrabbing之间的数据量] | en:Received data size
int64_t nLostPacketCount; // ch:丢失的包数量 | en:Number of packets lost
unsigned int nLostFrameCount; // ch:丢帧数量 | en:Number of frames lost
unsigned int nNetRecvFrameCount; // ch:保留 | en:Reserved
__int64 nRequestResendPacketCount; // 请求重发包数
__int64 nResendPacketCount; // 重发包数
}MV_MATCH_INFO_NET_DETECT;
// ch:host收到从u3v设备端的总字节数对应类型为 MV_MATCH_TYPE_USB_DETECT | en:The total number of bytes host received from the u3v device side, the corresponding type is MV_MATCH_TYPE_USB_DETECT
typedef struct _MV_MATCH_INFO_USB_DETECT_
{
int64_t nReviceDataSize; // ch:已接收数据大小 [统计OpenDevicce和CloseDevice之间的数据量] | en:Received data size
unsigned int nRevicedFrameCount; // ch:已收到的帧数 | en:Number of frames received
unsigned int nErrorFrameCount; // ch:错误帧数 | en:Number of error frames
unsigned int nReserved[2]; // ch:保留 | en:Reserved
}MV_MATCH_INFO_USB_DETECT;
typedef struct _MV_IMAGE_BASIC_INFO_
{
// width
unsigned short nWidthValue;
unsigned short nWidthMin;
unsigned int nWidthMax;
unsigned int nWidthInc;
// height
unsigned int nHeightValue;
unsigned int nHeightMin;
unsigned int nHeightMax;
unsigned int nHeightInc;
// framerate
float fFrameRateValue;
float fFrameRateMin;
float fFrameRateMax;
// ch:像素格式 | en:pixel format
unsigned int enPixelType; // ch:当前的像素格式 | en:Current pixel format
unsigned int nSupportedPixelFmtNum; // ch:支持的像素格式种类 | en:Support pixel format
unsigned int enPixelList[MV_MAX_XML_SYMBOLIC_NUM];
unsigned int nReserved[8];
}MV_IMAGE_BASIC_INFO;
// ch: 异常消息类型 | en:Exception message type
#define MV_EXCEPTION_DEV_DISCONNECT 0x00008001 // ch:设备断开连接 | en:The device is disconnected
#define MV_EXCEPTION_VERSION_CHECK 0x00008002 // ch:SDK与驱动版本不匹配 | en:SDK does not match the driver version
// ch:设备的访问模式 | en:Device Access Mode
// ch:独占权限其他APP只允许读CCP寄存器 | en:Exclusive authority, other APP is only allowed to read the CCP register
#define MV_ACCESS_Exclusive 1
// ch:可以从5模式下抢占权限然后以独占权限打开 | en:You can seize the authority from the 5 mode, and then open with exclusive authority
#define MV_ACCESS_ExclusiveWithSwitch 2
// ch:控制权限其他APP允许读所有寄存器 | en:Control authority, allows other APP reading all registers
#define MV_ACCESS_Control 3
// ch:可以从5的模式下抢占权限然后以控制权限打开 | en:You can seize the authority from the 5 mode, and then open with control authority
#define MV_ACCESS_ControlWithSwitch 4
// ch:以可被抢占的控制权限打开 | en:Open with seized control authority
#define MV_ACCESS_ControlSwitchEnable 5
// ch:可以从5的模式下抢占权限然后以可被抢占的控制权限打开 | en:You can seize the authority from the 5 mode, and then open with seized control authority
#define MV_ACCESS_ControlSwitchEnableWithKey 6
// ch:读模式打开设备,适用于控制权限下 | en:Open with read mode and is available under control authority
#define MV_ACCESS_Monitor 7
/************************************************************************/
/* 封装了GenICam的C接口相关参数定义 */
/* Package of GenICam C interface-related parameters definition */
/************************************************************************/
// ch:每个节点对应的接口类型 | en:Interface type corresponds to each node
enum MV_XML_InterfaceType
{
IFT_IValue, //!> IValue interface
IFT_IBase, //!> IBase interface
IFT_IInteger, //!> IInteger interface
IFT_IBoolean, //!> IBoolean interface
IFT_ICommand, //!> ICommand interface
IFT_IFloat, //!> IFloat interface
IFT_IString, //!> IString interface
IFT_IRegister, //!> IRegister interface
IFT_ICategory, //!> ICategory interface
IFT_IEnumeration, //!> IEnumeration interface
IFT_IEnumEntry, //!> IEnumEntry interface
IFT_IPort, //!> IPort interface
};
// ch:节点的访问模式 | en:Node Access Mode
enum MV_XML_AccessMode
{
AM_NI, //!< Not implemented
AM_NA, //!< Not available
AM_WO, //!< Write Only
AM_RO, //!< Read Only
AM_RW, //!< Read and Write
AM_Undefined, //!< Object is not yet initialized
AM_CycleDetect, //!< used internally for AccessMode cycle detection
};
enum MV_XML_Visibility
{
V_Beginner = 0, //!< Always visible
V_Expert = 1, //!< Visible for experts or Gurus
V_Guru = 2, //!< Visible for Gurus
V_Invisible = 3, //!< Not Visible
V_Undefined = 99 //!< Object is not yet initialized
};
//Event事件回调信息 | en:Event callback infomation
#define MAX_EVENT_NAME_SIZE 128//相机Event事件名称最大长度 | en:Max length of event name
typedef struct _MV_EVENT_OUT_INFO_
{
char EventName[MAX_EVENT_NAME_SIZE]; //Event名称 | en:Event name
unsigned short nEventID; //Event号 | en:Event ID
unsigned short nStreamChannel; //流通道序号 | en:Circulation number
unsigned int nBlockIdHigh; //帧号高位 | en:BlockId high
unsigned int nBlockIdLow; //帧号低位 | en:BlockId low
unsigned int nTimestampHigh; //时间戳高位 | en:Timestramp high
unsigned int nTimestampLow; //时间戳低位 | en:Timestramp low
void * pEventData; //Event数据 | en:Event data
unsigned int nEventDataSize; //Event数据长度 | en:Event data len
unsigned int nReserved[16]; //预留 | en:Reserved
}MV_EVENT_OUT_INFO;
// ch:文件存取 | en:File Access
typedef struct _MV_CC_FILE_ACCESS_T
{
const char * pUserFileName; //用户文件名 | en:User file name
const char * pDevFileName; //设备文件名 | en:Device file name
unsigned int nReserved[32]; //预留 | en:Reserved
}MV_CC_FILE_ACCESS;
// ch:文件存取进度 | en:File Access Progress
typedef struct _MV_CC_FILE_ACCESS_PROGRESS_T
{
int64_t nCompleted; //已完成的长度 | en:Completed Length
int64_t nTotal; //总长度 | en:Total Length
unsigned int nReserved[8]; //预留 | en:Reserved
}MV_CC_FILE_ACCESS_PROGRESS;
// ch:传输模式,可以为单播模式、组播模式等 | en:Transmission type
typedef struct _MV_TRANSMISSION_TYPE_T
{
MV_GIGE_TRANSMISSION_TYPE enTransmissionType; //传输模式 | en:Transmission type
unsigned int nDestIp; //目标IP组播模式下有意义 | en:Destination IP
unsigned short nDestPort; //目标Port组播模式下有意义 | en:Destination port
unsigned int nReserved[32]; //预留 | en:Reserved
}MV_TRANSMISSION_TYPE;
// ch:动作命令信息 | en:Action Command
typedef struct _MV_ACTION_CMD_INFO_T
{
unsigned int nDeviceKey; //设备密钥
unsigned int nGroupKey; //组键
unsigned int nGroupMask; //组掩码
unsigned int bActionTimeEnable; //只有设置成1时Action Time才有效非1时无效
int64_t nActionTime; //预定的时间,和主频有关
const char* pBroadcastAddress; //广播包地址
unsigned int nTimeOut; //等待ACK的超时时间如果为0表示不需要ACK
unsigned int nReserved[16]; //预留 | en:Reserved
}MV_ACTION_CMD_INFO;
// ch:动作命令返回信息 | en:Action Command Result
typedef struct _MV_ACTION_CMD_RESULT_T
{
unsigned char strDeviceAddress[12 + 3 + 1]; //IP address of the device
//status code returned by the device
int nStatus;//1.0x0000:success.
//2.0x8001:Command is not supported by the device.
//3.0x8013:The device is not synchronized to a master clock to be used as time reference.
//4.0x8015:A device queue or packet data has overflowed.
//5.0x8016:The requested scheduled action command was requested at a time that is already past.
unsigned int nReserved[4]; //预留 | en:Reserved
}MV_ACTION_CMD_RESULT;
// ch:动作命令返回信息列表 | en:Action Command Result List
typedef struct _MV_ACTION_CMD_RESULT_LIST_T
{
unsigned int nNumResults; //返回值个数
MV_ACTION_CMD_RESULT* pResults;
}MV_ACTION_CMD_RESULT_LIST;
// ch:单个节点基本属性 | en:Single Node Basic Attributes
typedef struct _MV_XML_NODE_FEATURE_
{
enum MV_XML_InterfaceType enType; // ch:节点类型 | en:Node Type
enum MV_XML_Visibility enVisivility; // ch:是否可见 | en:Is visibility
char strDescription[MV_MAX_XML_DISC_STRLEN_C];// ch:节点描述 目前暂不支持 | en:Node Description, NOT SUPPORT NOW
char strDisplayName[MV_MAX_XML_NODE_STRLEN_C];// ch:显示名称 | en:Display Name
char strName[MV_MAX_XML_NODE_STRLEN_C]; // ch:节点名 | en:Node Name
char strToolTip[MV_MAX_XML_DISC_STRLEN_C]; // ch:提示 | en:Notice
unsigned int nReserved[4];
}MV_XML_NODE_FEATURE;
// ch:节点列表 | en:Node List
typedef struct _MV_XML_NODES_LIST_
{
unsigned int nNodeNum; // ch:节点个数 | en:Node Number
MV_XML_NODE_FEATURE stNodes[MV_MAX_XML_NODE_NUM_C];
}MV_XML_NODES_LIST;
typedef struct _MV_XML_FEATURE_Value_
{
enum MV_XML_InterfaceType enType; // ch:节点类型 | en:Node Type
char strDescription[MV_MAX_XML_DISC_STRLEN_C];// ch:节点描述 目前暂不支持 | en:Node Description, NOT SUPPORT NOW
char strDisplayName[MV_MAX_XML_NODE_STRLEN_C];// ch:显示名称 | en:Display Name
char strName[MV_MAX_XML_NODE_STRLEN_C]; // ch:节点名 | en:Node Name
char strToolTip[MV_MAX_XML_DISC_STRLEN_C]; // ch:提示 | en:Notice
unsigned int nReserved[4];
}MV_XML_FEATURE_Value;
typedef struct _MV_XML_FEATURE_Base_
{
enum MV_XML_AccessMode enAccessMode; // ch:访问模式 | en:Access Mode
}MV_XML_FEATURE_Base;
typedef struct _MV_XML_FEATURE_Integer_
{
char strName[MV_MAX_XML_NODE_STRLEN_C];
char strDisplayName[MV_MAX_XML_NODE_STRLEN_C];
char strDescription[MV_MAX_XML_DISC_STRLEN_C]; // ch:目前暂不支持 | en:NOT SUPPORT NOW
char strToolTip[MV_MAX_XML_DISC_STRLEN_C];
enum MV_XML_Visibility enVisivility; //是否可见 | en:Visible
enum MV_XML_AccessMode enAccessMode; // ch:访问模式 | en:Access Mode
int bIsLocked; // ch:是否锁定。0-否1-是 目前暂不支持 | en:Locked. 0-NO; 1-YES, NOT SUPPORT NOW
int64_t nValue; // ch:当前值 | en:Current Value
int64_t nMinValue; // ch:最小值 | en:Min Value
int64_t nMaxValue; // ch:最大值 | en:Max Value
int64_t nIncrement; // ch:增量 | en:Increment
unsigned int nReserved[4];
}MV_XML_FEATURE_Integer;
typedef struct _MV_XML_FEATURE_Boolean_
{
char strName[MV_MAX_XML_NODE_STRLEN_C];
char strDisplayName[MV_MAX_XML_NODE_STRLEN_C];
char strDescription[MV_MAX_XML_DISC_STRLEN_C]; // ch:目前暂不支持 | en:NOT SUPPORT NOW
char strToolTip[MV_MAX_XML_DISC_STRLEN_C];
enum MV_XML_Visibility enVisivility; // ch:是否可见 | en:Visible
enum MV_XML_AccessMode enAccessMode; // ch:访问模式 | en:Access Mode
int bIsLocked; // ch:是否锁定。0-否1-是 目前暂不支持 | en:Locked. 0-NO; 1-YES, NOT SUPPORT NOW
bool bValue; // ch:当前值 | en:Current Value
unsigned int nReserved[4];
}MV_XML_FEATURE_Boolean;
typedef struct _MV_XML_FEATURE_Command_
{
char strName[MV_MAX_XML_NODE_STRLEN_C];
char strDisplayName[MV_MAX_XML_NODE_STRLEN_C];
char strDescription[MV_MAX_XML_DISC_STRLEN_C]; // ch:目前暂不支持 | en:NOT SUPPORT NOW
char strToolTip[MV_MAX_XML_DISC_STRLEN_C];
enum MV_XML_Visibility enVisivility; // ch:是否可见 | en:Visible
enum MV_XML_AccessMode enAccessMode; // ch:访问模式 | en:Access Mode
int bIsLocked; // ch:是否锁定。0-否1-是 目前暂不支持 | en:Locked. 0-NO; 1-YES, NOT SUPPORT NOW
unsigned int nReserved[4];
}MV_XML_FEATURE_Command;
typedef struct _MV_XML_FEATURE_Float_
{
char strName[MV_MAX_XML_NODE_STRLEN_C];
char strDisplayName[MV_MAX_XML_NODE_STRLEN_C];
char strDescription[MV_MAX_XML_DISC_STRLEN_C]; // ch:目前暂不支持 | en:NOT SUPPORT NOW
char strToolTip[MV_MAX_XML_DISC_STRLEN_C];
enum MV_XML_Visibility enVisivility; //是否可见 | en:Visible
enum MV_XML_AccessMode enAccessMode; // ch:访问模式 | en:Access Mode
int bIsLocked; // ch:是否锁定。0-否1-是 目前暂不支持 | en:Locked. 0-NO; 1-YES, NOT SUPPORT NOW
double dfValue; // ch:当前值 | en:Current Value
double dfMinValue; // ch:最小值 | en:Min Value
double dfMaxValue; // ch:最大值 | en:Max Value
double dfIncrement; // ch:增量 | en:Increment
unsigned int nReserved[4];
}MV_XML_FEATURE_Float;
typedef struct _MV_XML_FEATURE_String_
{
char strName[MV_MAX_XML_NODE_STRLEN_C];
char strDisplayName[MV_MAX_XML_NODE_STRLEN_C];
char strDescription[MV_MAX_XML_DISC_STRLEN_C]; // ch:目前暂不支持 | en:NOT SUPPORT NOW
char strToolTip[MV_MAX_XML_DISC_STRLEN_C];
enum MV_XML_Visibility enVisivility; // ch:是否可见 | en:Visible
enum MV_XML_AccessMode enAccessMode; // ch:访问模式 | en:Access Mode
int bIsLocked; // ch:是否锁定。0-否1-是 目前暂不支持 | en:Locked. 0-NO; 1-YES, NOT SUPPORT NOW
char strValue[MV_MAX_XML_STRVALUE_STRLEN_C];// ch:当前值 | en:Current Value
unsigned int nReserved[4];
}MV_XML_FEATURE_String;
typedef struct _MV_XML_FEATURE_Register_
{
char strName[MV_MAX_XML_NODE_STRLEN_C];
char strDisplayName[MV_MAX_XML_NODE_STRLEN_C];
char strDescription[MV_MAX_XML_DISC_STRLEN_C]; // ch:目前暂不支持 | en:NOT SUPPORT NOW
char strToolTip[MV_MAX_XML_DISC_STRLEN_C];
enum MV_XML_Visibility enVisivility; // ch:是否可见 | en:Visible
enum MV_XML_AccessMode enAccessMode; // ch:访问模式 | en:Access Mode
int bIsLocked; // ch:是否锁定。0-否1-是 目前暂不支持 | en:Locked. 0-NO; 1-YES, NOT SUPPORT NOW
int64_t nAddrValue; // ch:当前值 | en:Current Value
unsigned int nReserved[4];
}MV_XML_FEATURE_Register;
typedef struct _MV_XML_FEATURE_Category_
{
char strDescription[MV_MAX_XML_DISC_STRLEN_C];// ch:节点描述 目前暂不支持 | en:Node Description, NOT SUPPORT NOW
char strDisplayName[MV_MAX_XML_NODE_STRLEN_C];// ch:显示名称 | en:Display Name
char strName[MV_MAX_XML_NODE_STRLEN_C]; // ch:节点名 | en:Node Name
char strToolTip[MV_MAX_XML_DISC_STRLEN_C]; // ch:提示 | en:Notice
enum MV_XML_Visibility enVisivility; // ch:是否可见 | en:Visible
unsigned int nReserved[4];
}MV_XML_FEATURE_Category;
typedef struct _MV_XML_FEATURE_EnumEntry_
{
char strName[MV_MAX_XML_NODE_STRLEN_C];
char strDisplayName[MV_MAX_XML_NODE_STRLEN_C];
char strDescription[MV_MAX_XML_DISC_STRLEN_C]; // ch:目前暂不支持 | en:NOT SUPPORT NOW
char strToolTip[MV_MAX_XML_DISC_STRLEN_C];
int bIsImplemented;
int nParentsNum;
MV_XML_NODE_FEATURE stParentsList[MV_MAX_XML_PARENTS_NUM];
enum MV_XML_Visibility enVisivility; // ch:是否可见 | en:Visible
int64_t nValue; // ch:当前值 | en:Current Value
enum MV_XML_AccessMode enAccessMode; // ch:访问模式 | en:Access Mode
int bIsLocked; // ch:是否锁定。0-否1-是 目前暂不支持 | en:Locked. 0-NO; 1-YES, NOT SUPPORT NOW
int nReserved[8];
}MV_XML_FEATURE_EnumEntry;
typedef struct _MV_XML_FEATURE_Enumeration_
{
enum MV_XML_Visibility enVisivility; // ch:是否可见 | en:Visible
char strDescription[MV_MAX_XML_DISC_STRLEN_C];// ch:节点描述 目前暂不支持 | en:Node Description, NOT SUPPORT NOW
char strDisplayName[MV_MAX_XML_NODE_STRLEN_C];// ch:显示名称 | en:Display Name
char strName[MV_MAX_XML_NODE_STRLEN_C]; // ch:节点名 | en:Node Name
char strToolTip[MV_MAX_XML_DISC_STRLEN_C]; // ch:提示 | en:Notice
int nSymbolicNum; // ch:Symbolic数 | en:Symbolic Number
char strCurrentSymbolic[MV_MAX_XML_SYMBOLIC_STRLEN_C]; // ch:当前Symbolic索引 | en:Current Symbolic Index
char strSymbolic[MV_MAX_XML_SYMBOLIC_NUM][MV_MAX_XML_SYMBOLIC_STRLEN_C];
enum MV_XML_AccessMode enAccessMode; // ch:访问模式 | en:Access Mode
int bIsLocked; // ch:是否锁定。0-否1-是 目前暂不支持 | en:Locked. 0-NO; 1-YES, NOT SUPPORT NOW
int64_t nValue; // ch:当前值 | en:Current Value
unsigned int nReserved[4];
}MV_XML_FEATURE_Enumeration;
typedef struct _MV_XML_FEATURE_Port_
{
enum MV_XML_Visibility enVisivility; // ch:是否可见 | en:Visible
char strDescription[MV_MAX_XML_DISC_STRLEN_C];// ch:节点描述 目前暂不支持 | en:Node Description, NOT SUPPORT NOW
char strDisplayName[MV_MAX_XML_NODE_STRLEN_C];// ch:显示名称 | en:Display Name
char strName[MV_MAX_XML_NODE_STRLEN_C]; // ch:节点名 | en:Node Name
char strToolTip[MV_MAX_XML_DISC_STRLEN_C]; // ch:提示 | en:Notice
enum MV_XML_AccessMode enAccessMode; // ch:访问模式 | en:Access Mode
int bIsLocked; // ch:是否锁定。0-否1-是 目前暂不支持 | en:Locked. 0-NO; 1-YES, NOT SUPPORT NOW
unsigned int nReserved[4];
}MV_XML_FEATURE_Port;
typedef struct _MV_XML_CAMERA_FEATURE_
{
enum MV_XML_InterfaceType enType;
union
{
MV_XML_FEATURE_Integer stIntegerFeature;
MV_XML_FEATURE_Float stFloatFeature;
MV_XML_FEATURE_Enumeration stEnumerationFeature;
MV_XML_FEATURE_String stStringFeature;
}SpecialFeature;
}MV_XML_CAMERA_FEATURE;
typedef struct _MVCC_ENUMVALUE_T
{
unsigned int nCurValue; // ch:当前值 | en:Current Value
unsigned int nSupportedNum; // ch:数据的有效数据个数 | en:Number of valid data
unsigned int nSupportValue[MV_MAX_XML_SYMBOLIC_NUM];
unsigned int nReserved[4];
}MVCC_ENUMVALUE;
typedef struct _MVCC_INTVALUE_T
{
unsigned int nCurValue; // ch:当前值 | en:Current Value
unsigned int nMax;
unsigned int nMin;
unsigned int nInc;
unsigned int nReserved[4];
}MVCC_INTVALUE;
typedef struct _MVCC_INTVALUE_EX_T
{
int64_t nCurValue; // ch:当前值 | en:Current Value
int64_t nMax;
int64_t nMin;
int64_t nInc;
unsigned int nReserved[16];
}MVCC_INTVALUE_EX;
typedef struct _MVCC_FLOATVALUE_T
{
float fCurValue; // ch:当前值 | en:Current Value
float fMax;
float fMin;
unsigned int nReserved[4];
}MVCC_FLOATVALUE;
typedef struct _MVCC_STRINGVALUE_T
{
char chCurValue[256]; // ch:当前值 | en:Current Value
int64_t nMaxLength;
unsigned int nReserved[2];
}MVCC_STRINGVALUE;
#endif /* _MV_CAMERA_PARAMS_H_ */