Yao Chunli
2022-06-21 e00d5a1575d26f8fec1be6fa8a844203cd66a24c
提交 | 用户 | age
4b03ae 1
Q 2 #ifndef _MV_CAMERA_CTRL_H_
3 #define _MV_CAMERA_CTRL_H_
4
5 #include "MvErrorDefine.h"
6 #include "CameraParams.h"
7
8 /**
9 *  @brief  动态库导入导出定义
10 */
11 #ifndef MV_CAMCTRL_API
12
13     #if (defined (_WIN32) || defined(WIN64))
14         #if defined(MV_CAMCTRL_EXPORTS)
15             #define MV_CAMCTRL_API __declspec(dllexport)
16         #else
17             #define MV_CAMCTRL_API __declspec(dllimport)
18         #endif
19     #else
20         #ifndef __stdcall
21             #define __stdcall
22         #endif
23
24         #ifndef MV_CAMCTRL_API
25             #define  MV_CAMCTRL_API
26         #endif
27     #endif
28
29 #endif
30
31 #ifndef IN
32     #define IN
33 #endif
34
35 #ifndef OUT
36     #define OUT
37 #endif
38
39 #ifdef __cplusplus
40 extern "C" {
41 #endif 
42
43 /************************************************************************/
44 /* 相机的基本指令和操作                                         */
45 /************************************************************************/
46 /************************************************************************
47  *  @fn     MV_CC_GetSDKVersion()
48  *  @brief  获取SDK版本号
49  *  @param  
50  *  @return 始终返回4字节版本号 |主    |次    |修正  |  测试|
51                                  8bits  8bits  8bits  8bits 
52  ************************************************************************/
53 MV_CAMCTRL_API unsigned int __stdcall MV_CC_GetSDKVersion();
54
55 /************************************************************************
56  *  @fn     MV_CC_EnumerateTls()
57  *  @brief  获取支持的传输层
58  *  @return 支持的传输层编号 
59  ************************************************************************/
60 MV_CAMCTRL_API int __stdcall MV_CC_EnumerateTls();
61
62 /************************************************************************
63  *  @fn     MV_CC_EnumDevices()
64  *  @brief  枚举设备
65  *  @param  nTLayerType            [IN]           枚举传输层
66  *  @param  pstDevList             [OUT]          设备列表
67  *  @return 成功,返回MV_OK;错误,返回错误码 
68  ************************************************************************/
69 MV_CAMCTRL_API int __stdcall MV_CC_EnumDevices(IN unsigned int nTLayerType, IN OUT MV_CC_DEVICE_INFO_LIST* pstDevList);
70
71 /************************************************************************
72  *  @fn     MV_CC_EnumDevicesEx()
73  *  @brief  根据厂商名字枚举设备
74  *  @param  nTLayerType            [IN]           枚举传输层
75  *  @param  pstDevList             [OUT]          设备列表
76  *  @param  pManufacturerName      [IN]           厂商名字
77  *  @return 成功,返回MV_OK;错误,返回错误码 
78  ************************************************************************/
79 MV_CAMCTRL_API int __stdcall MV_CC_EnumDevicesEx(IN unsigned int nTLayerType, IN OUT MV_CC_DEVICE_INFO_LIST* pstDevList, IN const char* pManufacturerName);
80
81 /************************************************************************
82  *  @fn     MV_CC_IsDeviceAccessible()
83  *  @brief  设备是否可达
84  *  @param  pstDevInfo             [IN]           设备信息结构体
85  *  @param  nAccessMode            [IN]           访问权限
86  *  @return 可达,返回true;不可达,返回false 
87  ************************************************************************/
88 MV_CAMCTRL_API bool __stdcall MV_CC_IsDeviceAccessible(IN MV_CC_DEVICE_INFO* pstDevInfo, IN unsigned int nAccessMode);
89
90 /************************************************************************
91  *  @fn     MV_CC_CreateHandle()
92  *  @brief  创建设备句柄
93  *  @param  handle                 [OUT]          句柄地址
94  *  @param  pstDevInfo             [IN]           设备信息结构体
95  *  @return 成功,返回MV_OK;错误,返回错误码 
96  ************************************************************************/
97 MV_CAMCTRL_API int __stdcall MV_CC_CreateHandle(OUT void ** handle, IN const MV_CC_DEVICE_INFO* pstDevInfo);
98
99 /************************************************************************
100  *  @fn     MV_CC_CreateHandleWithoutLog
101  *  @brief  创建设备句柄,不生成日志
102  *  @param  handle                 [OUT]          句柄地址
103  *  @param  pstDevInfo             [IN]           设备信息结构体
104  *  @return 成功,返回MV_OK;错误,返回错误码 
105  ************************************************************************/
106 MV_CAMCTRL_API int __stdcall MV_CC_CreateHandleWithoutLog(OUT void ** handle, IN const MV_CC_DEVICE_INFO* pstDevInfo);
107
108 /************************************************************************
109  *  @fn     MV_CC_DestroyHandle()
110  *  @brief  销毁设备句柄
111  *  @param  handle                 [IN]          句柄
112  *  @return 成功,返回MV_OK;错误,返回错误码 
113  ************************************************************************/
114 MV_CAMCTRL_API int __stdcall MV_CC_DestroyHandle(IN void * handle);
115
116 /************************************************************************
117  *  @fn     MV_CC_OpenDevice()
118  *  @brief  打开设备
119  *  @param  handle                 [IN]          句柄
120  *  @param  nAccessMode            [IN]          访问权限
121  *  @param  nSwitchoverKey         [IN]          切换访问权限时的密钥
122  *  @return 成功,返回MV_OK;错误,返回错误码 
123  ************************************************************************/
124 #ifdef __APPLE__
125 MV_CAMCTRL_API int __stdcall MV_CC_OpenDevice(IN void* handle, IN unsigned int nAccessMode, IN unsigned short nSwitchoverKey);
126 #else
127
128 MV_CAMCTRL_API int __stdcall MV_CC_OpenDevice(IN void* handle, IN unsigned int nAccessMode = MV_ACCESS_Exclusive, IN unsigned short nSwitchoverKey = 0);
129 #endif
130
131 /***********************************************************************
132  *  @fn         MV_CC_CloseDevice
133  *  @brief      关闭相机
134  *  @param       handle                 [IN]          句柄
135  *  @return 成功,返回MV_OK;错误,返回错误码
136  ***********************************************************************/
137 MV_CAMCTRL_API int __stdcall MV_CC_CloseDevice(IN void* handle);
138
139 /***********************************************************************
140  *  @fn         MV_CC_RegisterImageCallBackEx
141  *  @brief      注册图像数据回调,chunk
142  *  @param       handle                 [IN]          句柄
143  *  @param       cbOutput               [IN]          回调函数指针
144  *  @param       pUser                  [IN]          用户自定义变量
145  *  @return 成功,返回MV_OK;错误,返回错误码
146  ***********************************************************************/
147 MV_CAMCTRL_API int __stdcall MV_CC_RegisterImageCallBackEx(void* handle, 
148                                                          void(__stdcall* cbOutput)(unsigned char * pData, MV_FRAME_OUT_INFO_EX* pFrameInfo, void* pUser),
149                                                          void* pUser);
150
151 /***********************************************************************
152  *  @fn         MV_CC_RegisterImageCallbackForRGB
153  *  @brief      注册图像数据回调,RGB
154  *  @param       handle                 [IN]          句柄
155  *  @param       cbOutput               [IN]          回调函数指针
156  *  @param       pUser                  [IN]          用户自定义变量
157  *  @return 成功,返回MV_OK;错误,返回错误码
158  ***********************************************************************/
159 MV_CAMCTRL_API int __stdcall MV_CC_RegisterImageCallBackForRGB(void* handle, 
160                                                          void(__stdcall* cbOutput)(unsigned char * pData, MV_FRAME_OUT_INFO_EX* pFrameInfo, void* pUser),
161                                                          void* pUser);
162
163 /***********************************************************************
164  *  @fn         MV_CC_RegisterImageCallbackForBGR
165  *  @brief      注册图像数据回调,BGR
166  *  @param       handle                 [IN]          句柄
167  *  @param       cbOutput               [IN]          回调函数指针
168  *  @param       pUser                  [IN]          用户自定义变量
169  *  @return 成功,返回MV_OK;错误,返回错误码
170  ***********************************************************************/
171 MV_CAMCTRL_API int __stdcall MV_CC_RegisterImageCallBackForBGR(void* handle, 
172                                                          void(__stdcall* cbOutput)(unsigned char * pData, MV_FRAME_OUT_INFO_EX* pFrameInfo, void* pUser),
173                                                          void* pUser);
174
175 /***********************************************************************
176  *  @fn         MV_CC_StartGrabbing
177  *  @brief      开始取流
178  *  @param       handle                 [IN]          句柄
179  *  @return 成功,返回MV_OK;错误,返回错误码
180  ***********************************************************************/
181 MV_CAMCTRL_API int __stdcall MV_CC_StartGrabbing(IN void* handle);
182
183 /***********************************************************************
184  *  @fn         MV_CC_StopGrabbing
185  *  @brief      停止取流
186  *  @param       handle                 [IN]          句柄
187  *  @return 成功,返回MV_OK;错误,返回错误码
188  ***********************************************************************/
189 MV_CAMCTRL_API int __stdcall MV_CC_StopGrabbing(IN void* handle);
190
191 /***********************************************************************
192  *  @fn         MV_CC_GetImageForRGB
193  *  @brief      获取一帧RGB数据,此函数为查询式获取,每次调用查询内部
194                 缓存有无数据,有数据则范围数据,无数据返回错误码
195  *  @param       handle                 [IN]          句柄
196  *  @param       pData                  [OUT]         图像数据接收指针
197  *  @param       nDataSize              [IN]          接收缓存大小
198  *  @param       pFrameInfo             [OUT]         图像信息结构体
199  *  @param       nMsec                  [IN]          等待超时时间
200  *  @return 成功,返回MV_OK;错误,返回错误码
201  ***********************************************************************/
202 MV_CAMCTRL_API int __stdcall MV_CC_GetImageForRGB(IN void* handle, IN OUT unsigned char * pData , IN unsigned int nDataSize, IN OUT MV_FRAME_OUT_INFO_EX* pFrameInfo, int nMsec);
203
204 /***********************************************************************
205  *  @fn         MV_CC_GetImageForBGR
206  *  @brief      获取一帧BGR数据,此函数为查询式获取,每次调用查询内部
207                 缓存有无数据,有数据则范围数据,无数据返回错误码
208  *  @param       handle                 [IN]          句柄
209  *  @param       pData                  [OUT]         图像数据接收指针
210  *  @param       nDataSize              [IN]          接收缓存大小
211  *  @param       pFrameInfo             [OUT]         图像信息结构体
212  *  @param       nMsec                  [IN]          等待超时时间
213  *  @return 成功,返回MV_OK;错误,返回错误码
214  ***********************************************************************/
215 MV_CAMCTRL_API int __stdcall MV_CC_GetImageForBGR(IN void* handle, IN OUT unsigned char * pData , IN unsigned int nDataSize, IN OUT MV_FRAME_OUT_INFO_EX* pFrameInfo, int nMsec);
216
217 /***********************************************************************
218  *  @fn         MV_CC_GetOneFrameTimeout
219  *  @brief      采用超时机制获取一帧图片,SDK内部等待直到有数据时返回,
220                 此接口可以增加取流平稳性,适合用于对平稳性要求较高的场合
221  *  @param       handle                 [IN]          句柄
222  *  @param       pData                  [OUT]         图像数据接收指针
223  *  @param       nDataSize              [IN]          接收缓存大小
224  *  @param       pFrameInfo             [OUT]         图像信息结构体
225  *  @param       nMsec                  [IN]          等待超时时间
226  *  @return 成功,返回MV_OK;错误,返回错误码
227  ***********************************************************************/
228 MV_CAMCTRL_API int __stdcall MV_CC_GetOneFrameTimeout(IN void* handle, IN OUT unsigned char * pData , IN unsigned int nDataSize, IN OUT MV_FRAME_OUT_INFO_EX* pFrameInfo, unsigned int nMsec);
229
230 /***********************************************************************
231  *  @fn         MV_CC_Display
232  *  @brief      显示一帧图像,注册显示窗口,内部自动显示
233  *  @param       handle                 [IN]          句柄
234  *  @param       hWnd                   [IN]          显示窗口句柄
235  *  @return 成功,返回MV_OK;错误,返回错误码
236  ***********************************************************************/
237 MV_CAMCTRL_API int __stdcall MV_CC_Display(IN void* handle, void* hWnd);
238
239 /***********************************************************************
240  *  @fn         MV_CC_SetImageNodeNum
241  *  @brief      设置SDK内部图像缓存节点个数,范围[1, 30],在抓图前调用
242  *  @param       handle                 [IN]          句柄
243  *  @param       nNum                   [IN]          缓存节点个数
244  *  @return 成功,返回MV_OK;错误,返回错误码
245  ***********************************************************************/
246 MV_CAMCTRL_API int __stdcall MV_CC_SetImageNodeNum(IN void* handle, unsigned int nNum);
247
248 /************************************************************************
249  *  @fn     MV_CAMCTRL_API int __stdcall MV_CC_GetImageInfo(IN void* handle, IN OUT MV_IMAGE_BASIC_INFO* pstInfo);
250  *  @brief  获取图像基本信息
251  *  @param  void* handle                     [IN]        相机句柄
252  *  @param  MV_IMAGE_BASIC_INFO* pstInfo     [IN][OUT]   返回给调用者有关相机图像基本信息结构体指针
253  *  @return 成功,返回MV_OK,失败,返回错误码
254  *  
255  *          参考 CameraParam.h 中的 MV_IMAGE_BASIC_INFO 定义
256  ************************************************************************/
257 MV_CAMCTRL_API int __stdcall MV_CC_GetImageInfo(IN void* handle, IN OUT MV_IMAGE_BASIC_INFO* pstInfo);
258
259 /************************************************************************
260  *  @fn     MV_CAMCTRL_API int __stdcall MV_CC_GetDeviceInfo(IN void* handle, IN OUT MV_CC_DEVICE_INFO* pstDevInfo);
261  *  @brief  获取设备信息
262  *  @param  void* handle                     [IN]        相机句柄
263  *  @param  MV_CC_DEVICE_INFO* pstDevInfo    [IN][OUT]   返回给调用者有关相机设备信息结构体指针
264  *  @return 成功,返回MV_OK,失败,返回错误码
265  *  
266  *          参考 CameraParam.h 中的 MV_CC_DEVICE_INFO 定义
267  ************************************************************************/
268 MV_CAMCTRL_API int __stdcall MV_CC_GetDeviceInfo(IN void * handle, IN OUT MV_CC_DEVICE_INFO* pstDevInfo);
269
270 /************************************************************************
271  *  @fn     MV_CAMCTRL_API int __stdcall MV_CC_GetAllMatchInfo(IN void* handle, IN OUT MV_ALL_MATCH_INFO* pstInfo);
272  *  @brief  获取各种类型的信息
273  *  @param  void* handle                     [IN]        相机句柄
274  *  @param  MV_ALL_MATCH_INFO* pstInfo       [IN][OUT]   返回给调用者有关相机各种类型的信息结构体指针
275  *  @return 成功,返回MV_OK,失败,返回错误码
276  *  
277  *          参考 CameraParam.h 中的 MV_ALL_MATCH_INFO 定义
278  ************************************************************************/
279 MV_CAMCTRL_API int __stdcall MV_CC_GetAllMatchInfo(IN void* handle, IN OUT MV_ALL_MATCH_INFO* pstInfo);
280
281
282
283
284 /************************************************************************/
285 /* 设置和获取相机参数的万能接口                                 */
286 /************************************************************************/
287 /************************************************************************
288  *  @fn     MV_CAMCTRL_API int __stdcall MV_CC_GetIntValue(IN void* handle,
289                                                            IN const char* strKey,
290                                                            OUT MVCC_INTVALUE *pIntValue);
291  *  @brief  获取Integer属性值
292  *  @param  void* handle                [IN]        相机句柄
293  *  @param  char* strKey                [IN]        属性键值,如获取宽度信息则为"Width"
294  *  @param  MVCC_INTVALUE* pstValue     [IN][OUT]   返回给调用者有关相机属性结构体指针
295  *  @return 成功,返回MV_OK,失败,返回错误码
296  ************************************************************************/
297 MV_CAMCTRL_API int __stdcall MV_CC_GetIntValue(IN void* handle,IN const char* strKey,OUT MVCC_INTVALUE *pIntValue);
298
299 /************************************************************************
300  *  @fn     MV_CAMCTRL_API int __stdcall MV_CC_SetIntValue(IN void* handle,
301                                                            IN const char* strKey,
302                                                            IN unsigned int nValue);
303  *  @brief  设置Integer型属性值
304  *  @param  void* handle                [IN]        相机句柄
305  *  @param  char* strKey                [IN]        属性键值,如获取宽度信息则为"Width"
306  *          const unsigned int nValue   [IN]        想要设置的相机的属性值
307  *  @return 成功,返回MV_OK,失败,返回错误码
308  ************************************************************************/
309 MV_CAMCTRL_API int __stdcall MV_CC_SetIntValue(IN void* handle,IN const char* strKey,IN unsigned int nValue);
310
311 /************************************************************************
312  *  @fn     MV_CAMCTRL_API int __stdcall MV_CC_GetEnumValue(IN void* handle,
313                                                             IN const char* strKey,
314                                                             OUT MVCC_ENUMVALUE *pEnumValue);
315  *  @brief  获取Enum属性值
316  *  @param  void* handle                   [IN]        相机句柄
317  *  @param  char* strKey                   [IN]        属性键值,如获取像素格式信息则为"PixelFormat"
318  *  @param  MVCC_ENUMVALUE* pEnumValue     [IN][OUT]   返回给调用者有关相机属性结构体指针
319  *  @return 成功,返回MV_OK,失败,返回错误码
320  ************************************************************************/
321 MV_CAMCTRL_API int __stdcall MV_CC_GetEnumValue(IN void* handle,IN const char* strKey,OUT MVCC_ENUMVALUE *pEnumValue);
322
323 /************************************************************************
324  *  @fn     MV_CAMCTRL_API int __stdcall MV_CC_SetEnumValue(IN void* handle,
325                                                             IN const char* strKey,
326                                                             IN unsigned int nValue);
327  *  @brief  设置Enum型属性值
328  *  @param  void* handle                [IN]        相机句柄
329  *  @param  char* strKey                [IN]        属性键值,如获取像素格式信息则为"PixelFormat"
330  *          const unsigned int nValue   [IN]        想要设置的相机的属性值
331  *  @return 成功,返回MV_OK,失败,返回错误码
332  ************************************************************************/
333 MV_CAMCTRL_API int __stdcall MV_CC_SetEnumValue(IN void* handle,IN const char* strKey,IN unsigned int nValue);
334
335 /************************************************************************
336  *  @fn     MV_CAMCTRL_API int __stdcall MV_CC_GetFloatValue(IN void* handle,
337                                                              IN const char* strKey,
338                                                              OUT MVCC_FLOATVALUE *pFloatValue);
339  *  @brief  获取Float属性值
340  *  @param  void* handle                     [IN]        相机句柄
341  *  @param  char* strKey                     [IN]        属性键值
342  *  @param  MVCC_FLOATVALUE *pFloatValue     [IN][OUT]   返回给调用者有关相机属性结构体指针
343  *  @return 成功,返回MV_OK,失败,返回错误码
344  ************************************************************************/
345 MV_CAMCTRL_API int __stdcall MV_CC_GetFloatValue(IN void* handle,IN const char* strKey,OUT MVCC_FLOATVALUE *pFloatValue);
346
347 /************************************************************************
348  *  @fn     MV_CAMCTRL_API int __stdcall MV_CC_SetFloatValue(IN void* handle,
349                                                              IN const char* strKey,
350                                                              IN float fValue);
351  *  @brief  设置Enum型属性值
352  *  @param  void* handle                [IN]        相机句柄
353  *  @param  char* strKey                [IN]        属性键值
354  *          float fValue                [IN]        想要设置的相机的属性值
355  *  @return 成功,返回MV_OK,失败,返回错误码
356  ************************************************************************/
357 MV_CAMCTRL_API int __stdcall MV_CC_SetFloatValue(IN void* handle,IN const char* strKey,IN float fValue);
358     
359 /************************************************************************
360  *  @fn     MV_CAMCTRL_API int __stdcall MV_CC_GetBoolValue(IN void* handle,
361                                                             IN const char* strKey,
362                                                             OUT bool *pBoolValue);
363  *  @brief  获取Boolean属性值
364  *  @param  void* handle                     [IN]        相机句柄
365  *  @param  char* strKey                     [IN]        属性键值
366  *  @param  bool *pBoolValue                 [IN][OUT]   返回给调用者有关相机属性值
367  *  @return 成功,返回MV_OK,失败,返回错误码
368  ************************************************************************/
369 MV_CAMCTRL_API int __stdcall MV_CC_GetBoolValue(IN void* handle,IN const char* strKey,OUT bool *pBoolValue);
370
371 /************************************************************************
372  *  @fn     MV_CAMCTRL_API int __stdcall MV_CC_SetBoolValue(IN void* handle,
373                                                             IN const char* strKey,
374                                                             IN bool bValue);
375  *  @brief  设置Boolean型属性值
376  *  @param  void* handle                [IN]        相机句柄
377  *  @param  char* strKey                [IN]        属性键值
378  *          bool bValue                 [IN]        想要设置的相机的属性值
379  *  @return 成功,返回MV_OK,失败,返回错误码
380  ************************************************************************/
381 MV_CAMCTRL_API int __stdcall MV_CC_SetBoolValue(IN void* handle,IN const char* strKey,IN bool bValue);
382
383 /************************************************************************
384  *  @fn     MV_CAMCTRL_API int __stdcall MV_CC_GetStringValue(IN void* handle,
385                                                               IN const char* strKey,
386                                                               OUT MVCC_STRINGVALUE *pStringValue);
387  *  @brief  获取String属性值
388  *  @param  void* handle                       [IN]        相机句柄
389  *  @param  char* strKey                       [IN]        属性键值
390  *  @param  MVCC_STRINGVALUE *pStringValue     [IN][OUT]   返回给调用者有关相机属性结构体指针
391  *  @return 成功,返回MV_OK,失败,返回错误码
392  ************************************************************************/
393 MV_CAMCTRL_API int __stdcall MV_CC_GetStringValue(IN void* handle,IN const char* strKey,OUT MVCC_STRINGVALUE *pStringValue);
394
395 /************************************************************************
396  *  @fn     MV_CAMCTRL_API int __stdcall MV_CC_SetStringValue(IN void* handle,
397                                                               IN const char* strKey,
398                                                               IN const char * sValue);
399  *  @brief  设置String型属性值
400  *  @param  void* handle                  [IN]        相机句柄
401  *  @param  char* strKey                  [IN]        属性键值
402  *          char * sValue                 [IN]        想要设置的相机的属性值
403  *  @return 成功,返回MV_OK,失败,返回错误码
404  ************************************************************************/
405 MV_CAMCTRL_API int __stdcall MV_CC_SetStringValue(IN void* handle,IN const char* strKey,IN const char * sValue);
406
407 /************************************************************************
408  *  @fn     MV_CAMCTRL_API int __stdcall MV_CC_SetCommandValue(IN void* handle,
409                                                                IN const char* strKey);
410  *  @brief  设置Command型属性值
411  *  @param  void* handle                  [IN]        相机句柄
412  *  @param  char* strKey                  [IN]        属性键值
413  *  @return 成功,返回MV_OK,失败,返回错误码
414  ************************************************************************/
415 MV_CAMCTRL_API int __stdcall MV_CC_SetCommandValue(IN void* handle,IN const char* strKey);
416
417
418
419
420 /************************************************************************/
421 /* 相机参数获取和设置,此模块的所有接口,将逐步废弃,建议用上面的万能接口代替   */
422 /************************************************************************/
423 /************************************************************************
424  *  @fn     MV_CAMCTRL_API int __stdcall MV_CC_GetWidth(IN void* handle, IN OUT MVCC_INTVALUE* pstValue);
425  *  @brief  获取图像宽度
426  *  @param  void* handle                [IN]        相机句柄
427  *  @param  MVCC_INTVALUE* pstValue     [IN][OUT]   返回给调用者有关相机宽度的信息结构体指针
428  *          返回的pstValue结构体的意义
429  *                  unsigned int    nCurValue;      // 代表相机当前的宽度值
430  *                  unsigned int    nMax;           // 表示相机允许的最大可设置的宽度值
431  *                  unsigned int    nMin;           // 表示相机允许的最小可设置的宽度值
432  *                  unsigned int    nInc;           // 表示相机设置的宽度增量必须是nInc的倍数,否则无效
433  *  @return 成功,返回MV_OK,并获得相应参数信息的结构体, 失败, 返回错误码
434  *  
435  *          其他整型结构体参数的接口可参照此接口
436  ************************************************************************/
437 MV_CAMCTRL_API int __stdcall MV_CC_GetWidth(IN void* handle, IN OUT MVCC_INTVALUE* pstValue);
438
439 /************************************************************************
440 *  @fn     MV_CAMCTRL_API int __stdcall MV_CC_SetWidth(IN void* handle, IN const unsigned int nValue);
441 *  @brief  设置图像宽度
442 *  @param  void* handle                [IN]        相机句柄
443 *          const unsigned int nValue   [IN]        想要设置的相机宽度的值,注意此宽度值必须是MV_CC_GetWidth接口返回的pstValue中的nInc的倍数才能设置成功
444 *  @return 成功,返回MV_OK,并且相机宽度将会更改为相应值,失败,返回错误码
445 ************************************************************************/
446 MV_CAMCTRL_API int __stdcall MV_CC_SetWidth(IN void* handle, IN const unsigned int nValue);
447
448 /************************************************************************
449  *  @fn     MV_CAMCTRL_API int __stdcall MV_CC_GetHeight(IN void* handle, IN OUT MVCC_INTVALUE* pstValue);
450  *  @brief  获取图像高度
451  *  @param  void* handle                [IN]        相机句柄
452  *  @param  MVCC_INTVALUE* pstValue     [IN][OUT]   返回给调用者有关相机高度的信息结构体指针
453  *  @return 成功,返回MV_OK,并将高度信息返回到结构体中,失败,返回错误码
454  *  
455  *          可参照接口MV_CC_GetWidth
456  ************************************************************************/
457 MV_CAMCTRL_API int __stdcall MV_CC_GetHeight(IN void* handle, IN OUT MVCC_INTVALUE* pstValue);
458
459 /************************************************************************
460  *  @fn     MV_CAMCTRL_API int __stdcall MV_CC_SetHeight(IN void* handle, IN const unsigned int nValue);
461  *  @brief  设置图像高度
462  *  @param  void* handle                [IN]        相机句柄
463  *          const unsigned int nValue   [IN]        想要设置的相机宽度的值,注意此宽度值必须是MV_CC_GetWidth接口返回的pstValue中的nInc的倍数才能设置成功
464  *  @return 成功,返回MV_OK,并且相机高度将会更改为相应值,失败,返回错误码
465  ************************************************************************/
466 MV_CAMCTRL_API int __stdcall MV_CC_SetHeight(IN void* handle, IN const unsigned int nValue);
467
468 /************************************************************************
469  *  @fn     MV_CAMCTRL_API int __stdcall MV_CC_GetAOIoffsetX(IN void* handle, IN OUT MVCC_INTVALUE* pstValue);
470  *  @brief  获取图像X偏移
471  *  @param  void* handle                [IN]        相机句柄
472  *  @param  MVCC_INTVALUE* pstValue     [IN][OUT]   返回给调用者有关相机X偏移的信息结构体指针
473  *  @return 成功,返回MV_OK,失败,返回错误码
474  *  
475  *          可参照接口MV_CC_GetWidth
476  ************************************************************************/
477 MV_CAMCTRL_API int __stdcall MV_CC_GetAOIoffsetX(IN void* handle, IN OUT MVCC_INTVALUE* pstValue);
478
479 /************************************************************************
480  *  @fn     MV_CAMCTRL_API int __stdcall MV_CC_SetAOIoffsetX(IN void* handle, IN const unsigned int nValue);
481  *  @brief  设置图像AOI偏移
482  *  @param  void* handle                [IN]        相机句柄
483  *          const unsigned int nValue   [IN]        想要设置的相机AOI的值
484  *  @return 成功,返回MV_OK,并且相机AOI偏移将会更改为相应值,失败,返回错误码
485  ************************************************************************/
486 MV_CAMCTRL_API int __stdcall MV_CC_SetAOIoffsetX(IN void* handle, IN const unsigned int nValue);
487
488 /************************************************************************
489  *  @fn     MV_CAMCTRL_API int __stdcall MV_CC_GetAOIoffsetY(IN void* handle, IN OUT MVCC_INTVALUE* pstValue);
490  *  @brief  获取图像Y偏移
491  *  @param  void* handle                [IN]        相机句柄
492  *  @param  MVCC_INTVALUE* pstValue     [IN][OUT]   返回给调用者有关相机Y偏移的信息结构体指针
493  *  @return 成功,返回MV_OK,失败,返回错误码
494  *  
495  *          可参照接口MV_CC_GetWidth
496  ************************************************************************/
497 MV_CAMCTRL_API int __stdcall MV_CC_GetAOIoffsetY(IN void* handle, IN OUT MVCC_INTVALUE* pstValue);
498
499 /************************************************************************
500  *  @fn     MV_CAMCTRL_API int __stdcall MV_CC_SetAOIoffsetX(IN void* handle, IN const unsigned int nValue);
501  *  @brief  设置图像AOI偏移
502  *  @param  void* handle                [IN]        相机句柄
503  *          const unsigned int nValue   [IN]        想要设置的相机AOI的值
504  *  @return 成功,返回MV_OK,并且相机AOI偏移将会更改为相应值,失败,返回错误码
505  ************************************************************************/
506 MV_CAMCTRL_API int __stdcall MV_CC_SetAOIoffsetY(IN void* handle, IN const unsigned int nValue);
507
508 /************************************************************************
509  *  @fn     MV_CAMCTRL_API int __stdcall MV_CC_GetAutoExposureTimeLower(IN void* handle, IN OUT MVCC_INTVALUE* pstValue);
510  *  @brief  获取曝光下限
511  *  @param  void* handle                [IN]        相机句柄
512  *  @param  MVCC_INTVALUE* pstValue     [IN][OUT]   返回给调用者有关相机曝光值下限结构体指针
513  *  @return 成功,返回MV_OK,失败,返回错误码
514  *  
515  *          可参照接口MV_CC_GetWidth
516  ************************************************************************/
517 MV_CAMCTRL_API int __stdcall MV_CC_GetAutoExposureTimeLower(IN void* handle, IN OUT MVCC_INTVALUE* pstValue);
518
519 /************************************************************************
520  *  @fn     MV_CAMCTRL_API int __stdcall MV_CC_SetAutoExposureTimeLower(IN void* handle, IN const unsigned int nValue);
521  *  @brief  设置曝光值下限
522  *  @param  void* handle                [IN]        相机句柄
523  *          const unsigned int nValue   [IN]        想要设置的曝光值下限
524  *  @return 成功,返回MV_OK,并且相机曝光下限将会更改为相应值,失败,返回错误码
525  ************************************************************************/
526 MV_CAMCTRL_API int __stdcall MV_CC_SetAutoExposureTimeLower(IN void* handle, IN const unsigned int nValue);
527
528 /************************************************************************
529  *  @fn     MV_CAMCTRL_API int __stdcall MV_CC_GetAutoExposureTimeUpper(IN void* handle, IN OUT MVCC_INTVALUE* pstValue);
530  *  @brief  获取曝光上限
531  *  @param  void* handle                [IN]        相机句柄
532  *  @param  MVCC_INTVALUE* pstValue     [IN][OUT]   返回给调用者有关相机曝光值上限结构体指针
533  *  @return 成功,返回MV_OK,失败,返回错误码
534  *  
535  *          可参照接口MV_CC_GetWidth
536  ************************************************************************/
537 MV_CAMCTRL_API int __stdcall MV_CC_GetAutoExposureTimeUpper(IN void* handle, IN OUT MVCC_INTVALUE* pstValue);
538
539 /************************************************************************
540  *  @fn     MV_CAMCTRL_API int __stdcall MV_CC_SetAutoExposureTimeUpper(IN void* handle, IN const unsigned int nValue);
541  *  @brief  设置曝光值上限
542  *  @param  void* handle                [IN]        相机句柄
543  *          const unsigned int nValue   [IN]        想要设置的曝光值上限
544  *  @return 成功,返回MV_OK,并且相机曝光上限将会更改为相应值,失败,返回错误码
545  ************************************************************************/
546 MV_CAMCTRL_API int __stdcall MV_CC_SetAutoExposureTimeUpper(IN void* handle, IN const unsigned int nValue);
547
548 /************************************************************************
549  *  @fn     MV_CAMCTRL_API int __stdcall MV_CC_GetBrightness(IN void* handle, IN OUT MVCC_INTVALUE* pstValue);
550  *  @brief  获取亮度值
551  *  @param  void* handle                [IN]        相机句柄
552  *  @param  MVCC_INTVALUE* pstValue     [IN][OUT]   返回给调用者有关相机亮度结构体指针
553  *  @return 成功,返回MV_OK,失败,返回错误码
554  *  
555  *          可参照接口MV_CC_GetWidth
556  ************************************************************************/
557 MV_CAMCTRL_API int __stdcall MV_CC_GetBrightness(IN void* handle, IN OUT MVCC_INTVALUE* pstValue);
558
559 /************************************************************************
560  *  @fn     MV_CAMCTRL_API int __stdcall MV_CC_SetBrightness(IN void* handle, IN const unsigned int nValue);
561  *  @brief  设置亮度值
562  *  @param  void* handle                [IN]        相机句柄
563  *          const unsigned int nValue   [IN]        想要设置的亮度值
564  *  @return 成功,返回MV_OK,并且相机亮度将会更改为相应值,失败,返回错误码
565  ************************************************************************/
566 MV_CAMCTRL_API int __stdcall MV_CC_SetBrightness(IN void* handle, IN const unsigned int nValue);
567
568 /************************************************************************
569  *  @fn     MV_CAMCTRL_API int __stdcall MV_CC_GetFrameRate(IN void* handle, IN OUT MVCC_FLOATVALUE* pstValue);
570  *  @brief  获取帧率
571  *  @param  void* handle                [IN]        相机句柄
572  *          MVCC_FLOATVALUE* pstValue   [IN][OUT]   返回给调用者有关相机帧率的信息结构体指针
573  *          返回的pstValue结构体的意义
574  *                                      float           fCurValue;      // 表示相机当前的帧率
575  *                                      float           fMax;           // 表示相机允许设置的最大帧率
576  *                                      float           fMin;           // 表示相机允许设置的最小帧率
577  *  @return 成功,返回MV_OK,并获得相应参数信息的结构体, 失败, 返回错误码
578  *  
579  *          其他浮点型结构体参数的接口可参照此接口
580  ************************************************************************/
581 MV_CAMCTRL_API int __stdcall MV_CC_GetFrameRate(IN void* handle, IN OUT MVCC_FLOATVALUE* pstValue);
582
583 /************************************************************************
584  *  @fn     MV_CAMCTRL_API int __stdcall MV_CC_SetFrameRate(IN void* handle, IN const float fValue);
585  *  @brief  设置帧率
586  *  @param  void* handle                [IN]        相机句柄
587  *          const float fValue          [IN]        想要设置的相机帧率
588  *  @return 成功,返回MV_OK,并且相机帧率将会更改为相应值,失败,返回错误码
589  ************************************************************************/
590 MV_CAMCTRL_API int __stdcall MV_CC_SetFrameRate(IN void* handle, IN const float fValue);
591
592 /************************************************************************
593  *  @fn     MV_CAMCTRL_API int __stdcall MV_CC_GetGain(IN void* handle, IN OUT MVCC_FLOATVALUE* pstValue);
594  *  @brief  获取增益
595  *  @param  void* handle                [IN]        相机句柄
596  *          MVCC_FLOATVALUE* pstValue   [IN][OUT]   返回给调用者有关相机增益的信息结构体指针
597  *          返回的pstValue结构体的意义
598  *                                      float           fCurValue;      // 表示相机当前的帧率
599  *                                      float           fMax;           // 表示相机允许设置的最大帧率
600  *                                      float           fMin;           // 表示相机允许设置的最小帧率
601  *  @return 成功,返回MV_OK,并获得相应参数信息的结构体, 失败, 返回错误码
602  *  
603  *          其他浮点型结构体参数的接口可参照此接口
604  ************************************************************************/
605 MV_CAMCTRL_API int __stdcall MV_CC_GetGain(IN void* handle, IN OUT MVCC_FLOATVALUE* pstValue);
606
607 /************************************************************************
608  *  @fn     MV_CAMCTRL_API int __stdcall MV_CC_SetGain(IN void* handle, IN const float fValue);
609  *  @brief  设置帧率
610  *  @param  void* handle                [IN]        相机句柄
611  *          const float fValue          [IN]        想要设置的相机帧率
612  *  @return 成功,返回MV_OK,并且相机帧率将会更改为相应值,失败,返回错误码
613  ************************************************************************/
614 MV_CAMCTRL_API int __stdcall MV_CC_SetGain(IN void* handle, IN const float fValue);
615
616 /************************************************************************
617  *  @fn     MV_CAMCTRL_API int __stdcall MV_CC_GetExposureTime(IN void* handle, IN OUT MVCC_FLOATVALUE* pstValue);
618  *  @brief  获取曝光时间
619  *  @param  void* handle                [IN]        相机句柄
620  *          MVCC_FLOATVALUE* pstValue   [IN][OUT]   返回给调用者有关相机曝光时间的信息结构体指针
621  *          返回的pstValue结构体的意义
622  *                                      float           fCurValue;      // 表示相机当前的帧率
623  *                                      float           fMax;           // 表示相机允许设置的最大帧率
624  *                                      float           fMin;           // 表示相机允许设置的最小帧率
625  *  @return 成功,返回MV_OK,并获得相应参数信息的结构体, 失败, 返回错误码
626  *  
627  *          其他浮点型结构体参数的接口可参照此接口
628  ************************************************************************/
629 MV_CAMCTRL_API int __stdcall MV_CC_GetExposureTime(IN void* handle, IN OUT MVCC_FLOATVALUE* pstValue);
630
631 /************************************************************************
632  *  @fn     MV_CAMCTRL_API int __stdcall MV_CC_SetExposureTime(IN void* handle, IN const float fValue);
633  *  @brief  设置曝光时间
634  *  @param  void* handle                [IN]        相机句柄
635  *          const float fValue          [IN]        想要设置的相机帧率
636  *  @return 成功,返回MV_OK,并且相机帧率将会更改为相应值,失败,返回错误码
637  ************************************************************************/
638 MV_CAMCTRL_API int __stdcall MV_CC_SetExposureTime(IN void* handle, IN const float fValue);
639
640 /************************************************************************
641  *  @fn     MV_CAMCTRL_API int __stdcall MV_CC_GetPixelFormat(IN void* handle, IN OUT MVCC_ENUMVALUE* pstValue);
642  *  @brief  获取像素格式
643  *  @param  void* handle                [IN]        相机句柄
644  *          MVCC_ENUMVALUE* pstValue    [IN][OUT]   返回给调用者的有关像素格式的信息结构体指针
645  *          返回的pstValue结构体的意义
646  *          unsigned int    nCurValue;                              //  相机当前的像素格式,是枚举类型,比如说PixelType_Gvsp_Mono8, 这里获得的是其整型值,具体数值参照PixelType.h的MvGvspPixelType枚举类型
647  *          unsigned int    nSupportedNum;                          //  相机支持的像素格式的个数
648  *          unsigned int    nSupportValue[MV_MAX_XML_SYMBOLIC_NUM]; //  相机所有支持的像素格式对应的整型值列表,后面要设置像素格式时,参数必须是这个数组中的一种,否则无效
649  *  @return 成功,返回MV_OK,并获得相应参数信息的结构体, 失败, 返回错误码
650  *  
651             其他枚举类型参数接口可参照此接口,有关相应参数的枚举类型对应的整型值请查找PixelType.h 和 CameraParams.h中相应的定义
652  ************************************************************************/
653 MV_CAMCTRL_API int __stdcall MV_CC_GetPixelFormat(IN void* handle, IN OUT MVCC_ENUMVALUE* pstValue);
654
655 /************************************************************************
656  *  @fn     MV_CAMCTRL_API int __stdcall MV_CC_SetPixelFormat(IN void* handle, IN const unsigned int nValue);
657  *  @brief  设置像素格式
658  *  @param  void* handle                [IN]        相机句柄
659  *          const unsigned int nValue   [IN]        要设置的像素格式对应的整型值,调用此接口时可以直接填写枚举值,如MV_CC_SetPixelFormat(m_handle, PixelType_Gvsp_RGB8_Packed);
660  *  @return 成功,返回MV_OK,并且相机像素格式将会更改为相应值,失败,返回错误码
661  *  
662  *          要设置的枚举类型必须是Get接口返回的nSupportValue[MV_MAX_XML_SYMBOLIC_NUM]中的一种,否则会失败
663  ************************************************************************/
664 MV_CAMCTRL_API int __stdcall MV_CC_SetPixelFormat(IN void* handle, IN const unsigned int nValue);
665
666 /************************************************************************
667  *  @fn     MV_CAMCTRL_API int __stdcall MV_CC_GetAcquisitionMode(IN void* handle, IN OUT MVCC_ENUMVALUE* pstValue);
668  *  @brief  获取采集模式
669  *  @param  void* handle                [IN]        相机句柄
670  *          MVCC_ENUMVALUE* pstValue    [IN][OUT]   返回给调用者的有关采集模式的信息结构体指针
671  *  @return 成功,返回MV_OK,并获得相应参数信息的结构体, 失败, 返回错误码
672  *  
673             可参照接口MV_CC_GetPixelFormat,参考 CameraParam.h 中的 MV_CAM_ACQUISITION_MODE 定义
674  ************************************************************************/
675 MV_CAMCTRL_API int __stdcall MV_CC_GetAcquisitionMode(IN void* handle, IN OUT MVCC_ENUMVALUE* pstValue);
676
677 /************************************************************************
678  *  @fn     MV_CAMCTRL_API int __stdcall MV_CC_SetAcquisitionMode(IN void* handle, IN const unsigned int nValue);
679  *  @brief  设置像素格式
680  *  @param  void* handle                [IN]        相机句柄
681  *          const unsigned int nValue   [IN]        要设置的采集模式对应的整型值
682  *  @return 成功,返回MV_OK,并且相机采集模式将会更改为相应值,失败,返回错误码
683  ************************************************************************/
684 MV_CAMCTRL_API int __stdcall MV_CC_SetAcquisitionMode(IN void* handle, IN const unsigned int nValue);
685
686 /************************************************************************
687  *  @fn     MV_CAMCTRL_API int __stdcall MV_CC_GetGainMode(IN void* handle, IN OUT MVCC_ENUMVALUE* pstValue);
688  *  @brief  获取增益模式
689  *  @param  void* handle                [IN]        相机句柄
690  *          MVCC_ENUMVALUE* pstValue    [IN][OUT]   返回给调用者的有关增益模式的信息结构体指针
691  *  @return 成功,返回MV_OK,并获得相应参数信息的结构体, 失败, 返回错误码
692  *  
693             可参照接口MV_CC_GetPixelFormat,参考 CameraParam.h 中的 MV_CAM_GAIN_MODE 定义
694  ************************************************************************/
695 MV_CAMCTRL_API int __stdcall MV_CC_GetGainMode(IN void* handle, IN OUT MVCC_ENUMVALUE* pstValue);
696
697 /************************************************************************
698  *  @fn     MV_CAMCTRL_API int __stdcall MV_CC_SetGainMode(IN void* handle, IN const unsigned int nValue);
699  *  @brief  设置增益模式
700  *  @param  void* handle                [IN]        相机句柄
701  *          const unsigned int nValue   [IN]        要设置的增益模式对应的整型值
702  *  @return 成功,返回MV_OK,并且相机增益模式将会更改为相应值,失败,返回错误码
703  ************************************************************************/
704 MV_CAMCTRL_API int __stdcall MV_CC_SetGainMode(IN void* handle, IN const unsigned int nValue);
705
706 /************************************************************************
707  *  @fn     MV_CAMCTRL_API int __stdcall MV_CC_GetExposureAutoMode(IN void* handle, IN OUT MVCC_ENUMVALUE* pstValue);
708  *  @brief  获取自动曝光模式
709  *  @param  void* handle                [IN]        相机句柄
710  *          MVCC_ENUMVALUE* pstValue    [IN][OUT]   返回给调用者的有关自动曝光模式的信息结构体指针
711  *  @return 成功,返回MV_OK,并获得相应参数信息的结构体, 失败, 返回错误码
712  *  
713             可参照接口MV_CC_GetPixelFormat,参考 CameraParam.h 中的 MV_CAM_EXPOSURE_AUTO_MODE 定义
714  ************************************************************************/
715 MV_CAMCTRL_API int __stdcall MV_CC_GetExposureAutoMode(IN void* handle, IN OUT MVCC_ENUMVALUE* pstValue);
716
717 /************************************************************************
718  *  @fn     MV_CAMCTRL_API int __stdcall MV_CC_SetExposureAutoMode(IN void* handle, IN const unsigned int nValue);
719  *  @brief  设置自动曝光模式
720  *  @param  void* handle                [IN]        相机句柄
721  *          const unsigned int nValue   [IN]        要设置的自动曝光模式对应的整型值
722  *  @return 成功,返回MV_OK,并且相机自动曝光模式将会更改为相应值,失败,返回错误码
723  ************************************************************************/
724 MV_CAMCTRL_API int __stdcall MV_CC_SetExposureAutoMode(IN void* handle, IN const unsigned int nValue);
725
726 /************************************************************************
727  *  @fn     MV_CAMCTRL_API int __stdcall MV_CC_GetTriggerMode(IN void* handle, IN OUT MVCC_ENUMVALUE* pstValue);
728  *  @brief  获取触发模式
729  *  @param  void* handle                [IN]        相机句柄
730  *          MVCC_ENUMVALUE* pstValue    [IN][OUT]   返回给调用者的有关触发模式的信息结构体指针
731  *  @return 成功,返回MV_OK,并获得相应参数信息的结构体, 失败, 返回错误码
732  *  
733             可参照接口MV_CC_GetPixelFormat,参考 CameraParam.h 中的 MV_CAM_TRIGGER_MODE 定义
734  ************************************************************************/
735 MV_CAMCTRL_API int __stdcall MV_CC_GetTriggerMode(IN void* handle, IN OUT MVCC_ENUMVALUE* pstValue);
736
737 /************************************************************************
738  *  @fn     MV_CAMCTRL_API int __stdcall MV_CC_SetTriggerMode(IN void* handle, IN const unsigned int nValue);
739  *  @brief  设置触发模式
740  *  @param  void* handle                [IN]        相机句柄
741  *          const unsigned int nValue   [IN]        要设置的触发模式对应的整型值
742  *  @return 成功,返回MV_OK,并且相机触发模式将会更改为相应值,失败,返回错误码
743  ************************************************************************/
744 MV_CAMCTRL_API int __stdcall MV_CC_SetTriggerMode(IN void* handle, IN const unsigned int nValue);
745
746 /************************************************************************
747  *  @fn     MV_CAMCTRL_API int __stdcall MV_CC_GetTriggerDelay(IN void* handle, IN OUT MVCC_FLOATVALUE* pstValue);
748  *  @brief  获取触发延时
749  *  @param  void* handle                [IN]        相机句柄
750  *          MVCC_FLOATVALUE* pstValue   [IN][OUT]   返回给调用者有关相机触发延时的信息结构体指针
751  *  @return 成功,返回MV_OK,并获得相应参数信息的结构体, 失败, 返回错误码
752  *  
753  *          可参照接口MV_CC_GetFrameRate
754  ************************************************************************/
755 MV_CAMCTRL_API int __stdcall MV_CC_GetTriggerDelay(IN void* handle, IN OUT MVCC_FLOATVALUE* pstValue);
756
757 /************************************************************************
758  *  @fn     MV_CAMCTRL_API int __stdcall MV_CC_SetTriggerDelay(IN void* handle, IN const float fValue);
759  *  @brief  设置触发延时
760  *  @param  void* handle                [IN]        相机句柄
761  *          const float fValue          [IN]        想要设置的相机触发延时
762  *  @return 成功,返回MV_OK,并且相机触发延时将会更改为相应值,失败,返回错误码
763  ************************************************************************/
764 MV_CAMCTRL_API int __stdcall MV_CC_SetTriggerDelay(IN void* handle, IN const float fValue);
765
766 /************************************************************************
767  *  @fn     MV_CAMCTRL_API int __stdcall MV_CC_GetTriggerSource(IN void* handle, IN OUT MVCC_ENUMVALUE* pstValue);
768  *  @brief  获取触发源
769  *  @param  void* handle                [IN]        相机句柄
770  *          MVCC_ENUMVALUE* pstValue    [IN][OUT]   返回给调用者的有关触发源的信息结构体指针
771  *  @return 成功,返回MV_OK,并获得相应参数信息的结构体, 失败, 返回错误码
772  *  
773             可参照接口MV_CC_GetPixelFormat,参考 CameraParam.h 中的 MV_CAM_TRIGGER_SOURCE 定义
774  ************************************************************************/
775 MV_CAMCTRL_API int __stdcall MV_CC_GetTriggerSource(IN void* handle, IN OUT MVCC_ENUMVALUE* pstValue);
776
777 /************************************************************************
778  *  @fn     MV_CAMCTRL_API int __stdcall MV_CC_SetTriggerSource(IN void* handle, IN const unsigned int nValue);
779  *  @brief  设置触发源
780  *  @param  void* handle                [IN]        相机句柄
781  *          const unsigned int nValue   [IN]        要设置的触发源对应的整型值
782  *  @return 成功,返回MV_OK,并且相机触发源将会更改为相应值,失败,返回错误码
783  ************************************************************************/
784 MV_CAMCTRL_API int __stdcall MV_CC_SetTriggerSource(IN void* handle, IN const unsigned int nValue);
785
786 /************************************************************************
787  *  @fn     MV_CAMCTRL_API int __stdcall MV_CC_TriggerSoftwareExecute(IN void* handle);
788  *  @brief  软触发一次(接口仅在已选择的触发源为软件触发时有效)
789  *  @param  void* handle                [IN]        相机句柄
790  *  @return 成功,返回MV_OK, 失败,返回错误码
791  ************************************************************************/
792 MV_CAMCTRL_API int __stdcall MV_CC_TriggerSoftwareExecute(IN void* handle);
793
794 /************************************************************************
795  *  @fn     MV_CAMCTRL_API int __stdcall MV_CC_GetGammaSelector(IN void* handle, IN OUT MVCC_ENUMVALUE* pstValue);
796  *  @brief  获取Gamma类型
797  *  @param  void* handle                [IN]        相机句柄
798  *          MVCC_ENUMVALUE* pstValue    [IN][OUT]   返回给调用者的有关Gamma类型的信息结构体指针
799  *  @return 成功,返回MV_OK,并获得相应参数信息的结构体, 失败, 返回错误码
800  *  
801             可参照接口MV_CC_GetPixelFormat,参考 CameraParam.h 中的 MV_CAM_GAMMA_SELECTOR 定义
802  ************************************************************************/
803 MV_CAMCTRL_API int __stdcall MV_CC_GetGammaSelector(IN void* handle, IN OUT MVCC_ENUMVALUE* pstValue);
804
805 /************************************************************************
806  *  @fn     MV_CAMCTRL_API int __stdcall MV_CC_SetGammaSelector(IN void* handle, IN const unsigned int nValue);
807  *  @brief  设置Gamma类型
808  *  @param  void* handle                [IN]        相机句柄
809  *          const unsigned int nValue   [IN]        要设置的Gamma类型对应的整型值
810  *  @return 成功,返回MV_OK,并且相机Gamma类型将会更改为相应值,失败,返回错误码
811  ************************************************************************/
812 MV_CAMCTRL_API int __stdcall MV_CC_SetGammaSelector(IN void* handle, IN const unsigned int nValue);
813
814 /************************************************************************
815  *  @fn     MV_CAMCTRL_API int __stdcall MV_CC_GetGamma(IN void* handle, IN OUT MVCC_FLOATVALUE* pstValue);
816  *  @brief  获取Gamma值
817  *  @param  void* handle                [IN]        相机句柄
818  *          MVCC_FLOATVALUE* pstValue   [IN][OUT]   返回给调用者有关相机Gamma值的信息结构体指针
819  *  @return 成功,返回MV_OK,并获得相应参数信息的结构体, 失败, 返回错误码
820  *  
821  *          可参照接口MV_CC_GetFrameRate
822  ************************************************************************/
823 MV_CAMCTRL_API int __stdcall MV_CC_GetGamma(IN void* handle, IN OUT MVCC_FLOATVALUE* pstValue);
824
825 /************************************************************************
826  *  @fn     MV_CAMCTRL_API int __stdcall MV_CC_SetGamma(IN void* handle, IN const float fValue);
827  *  @brief  设置Gamma值
828  *  @param  void* handle                [IN]        相机句柄
829  *          const float fValue          [IN]        想要设置的相机Gamma值
830  *  @return 成功,返回MV_OK,并且相机Gamma值将会更改为相应值,失败,返回错误码
831  ************************************************************************/
832 MV_CAMCTRL_API int __stdcall MV_CC_SetGamma(IN void* handle, IN const float fValue);
833
834 /************************************************************************
835  *  @fn     MV_CAMCTRL_API int __stdcall MV_CC_GetSharpness(IN void* handle, IN OUT MVCC_INTVALUE* pstValue);
836  *  @brief  获取锐度
837  *  @param  void* handle                [IN]        相机句柄
838  *  @param  MVCC_INTVALUE* pstValue     [IN][OUT]   返回给调用者有关相机锐度结构体指针
839  *  @return 成功,返回MV_OK,失败,返回错误码
840  *  
841  *          可参照接口MV_CC_GetWidth
842  ************************************************************************/
843 MV_CAMCTRL_API int __stdcall MV_CC_GetSharpness(IN void* handle, IN OUT MVCC_INTVALUE* pstValue);
844
845 /************************************************************************
846  *  @fn     MV_CAMCTRL_API int __stdcall MV_CC_SetSharpness(IN void* handle, IN const unsigned int nValue);
847  *  @brief  设置锐度
848  *  @param  void* handle                [IN]        相机句柄
849  *          const unsigned int nValue   [IN]        想要设置的锐度
850  *  @return 成功,返回MV_OK,并且相机锐度将会更改为相应值,失败,返回错误码
851  ************************************************************************/
852 MV_CAMCTRL_API int __stdcall MV_CC_SetSharpness(IN void* handle, IN const unsigned int nValue);
853
854 /************************************************************************
855  *  @fn     MV_CAMCTRL_API int __stdcall MV_CC_GetHue(IN void* handle, IN OUT MVCC_INTVALUE* pstValue);
856  *  @brief  获取灰度
857  *  @param  void* handle                [IN]        相机句柄
858  *  @param  MVCC_INTVALUE* pstValue     [IN][OUT]   返回给调用者有关相机灰度结构体指针
859  *  @return 成功,返回MV_OK,失败,返回错误码
860  *  
861  *          可参照接口MV_CC_GetWidth
862  ************************************************************************/
863 MV_CAMCTRL_API int __stdcall MV_CC_GetHue(IN void* handle, IN OUT MVCC_INTVALUE* pstValue);
864
865 /************************************************************************
866  *  @fn     MV_CAMCTRL_API int __stdcall MV_CC_SetHue(IN void* handle, IN const unsigned int nValue);
867  *  @brief  设置灰度
868  *  @param  void* handle                [IN]        相机句柄
869  *          const unsigned int nValue   [IN]        想要设置的灰度
870  *  @return 成功,返回MV_OK,并且相机灰度将会更改为相应值,失败,返回错误码
871  ************************************************************************/
872 MV_CAMCTRL_API int __stdcall MV_CC_SetHue(IN void* handle, IN const unsigned int nValue);
873
874 /************************************************************************
875  *  @fn     MV_CAMCTRL_API int __stdcall MV_CC_GetSaturation(IN void* handle, IN OUT MVCC_INTVALUE* pstValue);
876  *  @brief  获取饱和度
877  *  @param  void* handle                [IN]        相机句柄
878  *  @param  MVCC_INTVALUE* pstValue     [IN][OUT]   返回给调用者有关相机饱和度结构体指针
879  *  @return 成功,返回MV_OK,失败,返回错误码
880  *  
881  *          可参照接口MV_CC_GetWidth
882  ************************************************************************/
883 MV_CAMCTRL_API int __stdcall MV_CC_GetSaturation(IN void* handle, IN OUT MVCC_INTVALUE* pstValue);
884
885 /************************************************************************
886  *  @fn     MV_CAMCTRL_API int __stdcall MV_CC_SetSaturation(IN void* handle, IN const unsigned int nValue);
887  *  @brief  设置饱和度
888  *  @param  void* handle                [IN]        相机句柄
889  *          const unsigned int nValue   [IN]        想要设置的饱和度
890  *  @return 成功,返回MV_OK,并且相机饱和度将会更改为相应值,失败,返回错误码
891  ************************************************************************/
892 MV_CAMCTRL_API int __stdcall MV_CC_SetSaturation(IN void* handle, IN const unsigned int nValue);
893
894 /************************************************************************
895  *  @fn     MV_CAMCTRL_API int __stdcall MV_CC_GetBalanceWhiteAuto(IN void* handle, IN OUT MVCC_ENUMVALUE* pstValue);
896  *  @brief  获取自动白平衡
897  *  @param  void* handle                [IN]        相机句柄
898  *          MVCC_ENUMVALUE* pstValue    [IN][OUT]   返回给调用者的有关自动白平衡的信息结构体指针
899  *  @return 成功,返回MV_OK,并获得相应参数信息的结构体, 失败, 返回错误码
900  *  
901             可参照接口MV_CC_GetPixelFormat,参考 CameraParam.h 中的 MV_CAM_BALANCEWHITE_AUTO 定义
902  ************************************************************************/
903 MV_CAMCTRL_API int __stdcall MV_CC_GetBalanceWhiteAuto(IN void* handle, IN OUT MVCC_ENUMVALUE* pstValue);
904
905 /************************************************************************
906  *  @fn     MV_CAMCTRL_API int __stdcall MV_CC_SetBalanceWhiteAuto(IN void* handle, IN const unsigned int nValue);
907  *  @brief  设置自动白平衡
908  *  @param  void* handle                [IN]        相机句柄
909  *          const unsigned int nValue   [IN]        要设置的自动白平衡对应的整型值
910  *  @return 成功,返回MV_OK,并且相机自动白平衡将会更改为相应值,失败,返回错误码
911  ************************************************************************/
912 MV_CAMCTRL_API int __stdcall MV_CC_SetBalanceWhiteAuto(IN void* handle, IN const unsigned int nValue);
913
914 /************************************************************************
915  *  @fn     MV_CAMCTRL_API int __stdcall MV_CC_GetBalanceRatioRed(IN void* handle, IN OUT MVCC_INTVALUE* pstValue);
916  *  @brief  获取白平衡 红
917  *  @param  void* handle                [IN]        相机句柄
918  *  @param  MVCC_INTVALUE* pstValue     [IN][OUT]   返回给调用者有关相机白平衡 红结构体指针
919  *  @return 成功,返回MV_OK,失败,返回错误码
920  *  
921  *          可参照接口MV_CC_GetWidth
922  ************************************************************************/
923 MV_CAMCTRL_API int __stdcall MV_CC_GetBalanceRatioRed(IN void* handle, IN OUT MVCC_INTVALUE* pstValue);
924
925 /************************************************************************
926  *  @fn     MV_CAMCTRL_API int __stdcall MV_CC_SetBalanceRatioRed(IN void* handle, IN const unsigned int nValue);
927  *  @brief  设置白平衡 红
928  *  @param  void* handle                [IN]        相机句柄
929  *          const unsigned int nValue   [IN]        想要设置的白平衡 红
930  *  @return 成功,返回MV_OK,并且相机白平衡 红将会更改为相应值,失败,返回错误码
931  ************************************************************************/
932 MV_CAMCTRL_API int __stdcall MV_CC_SetBalanceRatioRed(IN void* handle, IN const unsigned int nValue);
933
934 /************************************************************************
935  *  @fn     MV_CAMCTRL_API int __stdcall MV_CC_GetBalanceRatioGreen(IN void* handle, IN OUT MVCC_INTVALUE* pstValue);
936  *  @brief  获取白平衡 绿
937  *  @param  void* handle                [IN]        相机句柄
938  *  @param  MVCC_INTVALUE* pstValue     [IN][OUT]   返回给调用者有关相机白平衡 绿结构体指针
939  *  @return 成功,返回MV_OK,失败,返回错误码
940  *  
941  *          可参照接口MV_CC_GetWidth
942  ************************************************************************/
943 MV_CAMCTRL_API int __stdcall MV_CC_GetBalanceRatioGreen(IN void* handle, IN OUT MVCC_INTVALUE* pstValue);
944
945 /************************************************************************
946  *  @fn     MV_CAMCTRL_API int __stdcall MV_CC_SetBalanceRatioGreen(IN void* handle, IN const unsigned int nValue);
947  *  @brief  设置白平衡 绿
948  *  @param  void* handle                [IN]        相机句柄
949  *          const unsigned int nValue   [IN]        想要设置的白平衡 绿
950  *  @return 成功,返回MV_OK,并且相机白平衡 绿将会更改为相应值,失败,返回错误码
951  ************************************************************************/
952 MV_CAMCTRL_API int __stdcall MV_CC_SetBalanceRatioGreen(IN void* handle, IN const unsigned int nValue);
953
954 /************************************************************************
955  *  @fn     MV_CAMCTRL_API int __stdcall MV_CC_GetBalanceRatioBlue(IN void* handle, IN OUT MVCC_INTVALUE* pstValue);
956  *  @brief  获取白平衡 蓝
957  *  @param  void* handle                [IN]        相机句柄
958  *  @param  MVCC_INTVALUE* pstValue     [IN][OUT]   返回给调用者有关相机白平衡 蓝结构体指针
959  *  @return 成功,返回MV_OK,失败,返回错误码
960  *  
961  *          可参照接口MV_CC_GetWidth
962  ************************************************************************/
963 MV_CAMCTRL_API int __stdcall MV_CC_GetBalanceRatioBlue(IN void* handle, IN OUT MVCC_INTVALUE* pstValue);
964
965 /************************************************************************
966  *  @fn     MV_CAMCTRL_API int __stdcall MV_CC_SetBalanceRatioBlue(IN void* handle, IN const unsigned int nValue);
967  *  @brief  设置白平衡 蓝
968  *  @param  void* handle                [IN]        相机句柄
969  *          const unsigned int nValue   [IN]        想要设置的白平衡 蓝
970  *  @return 成功,返回MV_OK,并且相机白平衡 蓝将会更改为相应值,失败,返回错误码
971  ************************************************************************/
972 MV_CAMCTRL_API int __stdcall MV_CC_SetBalanceRatioBlue(IN void* handle, IN const unsigned int nValue);
973
974 /************************************************************************
975  *  @fn     MV_CAMCTRL_API int __stdcall MV_CC_GetFrameSpecInfoAbility(IN void* handle, IN OUT MVCC_INTVALUE* pstValue);
976  *  @brief  获取水印信息内包含的信息类型
977  *  @param  void* handle                [IN]        相机句柄
978  *  @param  MVCC_INTVALUE* pstValue     [IN][OUT]   返回给调用者有关相机水印信息内包含的信息类型结构体指针
979  *  @return 成功,返回MV_OK,失败,返回错误码
980  *  
981  *          可参照接口MV_CC_GetWidth
982  ************************************************************************/
983 MV_CAMCTRL_API int __stdcall MV_CC_GetFrameSpecInfoAbility(IN void* handle, IN OUT MVCC_INTVALUE* pstValue);
984
985 /************************************************************************
986  *  @fn     MV_CAMCTRL_API int __stdcall MV_CC_SetFrameSpecInfoAbility(IN void* handle, IN const unsigned int nValue);
987  *  @brief  设置水印信息内包含的信息类型
988  *  @param  void* handle                [IN]        相机句柄
989  *          const unsigned int nValue   [IN]        想要设置的水印信息内包含的信息类型
990  *  @return 成功,返回MV_OK,并且相机水印信息内包含的信息类型会更改为相应值,失败,返回错误码
991  ************************************************************************/
992 MV_CAMCTRL_API int __stdcall MV_CC_SetFrameSpecInfoAbility(IN void* handle, IN const unsigned int nValue);
993
994 /************************************************************************
995  *  @fn     MV_CAMCTRL_API int __stdcall MV_CC_GetDeviceUserID(IN void* handle, IN OUT MVCC_STRINGVALUE* pstValue);
996  *  @brief  获取设备自定义名字
997  *  @param  void* handle                [IN]        相机句柄
998  *          MVCC_STRINGVALUE* pstValue  [IN OUT]    返回给调用者有关相机名字结构体指针
999  *  @return 成功,返回MV_OK,并且获取到相机的自定义名字,失败,返回错误码
1000  ************************************************************************/
1001 MV_CAMCTRL_API int __stdcall MV_CC_GetDeviceUserID(IN void* handle, IN OUT MVCC_STRINGVALUE* pstValue);
1002
1003 /************************************************************************
1004  *  @fn     MV_CAMCTRL_API int __stdcall MV_CC_SetDeviceUserID(IN void* handle, IN const char* chValue);
1005  *  @brief  设置设备自定义名字
1006  *  @param  void* handle                [IN]        相机句柄
1007  *          IN const char* chValue      [IN]        设备名字
1008  *  @return 成功,返回MV_OK,并且设置设备自定义名字,失败,返回错误码
1009  ************************************************************************/
1010 MV_CAMCTRL_API int __stdcall MV_CC_SetDeviceUserID(IN void* handle, IN const char* chValue);
1011
1012 /************************************************************************
1013  *  @fn     MV_CAMCTRL_API int __stdcall MV_CC_GetBurstFrameCount(IN void* handle, IN OUT MVCC_INTVALUE* pstValue);
1014  *  @brief  获取一次触发的帧数
1015  *  @param  void* handle                [IN]        相机句柄
1016  *  @param  MVCC_INTVALUE* pstValue     [IN][OUT]   返回给调用者有关相机一次触发的帧数结构体指针
1017  *  @return 成功,返回MV_OK,失败,返回错误码
1018  *  
1019  *          可参照接口MV_CC_GetWidth
1020  ************************************************************************/
1021 MV_CAMCTRL_API int __stdcall MV_CC_GetBurstFrameCount(IN void* handle, IN OUT MVCC_INTVALUE* pstValue);
1022
1023 /************************************************************************
1024  *  @fn     MV_CAMCTRL_API int __stdcall MV_CC_SetBurstFrameCount(IN void* handle, IN const unsigned int nValue);
1025  *  @brief  设置一次触发的帧数
1026  *  @param  void* handle                [IN]        相机句柄
1027  *          const unsigned int nValue   [IN]        想要设置的一次触发的帧数
1028  *  @return 成功,返回MV_OK,并且相机一次触发的帧数会更改为相应值,失败,返回错误码
1029  ************************************************************************/
1030 MV_CAMCTRL_API int __stdcall MV_CC_SetBurstFrameCount(IN void* handle, IN const unsigned int nValue);
1031
1032 /************************************************************************
1033  *  @fn     MV_CAMCTRL_API int __stdcall MV_CC_GetAcquisitionLineRate(IN void* handle, IN OUT MVCC_INTVALUE* pstValue);
1034  *  @brief  获取行频
1035  *  @param  void* handle                [IN]        相机句柄
1036  *  @param  MVCC_INTVALUE* pstValue     [IN][OUT]   返回给调用者有关相机行频结构体指针
1037  *  @return 成功,返回MV_OK,失败,返回错误码
1038  *  
1039  *          可参照接口MV_CC_GetWidth
1040  ************************************************************************/
1041 MV_CAMCTRL_API int __stdcall MV_CC_GetAcquisitionLineRate(IN void* handle, IN OUT MVCC_INTVALUE* pstValue);
1042
1043 /************************************************************************
1044  *  @fn     MV_CAMCTRL_API int __stdcall MV_CC_SetAcquisitionLineRate(IN void* handle, IN const unsigned int nValue);
1045  *  @brief  设置行频
1046  *  @param  void* handle                [IN]        相机句柄
1047  *          const unsigned int nValue   [IN]        想要设置的行频
1048  *  @return 成功,返回MV_OK,并且相机行频会更改为相应值,失败,返回错误码
1049  ************************************************************************/
1050 MV_CAMCTRL_API int __stdcall MV_CC_SetAcquisitionLineRate(IN void* handle, IN const unsigned int nValue);
1051
1052 /************************************************************************
1053  *  @fn     MV_CAMCTRL_API int __stdcall MV_CC_GetHeartBeatTimeout(IN void* handle, IN OUT MVCC_INTVALUE* pstValue);
1054  *  @brief  获取心跳信息
1055  *  @param  void* handle                [IN]        相机句柄
1056  *  @param  MVCC_INTVALUE* pstValue     [IN][OUT]   返回给调用者有关相机心跳信息结构体指针
1057  *  @return 成功,返回MV_OK,失败,返回错误码
1058  *  
1059  *          可参照接口MV_CC_GetWidth
1060  ************************************************************************/
1061 MV_CAMCTRL_API int __stdcall MV_CC_GetHeartBeatTimeout(IN void* handle, IN OUT MVCC_INTVALUE* pstValue);
1062
1063 /************************************************************************
1064  *  @fn     MV_CAMCTRL_API int __stdcall MV_CC_SetHeartBeatTimeout(IN void* handle, IN const unsigned int nValue);
1065  *  @brief  设置心跳信息
1066  *  @param  void* handle                [IN]        相机句柄
1067  *          const unsigned int nValue   [IN]        想要设置的心跳信息
1068  *  @return 成功,返回MV_OK,并且相机心跳信息会更改为相应值,失败,返回错误码
1069  ************************************************************************/
1070 MV_CAMCTRL_API int __stdcall MV_CC_SetHeartBeatTimeout(IN void* handle, IN const unsigned int nValue);
1071
1072
1073
1074
1075 /************************************************************************/
1076 /* 设备升级 和 寄存器读写 和异常、事件回调                            */
1077 /************************************************************************/
1078 // 设备本地升级
1079 /************************************************************************
1080  *  @fn     MV_CAMCTRL_API int __stdcall MV_CC_LocalUpgrade(IN void* handle, 
1081                                                             const void *pFilePathName);
1082  *  @brief  设备本地升级
1083  *  @param  void* handle                  [IN]        相机句柄
1084  *  @param  void *pFilePathName           [IN]        文件名
1085  *  @return 成功,返回MV_OK,失败,返回错误码
1086  ************************************************************************/
1087 MV_CAMCTRL_API int __stdcall MV_CC_LocalUpgrade(IN void* handle, const void *pFilePathName);
1088
1089 /************************************************************************
1090  *  @fn     MV_CAMCTRL_API int __stdcall MV_CC_GetUpgradeProcess(IN void* handle,
1091                                                                  unsigned int* pnProcess);
1092  *  @brief  获取升级进度
1093  *  @param  void* handle                  [IN]        相机句柄
1094  *  @param  unsigned int* pnProcess       [OUT]       进度接收地址
1095  *  @return 成功,返回MV_OK,失败,返回错误码
1096  ************************************************************************/
1097 MV_CAMCTRL_API int __stdcall MV_CC_GetUpgradeProcess(IN void* handle, unsigned int* pnProcess);
1098
1099 /************************************************************************
1100  *  @fn     MV_CAMCTRL_API int __stdcall MV_CC_GetOptimalPacketSize(IN void* handle);
1101  *  @brief  获取最佳的packet size,对应GigEVision设备是 SCPS,对应U3V设备是每次从驱动读取的包大小
1102  *  @param  void* handle                  [IN]        相机句柄
1103  *  @return 最佳packetsize
1104  ************************************************************************/
1105 MV_CAMCTRL_API int __stdcall MV_CC_GetOptimalPacketSize(IN void* handle);
1106
1107 /************************************************************************
1108  *  @fn     MV_CC_ReadMemory
1109  *  @brief  读内存
1110  *  @param  handle:设备句柄
1111  *  @param  pBuffer:作为返回值使用,保存读到的内存值(内存值是按照大端模式存储的)
1112  *  @param  nAddress:待读取的内存地址,该地址可以从设备的Camera.xml文件中获取,形如xxx_RegAddr的xml节点值
1113                   (设备的Camera.xml文件会在设备打开之后自动生成在应用程序的当前目录中)
1114  *  @param  nLength:待读取的内存长度
1115  *  @return 见返回错误码
1116 *************************************************************************/
1117 MV_CAMCTRL_API int __stdcall MV_CC_ReadMemory(IN void* handle , void *pBuffer, int64_t nAddress, int64_t nLength);
1118
1119 /************************************************************************
1120  *  @fn     MV_CC_WriteMemory
1121  *  @brief  写内存
1122  *  @param  handle:设备句柄
1123  *  @param  pBuffer:待写入的内存值(注意内存值要按照大端模式存储)
1124  *  @param  nAddress:待写入的内存地址,该地址可以从设备的Camera.xml文件中获取,形如xxx_RegAddr的xml节点值
1125                   (设备的Camera.xml文件会在设备打开之后自动生成在应用程序的当前目录中)
1126  *  @param  nLength:待写入的内存长度
1127  *  @return 见返回错误码
1128 ************************************************************************/
1129 MV_CAMCTRL_API int __stdcall MV_CC_WriteMemory(IN void* handle , const void *pBuffer, int64_t nAddress, int64_t nLength);
1130
1131 // 注册异常消息回调,在打开设备之后调用
1132 /************************************************************************
1133  *  @fn     MV_CC_RegisterExceptionCallBack
1134  *  @brief  注册异常消息回调,在打开设备之后调用
1135  *  @param  handle:设备句柄
1136  *  @param  cbException       [IN]      异常回调函数指针
1137  *  @param  pUser             [IN]      用户自定义变量
1138  *  @return 见返回错误码
1139 ************************************************************************/
1140 MV_CAMCTRL_API int __stdcall MV_CC_RegisterExceptionCallBack(IN void* handle, 
1141                                                              void(__stdcall* cbException)(unsigned int nMsgType, void* pUser),
1142                                                              void* pUser);
1143
1144 /************************************************************************
1145  *  @fn     MV_CC_RegisterEventCallBack
1146  *  @brief  注册事件回调,在打开设备之后调用,只支持GIGE
1147  *  @param  handle:设备句柄
1148  *  @param  cbEvent           [IN]      异常回调函数指针
1149  *  @param  pUser             [IN]      用户自定义变量
1150  *  @return 见返回错误码
1151 ************************************************************************/
1152 MV_CAMCTRL_API int __stdcall MV_CC_RegisterEventCallBack(void* handle, 
1153                                                          void(__stdcall* cbEvent)(unsigned int nExternalEventId, void* pUser),
1154                                                          void* pUser);
1155
1156
1157
1158
1159 /************************************************************************/
1160 /* GigEVision 设备独有的接口                                     */
1161 /************************************************************************/
1162 /************************************************************************
1163  *  @fn     MV_GIGE_ForceIpEx
1164  *  @brief  强制IP
1165  *  @param  handle:设备句柄
1166  *  @param  nIP               [IN]      设置的IP
1167  *  @param  nSubNetMask       [IN]      子网掩码
1168  *  @param  nDefaultGateWay   [IN]      默认网关
1169  *  @return 见返回错误码
1170 ************************************************************************/
1171 MV_CAMCTRL_API int __stdcall MV_GIGE_ForceIpEx(IN void* handle, unsigned int nIP, unsigned int nSubNetMask, unsigned int nDefaultGateWay);
1172
1173 /************************************************************************
1174  *  @fn     MV_GIGE_SetIpConfig
1175  *  @brief  配置IP方式
1176  *  @param  handle:设备句柄
1177  *  @param  nType               [IN]      IP类型,见MV_IP_CFG_x
1178  *  @return 见返回错误码
1179 ************************************************************************/
1180 MV_CAMCTRL_API int __stdcall MV_GIGE_SetIpConfig(IN void* handle, unsigned int nType);
1181
1182 /************************************************************************
1183  *  @fn     MV_GIGE_SetNetTransMode
1184  *  @brief  设置仅使用某种模式,type: MV_NET_TRANS_x,不设置时,默认优先使用driver
1185  *  @param  handle:设备句柄
1186  *  @param  nType               [IN]      网络传输模式,见MV_NET_TRANS_x
1187  *  @return 见返回错误码
1188 ************************************************************************/
1189 MV_CAMCTRL_API int __stdcall MV_GIGE_SetNetTransMode(IN void* handle, unsigned int nType);
1190
1191 /************************************************************************
1192  *  @fn     MV_GIGE_GetNetTransInfo
1193  *  @brief  获取网络传输信息
1194  *  @param  handle:设备句柄
1195  *  @param  pstInfo             [OUT]      信息结构体
1196  *  @return 见返回错误码
1197 ************************************************************************/
1198 MV_CAMCTRL_API int __stdcall MV_GIGE_GetNetTransInfo(IN void* handle, MV_NETTRANS_INFO* pstInfo);
1199
1200 /************************************************************************
1201  *  @fn     MV_GIGE_SetGvcpTimeout
1202  *  @brief  设置GVCP命令超时时间
1203  *  @param  handle                 [IN]           句柄地址
1204  *  @param  nMillisec              [IN]           超时时间,以毫秒位单位,范围:0-10000
1205  *  @return 成功,返回MV_OK;错误,返回错误码 
1206  ************************************************************************/
1207 MV_CAMCTRL_API int __stdcall MV_GIGE_SetGvcpTimeout(void* handle, unsigned int nMillisec);
1208
1209 /************************************************************************
1210  *  @fn     MV_GIGE_SetResend
1211  *  @brief  设置是否打开重发包支持,及重发包设置
1212  *  @param  handle                 [IN]           句柄地址
1213  *  @param  bEnable                [IN]           是否支持重发包
1214  *  @param  nMaxResendPercent      [IN]           最大重发比
1215  *  @param  nResendTimeout         [IN]           重发超时时间
1216  *  @return 成功,返回MV_OK;错误,返回错误码 
1217  ************************************************************************/
1218 MV_CAMCTRL_API int __stdcall MV_GIGE_SetResend(void* handle, unsigned int bEnable, unsigned int nMaxResendPercent = 10, unsigned int nResendTimeout = 50);
1219
1220 /************************************************************************
1221  *  @fn     MV_CAMCTRL_API int __stdcall MV_GIGE_GetGevSCPSPacketSize(IN void* handle, IN OUT MVCC_INTVALUE* pstValue);
1222  *  @brief  获取网络包大小
1223  *  @param  void* handle                [IN]        相机句柄
1224  *  @param  MVCC_INTVALUE* pstValue     [IN][OUT]   返回给调用者有关相机网络包大小结构体指针
1225  *  @return 成功,返回MV_OK,失败,返回错误码
1226  *  
1227  *          可参照接口MV_CC_GetWidth
1228  ************************************************************************/
1229 MV_CAMCTRL_API int __stdcall MV_GIGE_GetGevSCPSPacketSize(IN void* handle, IN OUT MVCC_INTVALUE* pstValue);
1230
1231 /************************************************************************
1232  *  @fn     MV_CAMCTRL_API int __stdcall MV_GIGE_SetGevSCPSPacketSize(IN void* handle, IN const unsigned int nValue);
1233  *  @brief  设置网络包大小
1234  *  @param  void* handle                [IN]        相机句柄
1235  *          const unsigned int nValue   [IN]        想要设置的网络包大小
1236  *  @return 成功,返回MV_OK,并且相机网络包大小会更改为相应值,失败,返回错误码
1237  ************************************************************************/
1238 MV_CAMCTRL_API int __stdcall MV_GIGE_SetGevSCPSPacketSize(IN void* handle, IN const unsigned int nValue);
1239
1240 /************************************************************************
1241  *  @fn     MV_CAMCTRL_API int __stdcall MV_GIGE_GetGevSCPD(IN void* handle, IN OUT MVCC_INTVALUE* pstValue);
1242  *  @brief  获取网络包发送间隔
1243  *  @param  void* handle                [IN]        相机句柄
1244  *  @param  MVCC_INTVALUE* pstValue     [IN][OUT]   返回给调用者有关相机网络包发送间隔结构体指针
1245  *  @return 成功,返回MV_OK,失败,返回错误码
1246  *  
1247  *          可参照接口MV_CC_GetWidth
1248  ************************************************************************/
1249 MV_CAMCTRL_API int __stdcall MV_GIGE_GetGevSCPD(IN void* handle, IN OUT MVCC_INTVALUE* pstValue);
1250
1251 /************************************************************************
1252  *  @fn     MV_CAMCTRL_API int __stdcall MV_GIGE_SetGevSCPD(IN void* handle, IN const unsigned int nValue);
1253  *  @brief  设置网络包发送间隔
1254  *  @param  void* handle                [IN]        相机句柄
1255  *          const unsigned int nValue   [IN]        想要设置的网络包发送间隔
1256  *  @return 成功,返回MV_OK,并且相机网络包发送间隔会更改为相应值,失败,返回错误码
1257  ************************************************************************/
1258 MV_CAMCTRL_API int __stdcall MV_GIGE_SetGevSCPD(IN void* handle, IN const unsigned int nValue);
1259
1260 /************************************************************************
1261  *  @fn     MV_CAMCTRL_API int __stdcall MV_GIGE_GetGevSCDA(IN void* handle, unsigned int* pnIP);
1262  *  @brief  获取接收端IP地址,0xa9fe0102 表示 169.254.1.2
1263  *  @param  void* handle                [IN]        相机句柄
1264  *  @param  unsigned int* pnIP          [IN][OUT]   返回给调用者接收端IP地址
1265  *  @return 成功,返回MV_OK,失败,返回错误码
1266  ************************************************************************/
1267 MV_CAMCTRL_API int __stdcall MV_GIGE_GetGevSCDA(IN void* handle, unsigned int* pnIP);
1268
1269 /************************************************************************
1270  *  @fn     MV_CAMCTRL_API int __stdcall MV_GIGE_SetGevSCDA(IN void* handle, unsigned int nIP);
1271  *  @brief  设置接收端IP地址
1272  *  @param  void* handle                [IN]        相机句柄
1273  *          unsigned int nIP            [IN]        想要设置的接收端IP地址
1274  *  @return 成功,返回MV_OK,并且相机接收端IP地址会更改为相应值,失败,返回错误码
1275  ************************************************************************/
1276 MV_CAMCTRL_API int __stdcall MV_GIGE_SetGevSCDA(IN void* handle, unsigned int nIP);
1277
1278 /************************************************************************
1279  *  @fn     MV_CAMCTRL_API int __stdcall MV_GIGE_GetGevSCSP(IN void* handle, unsigned int* pnPort);
1280  *  @brief  获取发送端的端口号
1281  *  @param  void* handle                [IN]        相机句柄
1282  *  @param  unsigned int* pnPort        [IN][OUT]   返回给调用者发送端的端口号
1283  *  @return 成功,返回MV_OK,失败,返回错误码
1284  ************************************************************************/
1285 MV_CAMCTRL_API int __stdcall MV_GIGE_GetGevSCSP(IN void* handle, unsigned int* pnPort);
1286
1287 /************************************************************************
1288  *  @fn     MV_CAMCTRL_API int __stdcall MV_GIGE_SetGevSCSP(IN void* handle, unsigned int nPort);
1289  *  @brief  设置发送端的端口号
1290  *  @param  void* handle                [IN]        相机句柄
1291  *          unsigned int nPort          [IN]        想要设置的发送端的端口号
1292  *  @return 成功,返回MV_OK,并且相机发送端的端口号会更改为相应值,失败,返回错误码
1293  ************************************************************************/
1294 MV_CAMCTRL_API int __stdcall MV_GIGE_SetGevSCSP(IN void* handle, unsigned int nPort);
1295
1296
1297
1298
1299 /************************************************************************/
1300 /* XML解析树的生成                                                         */
1301 /************************************************************************/
1302 /***********************************************************************
1303  *  @fn         MV_XML_GetGenICamXML
1304  *  @brief      获取相机属性树XML
1305  *  @param       handle                 [IN]          句柄
1306  *  @param       pData                  [OUT]         图像数据接收指针
1307  *  @param       nDataSize              [IN]          接收缓存大小
1308  *  @param       pnDataLen              [OUT]         实际数据大小
1309  *  @return 成功,返回MV_OK;错误,返回错误码
1310  ***********************************************************************/
1311 MV_CAMCTRL_API int __stdcall MV_XML_GetGenICamXML(IN void* handle, IN OUT unsigned char* pData, IN unsigned int nDataSize, OUT unsigned int* pnDataLen);
1312
1313 /***********************************************************************
1314  *  @fn         MV_XML_GetRootNode
1315  *  @brief      获取根节点
1316  *  @param       handle                 [IN]          句柄
1317  *  @param       pstNode                [OUT]         根节点信息结构体
1318  *  @return 成功,返回MV_OK;错误,返回错误码
1319  ***********************************************************************/
1320 MV_CAMCTRL_API int __stdcall MV_XML_GetRootNode(IN void* handle, IN OUT MV_XML_NODE_FEATURE* pstNode);
1321
1322 /***********************************************************************
1323  *  @fn         MV_XML_GetChildren
1324  *  @brief      从xml中获取指定节点的所有子节点,根节点为Root
1325  *  @param       handle                 [IN]          句柄
1326  *  @param       pstNode                [IN]          根节点信息结构体
1327  *  @param       pstNodesList           [OUT]         节点列表结构体
1328  *  @return 成功,返回MV_OK;错误,返回错误码
1329  ***********************************************************************/
1330 MV_CAMCTRL_API int __stdcall MV_XML_GetChildren(IN void* handle, IN MV_XML_NODE_FEATURE* pstNode, IN OUT MV_XML_NODES_LIST* pstNodesList);
1331
1332 /***********************************************************************
1333  *  @fn         MV_XML_GetNodeFeature
1334  *  @brief      获得当前节点的属性
1335  *  @param       handle                 [IN]          句柄
1336  *  @param       pstNode                [IN]          根节点信息结构体
1337  *  @param       pstFeature             [OUT]         当前节点属性结构体,
1338                            pstFeature 具体结构体内容参考 MV_XML_FEATURE_x
1339  *  @return 成功,返回MV_OK;错误,返回错误码
1340  ***********************************************************************/
1341 MV_CAMCTRL_API int __stdcall MV_XML_GetNodeFeature(IN void* handle, IN MV_XML_NODE_FEATURE* pstNode, IN OUT void* pstFeature);
1342
1343 /***********************************************************************
1344  *  @fn         MV_XML_UpdateNodeFeature
1345  *  @brief      更新节点
1346  *  @param       handle                 [IN]          句柄
1347  *  @param       enType                 [IN]          节点类型
1348  *  @param       pstFeature             [OUT]         当前节点属性结构体
1349  *  @return 成功,返回MV_OK;错误,返回错误码
1350  ***********************************************************************/
1351 MV_CAMCTRL_API int __stdcall MV_XML_UpdateNodeFeature(IN void* handle, IN enum MV_XML_InterfaceType enType, IN void* pstFeature);
1352
1353 // 有节点需要更新时的回调函数
1354 // 当调用MV_XML_UpdateNodeFeature接口更新节点属性时,注册的回调函数cbUpdate会在pstNodesList中返回与之相关联的节点
1355 /***********************************************************************
1356  *  @fn         MV_XML_RegisterUpdateCallBack
1357  *  @brief      注册更新回调
1358  *  @param       handle                 [IN]          句柄
1359  *  @param       cbUpdate               [IN]          回调函数指针
1360  *  @param       pUser                  [IN]          用户自定义变量
1361  *  @return 成功,返回MV_OK;错误,返回错误码
1362  ***********************************************************************/
1363 MV_CAMCTRL_API int __stdcall MV_XML_RegisterUpdateCallBack(IN void* handle, 
1364                                                            IN void(__stdcall* cbUpdate)(enum MV_XML_InterfaceType enType, void* pstFeature, MV_XML_NODES_LIST* pstNodesList, void* pUser),
1365                                                            IN void* pUser);
1366
1367
1368
1369
1370 /************************************************************************/
1371 /* 附加接口                                   */
1372 /************************************************************************/
1373 /************************************************************************
1374  *  @fn     MV_CC_SaveImageEx
1375  *  @brief  保存图片,支持Bmp和Jpeg.编码质量在50-99之前
1376  *  @param  pSaveParam             [IN][OUT]          保存图片参数结构体
1377                        pData;              // [IN]     输入数据缓存
1378                        nDataLen;           // [IN]     输入数据大小
1379                        enPixelType;        // [IN]     输入数据的像素格式
1380                        nWidth;             // [IN]     图像宽
1381                        nHeight;            // [IN]     图像高
1382                        pImageBuffer;       // [OUT]    输出图片缓存
1383                        nImageLen;          // [OUT]    输出图片大小
1384                        nBufferSize;        // [IN]     提供的输出缓冲区大小
1385                        enImageType;        // [IN]     输出图片格式
1386                        nJpgQuality;        // [IN]     编码质量, (50-99]
1387                        nReserved[4];
1388  *  @return 成功,返回MV_OK;错误,返回错误码 
1389  ************************************************************************/
1390 MV_CAMCTRL_API int __stdcall MV_CC_SaveImageEx(IN OUT MV_SAVE_IMAGE_PARAM_EX* pSaveParam);
1391
1392 /************************************************************************
1393  *  @fn     MV_CC_ConvertPixelType
1394  *  @brief  像素格式转换
1395  *  @param  pstCvtParam             [IN][OUT]          保存图片参数结构体
1396                      unsigned short         nWidth;             // [IN]     图像宽
1397                      unsigned short         nHeight;            // [IN]     图像高
1398                      enum MvGvspPixelType   enSrcPixelType;     // [IN]     源像素格式
1399                      unsigned char*         pSrcData;           // [IN]     输入数据缓存
1400                      unsigned int           nSrcDataLen;        // [IN]     输入数据大小
1401                      enum MvGvspPixelType   enDstPixelType;     // [IN]     目标像素格式
1402                      unsigned char*         pDstBuffer;         // [OUT]    输出数据缓存
1403                      unsigned int           nDstLen;            // [OUT]    输出数据大小
1404                      unsigned int           nDstBufferSize;     // [IN]     提供的输出缓冲区大小
1405  *  @return 成功,返回MV_OK;错误,返回错误码 
1406  ************************************************************************/
1407 MV_CAMCTRL_API int __stdcall MV_CC_ConvertPixelType(IN void* handle, IN OUT MV_CC_PIXEL_CONVERT_PARAM* pstCvtParam);
1408
1409 /************************************************************************
1410  *  @fn     MV_CC_SetBayerCvtQuality
1411  *  @brief  插值算法类型设置
1412  *  @param  BayerCvtQuality             [IN]          Bayer的插值方法  0-最近邻 1-双线性 2-Hamilton
1413  *  @return 成功,返回MV_OK;错误,返回错误码 
1414  ************************************************************************/
1415 MV_CAMCTRL_API int __stdcall MV_CC_SetBayerCvtQuality(IN void* handle, IN unsigned int BayerCvtQuality);
1416
1417 /************************************************************************
1418  *  @fn     MV_CC_GetTlProxy
1419  *  @brief  获取GenICam代理
1420  *  @param  handle                 [IN]           句柄地址
1421  *  @return GenICam代理类指针 ,正常返回值非NULL;异常返回NULL
1422  ************************************************************************/
1423 MV_CAMCTRL_API void* __stdcall MV_CC_GetTlProxy(IN void* handle);
1424
1425
1426
1427
1428 /************************************************************************/
1429 /* 相机暂不支持的接口                                 */
1430 /************************************************************************/
1431 /************************************************************************
1432  *  @fn     MV_CC_FeatureSave
1433  *  @brief  保存相机属性
1434  *  @param  handle                [IN]           句柄地址
1435  *  @param  pFileName             [IN]          属性文件名
1436  *  @return 成功,返回MV_OK;错误,返回错误码 
1437  ************************************************************************/
1438 MV_CAMCTRL_API int __stdcall MV_CC_FeatureSave(IN void* handle, IN const char* pFileName);
1439
1440 /************************************************************************
1441  *  @fn     MV_CC_FeatureLoad
1442  *  @brief  导入相机属性
1443  *  @param  handle                [IN]           句柄地址
1444  *  @param  pFileName             [IN]          属性文件名
1445  *  @return 成功,返回MV_OK;错误,返回错误码 
1446  ************************************************************************/
1447 MV_CAMCTRL_API int __stdcall MV_CC_FeatureLoad(IN void* handle, IN const char* pFileName);
1448
1449
1450 /************************************************************************
1451  *  @fn     MV_CC_UserSetParamSave
1452  *  @brief  保存指定的用户参数组参数
1453  *  @param  handle                [IN]           句柄地址
1454  *  @param  pFileName             [IN]           要保存的文件名
1455  *  @param  nUsetSetId             [IN]          用户组号:1,2,3
1456  *  @return 成功,返回MV_OK;错误,返回错误码 
1457  ************************************************************************/
1458 MV_CAMCTRL_API int __stdcall MV_CC_UserSetParamSave(IN void* handle, IN const char* pFileName,unsigned int nUsetSetId);
1459
1460 /************************************************************************
1461  *  @fn     MV_CC_UserSetParamLoad
1462  *  @brief  加载指定的用户组参数
1463  *  @param  handle                [IN]           句柄地址
1464  *  @param  pFileName             [IN]          要加载的文件名
1465  *  @param  nUsetSetId            [IN]          用户组号:1,2,3
1466  *  @return 成功,返回MV_OK;错误,返回错误码 
1467  ************************************************************************/
1468 MV_CAMCTRL_API int __stdcall MV_CC_UserSetParamLoad(IN void* handle, IN const char* pFileName,unsigned int nUsetSetId);
1469
1470
1471
1472 /************************************************************************/
1473 /* 弃用的接口                                 */
1474 /************************************************************************/
1475 /***********************************************************************
1476  *  @fn         MV_CC_GetOneFrame
1477  *  @brief      获取一帧图像,此函数为查询式获取,每次调用查询内部缓存有
1478                 无数据,有数据则范围数据,无数据返回错误码
1479                 (该接口已弃用,建议改用 MV_CC_GetOneFrameTimeOut接口)
1480  *  @param       handle                 [IN]          句柄
1481  *  @param       pData                  [OUT]         图像数据接收指针
1482  *  @param       nDataSize              [IN]          接收缓存大小
1483  *  @param       pFrameInfo             [OUT]         图像信息结构体
1484  *  @return 成功,返回MV_OK;错误,返回错误码
1485  ***********************************************************************/
1486 MV_CAMCTRL_API int __stdcall MV_CC_GetOneFrame(IN void* handle, IN OUT unsigned char * pData , IN unsigned int nDataSize, IN OUT MV_FRAME_OUT_INFO* pFrameInfo);
1487
1488 /***********************************************************************
1489  *  @fn         MV_CC_GetOneFrameEx
1490  *  @brief      获取一帧trunck数据,此函数为查询式获取,每次调用查询内部
1491                 缓存有无数据,有数据则范围数据,无数据返回错误码
1492                 (该接口已弃用,建议改用 MV_CC_GetOneFrameTimeOut接口)
1493  *  @param       handle                 [IN]          句柄
1494  *  @param       pData                  [OUT]         图像数据接收指针
1495  *  @param       nDataSize              [IN]          接收缓存大小
1496  *  @param       pFrameInfo             [OUT]         图像信息结构体
1497  *  @return 成功,返回MV_OK;错误,返回错误码
1498  ***********************************************************************/
1499 MV_CAMCTRL_API int __stdcall MV_CC_GetOneFrameEx(IN void* handle, IN OUT unsigned char * pData , IN unsigned int nDataSize, IN OUT MV_FRAME_OUT_INFO_EX* pFrameInfo);
1500
1501 /***********************************************************************
1502  *  @fn         MV_CC_RegisterImageCallBack
1503  *  @brief      注册图像数据回调(该接口已弃用,建议改用 MV_CC_RegisterImageCallBackEx接口)
1504  *  @param       handle                 [IN]          句柄
1505  *  @param       cbOutput               [IN]          回调函数指针
1506  *  @param       pUser                  [IN]          用户自定义变量
1507  *  @return 成功,返回MV_OK;错误,返回错误码
1508  ***********************************************************************/
1509 MV_CAMCTRL_API int __stdcall MV_CC_RegisterImageCallBack(void* handle, 
1510                                                          void(__stdcall* cbOutput)(unsigned char * pData, MV_FRAME_OUT_INFO* pFrameInfo, void* pUser),
1511                                                          void* pUser);
1512
1513 /************************************************************************
1514  *  @fn     MV_CC_SaveImage
1515  *  @brief  保存图片(该接口已弃用,建议改用 MV_CC_SaveImageEx接口)
1516  *  @param  pSaveParam             [IN][OUT]          保存图片参数结构体
1517                        pData;              // [IN]     输入数据缓存
1518                        nDataLen;           // [IN]     输入数据大小
1519                        enPixelType;        // [IN]     输入数据的像素格式
1520                        nWidth;             // [IN]     图像宽
1521                        nHeight;            // [IN]     图像高
1522                        pImageBuffer;       // [OUT]    输出图片缓存
1523                        nImageLen;          // [OUT]    输出图片大小
1524                        nBufferSize;        // [IN]     提供的输出缓冲区大小
1525                        enImageType;        // [IN]     输出图片格式
1526  *  @return 成功,返回MV_OK;错误,返回错误码 
1527  ************************************************************************/
1528 MV_CAMCTRL_API int __stdcall MV_CC_SaveImage(IN OUT MV_SAVE_IMAGE_PARAM* pSaveParam);
1529
1530 /************************************************************************
1531  *  @fn     MV_GIGE_ForceIp
1532  *  @brief  强制IP(该接口已弃用,建议改用 MV_GIGE_ForceIpEx接口)
1533  *  @param  handle:设备句柄
1534  *  @param  nIP               [IN]      设置的IP
1535  *  @return 见返回错误码
1536 ************************************************************************/
1537 MV_CAMCTRL_API int __stdcall MV_GIGE_ForceIp(IN void* handle, unsigned int nIP);
1538
1539
1540 #ifdef __cplusplus
1541 }
1542 #endif 
1543
1544 #endif //_MV_CAMERA_CTRL_H_