From 0ecd4a0ec8c4c5585cbd8975d7786c5618814381 Mon Sep 17 00:00:00 2001
From: Junjie <DELL@qq.com>
Date: 星期三, 03 十二月 2025 08:28:59 +0800
Subject: [PATCH] #

---
 MvImport/PixelType_header.py                   |  291 ++
 MvImport/MvErrorDefine_const.py                |   73 
 MvImport/MvCameraControl_class.py              | 3221 +++++++++++++++++++++++++++++
 camera_manager.py                              |  368 +++
 .idea/hik-video.iml                            |    8 
 camera_api.py                                  |  323 ++
 .idea/.gitignore                               |    8 
 MvImport/MvISPErrorDefine_const.py             |   94 
 MvImport/CameraParams_header.py                | 1700 +++++++++++++++
 MvImport/CameraParams_const.py                 |   96 
 README.md                                      |  211 +
 .idea/vcs.xml                                  |    6 
 requirements.txt                               |    5 
 .idea/modules.xml                              |    8 
 MvImport/MvCameraControl.dll                   |    0 
 MvImport/__init__.py                           |   25 
 .idea/inspectionProfiles/profiles_settings.xml |    6 
 17 files changed, 6,442 insertions(+), 1 deletions(-)

diff --git a/.idea/.gitignore b/.idea/.gitignore
new file mode 100644
index 0000000..13566b8
--- /dev/null
+++ b/.idea/.gitignore
@@ -0,0 +1,8 @@
+# Default ignored files
+/shelf/
+/workspace.xml
+# Editor-based HTTP Client requests
+/httpRequests/
+# Datasource local storage ignored files
+/dataSources/
+/dataSources.local.xml
diff --git a/.idea/hik-video.iml b/.idea/hik-video.iml
new file mode 100644
index 0000000..d0876a7
--- /dev/null
+++ b/.idea/hik-video.iml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<module type="PYTHON_MODULE" version="4">
+  <component name="NewModuleRootManager">
+    <content url="file://$MODULE_DIR$" />
+    <orderEntry type="inheritedJdk" />
+    <orderEntry type="sourceFolder" forTests="false" />
+  </component>
+</module>
\ No newline at end of file
diff --git a/.idea/inspectionProfiles/profiles_settings.xml b/.idea/inspectionProfiles/profiles_settings.xml
new file mode 100644
index 0000000..105ce2d
--- /dev/null
+++ b/.idea/inspectionProfiles/profiles_settings.xml
@@ -0,0 +1,6 @@
+<component name="InspectionProjectProfileManager">
+  <settings>
+    <option name="USE_PROJECT_PROFILE" value="false" />
+    <version value="1.0" />
+  </settings>
+</component>
\ No newline at end of file
diff --git a/.idea/modules.xml b/.idea/modules.xml
new file mode 100644
index 0000000..c7ec4e8
--- /dev/null
+++ b/.idea/modules.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="ProjectModuleManager">
+    <modules>
+      <module fileurl="file://$PROJECT_DIR$/.idea/hik-video.iml" filepath="$PROJECT_DIR$/.idea/hik-video.iml" />
+    </modules>
+  </component>
+</project>
\ No newline at end of file
diff --git a/.idea/vcs.xml b/.idea/vcs.xml
new file mode 100644
index 0000000..35eb1dd
--- /dev/null
+++ b/.idea/vcs.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="VcsDirectoryMappings">
+    <mapping directory="" vcs="Git" />
+  </component>
+</project>
\ No newline at end of file
diff --git a/MvImport/CameraParams_const.py b/MvImport/CameraParams_const.py
new file mode 100644
index 0000000..f63294e
--- /dev/null
+++ b/MvImport/CameraParams_const.py
@@ -0,0 +1,96 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+
+## @~chinese 璁惧绫诲瀷瀹氫箟    @~english Device Type Definition
+MV_UNKNOW_DEVICE                             = 0x00000000  ## @~chinese 鏈煡璁惧绫诲瀷锛屼繚鐣欐剰涔�       @~english Unknown Device Type, Reserved
+MV_GIGE_DEVICE                               = 0x00000001  ## @~chinese GigE璁惧                     @~english GigE Device
+MV_1394_DEVICE                               = 0x00000002  ## @~chinese 1394-a/b 璁惧                @~english 1394-a/b Device
+MV_USB_DEVICE                                = 0x00000004  ## @~chinese USB 璁惧                     @~english USB Device
+MV_CAMERALINK_DEVICE                         = 0x00000008  ## @~chinese CameraLink璁惧               @~english CameraLink Device
+MV_VIR_GIGE_DEVICE                           = 0x00000010  ## @~chinese 铏氭嫙GigE璁惧               @~english Virtual GigE Device
+MV_VIR_USB_DEVICE                            = 0x00000020  ## @~chinese 铏氭嫙USB璁惧                @~english Virtual USB Device
+MV_GENTL_GIGE_DEVICE                         = 0x00000040  ## @~chinese 鑷爺缃戝崱涓婫igE璁惧          @~english GenTL GigE Device
+MV_GENTL_CAMERALINK_DEVICE                   = 0x00000080  ## @~chinese CameraLink璁惧            @~english GenTL CameraLink Device
+MV_GENTL_CXP_DEVICE                          = 0x00000100  ## @~chinese CoaXPress璁惧             @~english GenTL CoaXPress Device
+MV_GENTL_XOF_DEVICE                          = 0x00000200  ## @~chinese XoF璁惧                   @~english GenTL XoF Device
+MV_GENTL_VIR_DEVICE                          = 0x00000800  ## @~chinese 铏氭嫙閲囬泦鍗′笅鐨勮澶囷紝涓嶆敮鎸佽櫄鎷烥EV閲囬泦鍗′笅鐨勮澶�                   @~english GenTL Virtual Device,not supports GenTL virtual GigE device
+
+## @~chinese 閲囬泦鍗$被鍨�         @~english Interface type
+MV_GIGE_INTERFACE                    = 0x00000001          ## @~chinese GigE Vision閲囬泦鍗�        @~english GigE Vision interface
+MV_CAMERALINK_INTERFACE              = 0x00000004          ## @~chinese Camera Link閲囬泦鍗�        @~english Camera Link interface
+MV_CXP_INTERFACE                     = 0x00000008          ## @~chinese CoaXPress閲囬泦鍗�          @~english CoaXPress interface
+MV_XOF_INTERFACE                     = 0x00000010          ## @~chinese XoFLink閲囬泦鍗�            @~english XoFLink interface
+MV_VIR_INTERFACE                     = 0x00000020          ## @~chinese 铏氭嫙閲囬泦鍗�            @~english Virtual interface
+MV_LC_INTERFACE                      = 0x00000040          ## @~chinese 鍏夋簮鎺у埗鍗�            @~english Light Controller interface
+
+
+
+INFO_MAX_BUFFER_SIZE                         = 64          ## @~chinese 鏈�澶х殑鏁版嵁淇℃伅澶у皬           @~english Maximum data information size
+
+MV_MAX_TLS_NUM                               = 8           ## @~chinese 鏈�澶氭敮鎸佺殑浼犺緭灞傚疄渚嬩釜鏁�     @~english The maximum number of supported transport layer instances
+MV_MAX_DEVICE_NUM                            = 256         ## @~chinese 鏈�澶ф敮鎸佺殑璁惧涓暟           @~english The maximum number of supported devices
+
+MV_MAX_INTERFACE_NUM                         = 64          #< \~chinese 鏈�澶ф敮鎸佺殑閲囬泦鍗℃暟閲�  @~english The maximum number of Frame Grabber interface supported
+
+MV_MAX_SERIAL_PORT_NUM                       = 64          ## @~chinese 鏈�澶ф敮鎸佺殑涓插彛鏁伴噺  @~english The maximum number of serial port supported
+
+MV_MAX_GENTL_IF_NUM                          = 256         ## @~chinese 鏈�澶ф敮鎸佺殑GenTL鏁伴噺          @~english The maximum number of GenTL supported
+MV_MAX_GENTL_DEV_NUM                         = 256         ## @~chinese 鏈�澶ф敮鎸佺殑GenTL璁惧鏁伴噺      @~english The maximum number of GenTL devices supported
+
+## @~chinese 璁惧鐨勮闂ā寮�    @~english Device Access Mode
+## @~chinese 鐙崰鏉冮檺锛屽叾浠朅PP鍙厑璁歌CCP瀵勫瓨鍣�                        @~english Exclusive authority, other APP is only allowed to read the CCP register
+MV_ACCESS_Exclusive                          = 1
+## @~chinese 鍙互浠�5妯″紡涓嬫姠鍗犳潈闄愶紝鐒跺悗浠ョ嫭鍗犳潈闄愭墦寮�                 @~english You can seize the authority from the 5 mode, and then open with exclusive authority
+MV_ACCESS_ExclusiveWithSwitch                = 2
+## @~chinese 鎺у埗鏉冮檺锛屽叾浠朅PP鍏佽璇绘墍鏈夊瘎瀛樺櫒                         @~english Control authority, allows other APP reading all registers
+MV_ACCESS_Control                            = 3
+## @~chinese 鍙互浠�5鐨勬ā寮忎笅鎶㈠崰鏉冮檺锛岀劧鍚庝互鎺у埗鏉冮檺鎵撳紑               @~english You can seize the authority from the 5 mode, and then open with control authority
+MV_ACCESS_ControlWithSwitch                  = 4
+## @~chinese 浠ュ彲琚姠鍗犵殑鎺у埗鏉冮檺鎵撳紑                                  @~english Open with seized control authority
+MV_ACCESS_ControlSwitchEnable                = 5
+## @~chinese 鍙互浠�5鐨勬ā寮忎笅鎶㈠崰鏉冮檺锛岀劧鍚庝互鍙鎶㈠崰鐨勬帶鍒舵潈闄愭墦寮�     @~english You can seize the authority from the 5 mode, and then open with seized control authority
+MV_ACCESS_ControlSwitchEnableWithKey         = 6
+## @~chinese 璇绘ā寮忔墦寮�璁惧锛岄�傜敤浜庢帶鍒舵潈闄愪笅                          @~english Open with read mode and is available under control authority
+MV_ACCESS_Monitor                            = 7
+
+## @~chinese 淇℃伅绫诲瀷                  @~english Information Type
+MV_MATCH_TYPE_NET_DETECT                     = 0x00000001  ## @~chinese 缃戠粶娴侀噺鍜屼涪鍖呬俊鎭�              @~english Network traffic and packet loss information
+MV_MATCH_TYPE_USB_DETECT                     = 0x00000002  ## @~chinese host鎺ユ敹鍒版潵鑷猆3V璁惧鐨勫瓧鑺傛�绘暟 @~english The total number of bytes host received from U3V device
+
+## @~chinese GigEVision IP閰嶇疆    @~english GigEVision IP Configuration
+MV_IP_CFG_STATIC                             = 0x05000000  ## @~chinese 闈欐��         @~english Static
+MV_IP_CFG_DHCP                               = 0x06000000  ## @~chinese DHCP         @~english DHCP
+MV_IP_CFG_LLA                                = 0x04000000  ## @~chinese LLA          @~english LLA
+
+## @~chinese GigEVision缃戠粶浼犺緭妯″紡    @~english GigEVision Net Transfer Mode
+MV_NET_TRANS_DRIVER                          = 0x00000001  ## @~chinese 椹卞姩         @~english Driver
+MV_NET_TRANS_SOCKET                          = 0x00000002  ## @~chinese Socket       @~english Socket
+
+## @~chinese CameraLink娉㈢壒鐜�    @~english CameraLink Baud Rates (CLUINT32)
+MV_CAML_BAUDRATE_9600                        = 0x00000001  ## @~chinese 9600         @~english 9600
+MV_CAML_BAUDRATE_19200                       = 0x00000002  ## @~chinese 19200        @~english 19200
+MV_CAML_BAUDRATE_38400                       = 0x00000004  ## @~chinese 38400        @~english 38400
+MV_CAML_BAUDRATE_57600                       = 0x00000008  ## @~chinese 57600        @~english 57600
+MV_CAML_BAUDRATE_115200                      = 0x00000010  ## @~chinese 115200       @~english 115200
+MV_CAML_BAUDRATE_230400                      = 0x00000020  ## @~chinese 230400       @~english 230400
+MV_CAML_BAUDRATE_460800                      = 0x00000040  ## @~chinese 460800       @~english 460800
+MV_CAML_BAUDRATE_921600                      = 0x00000080  ## @~chinese 921600       @~english 921600
+MV_CAML_BAUDRATE_AUTOMAX                     = 0x40000000  ## @~chinese 鏈�澶у��       @~english Auto Max
+
+## @~chinese 寮傚父娑堟伅绫诲瀷    @~english Exception message type
+MV_EXCEPTION_DEV_DISCONNECT                  = 0x00008001  ## @~chinese 璁惧鏂紑杩炴帴              @~english The device is disconnected
+MV_EXCEPTION_VERSION_CHECK                   = 0x00008002  ## @~chinese SDK涓庨┍鍔ㄧ増鏈笉鍖归厤       @~english SDK does not match the driver version
+
+
+MAX_EVENT_NAME_SIZE                          = 128         ## @~chinese 璁惧Event浜嬩欢鍚嶇О鏈�澶ч暱搴� @~english Max length of event name
+MV_MAX_NODE_NUM                              = 1024        ## @~chinese 鏈�澶ц妭鐐逛釜鏁�              @~english Max Number of Nodes
+MV_MAX_NODE_NAME_LEN                         = 64          ## @~chinese 鑺傜偣鍚嶇О鐨勬渶澶ч暱搴�        @~english Max Length of a Node Name
+MV_MAX_NODE_ERROR_NUM                        = 64          ## @~chinese 鏈�澶ч敊璇釜鏁�              @~english Max Number of Error
+
+
+MV_MAX_XML_SYMBOLIC_NUM                      = 64          ## @~chinese 鏈�澶ML绗﹀彿鏁�                @~english Max XML Symbolic Number
+MV_MAX_ENUM_SYMBOLIC_NUM                     = 256         ## @~chinese 鏈�澶ф灇涓炬潯鐩搴旂殑绗﹀彿鏁伴噺   @~english Max Enum Entry Symbolic Number 
+MV_MAX_SYMBOLIC_LEN                          = 64          ## @~chinese 鏈�澶ф灇涓炬潯鐩搴旂殑绗﹀彿闀垮害     @~english Max Enum Entry Symbolic Number
+
+MV_MAX_SPLIT_NUM                             = 8           ## @~chinese 鍒嗘椂鏇濆厜鏃舵渶澶氬皢婧愬浘鍍忔媶鍒嗙殑涓暟 @~english The maximum number of source image to be split in time-division exposure
+
diff --git a/MvImport/CameraParams_header.py b/MvImport/CameraParams_header.py
new file mode 100644
index 0000000..1caf207
--- /dev/null
+++ b/MvImport/CameraParams_header.py
@@ -0,0 +1,1700 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+
+import platform
+
+from ctypes import *
+from CameraParams_const import *
+from PixelType_header import *
+
+from CameraParams_const import *
+from PixelType_header import *
+
+STRING = c_char_p
+
+## @~chinese 璁惧鎺掑簭鏂瑰紡                     @~english The Method of Sorting
+SortMethod_SerialNumber = 0                      ## @~chinese 鎸夊簭鍒楀彿鎺掑簭                     @~english Sorting by SerialNumber
+SortMethod_UserID = 1                            ## @~chinese 鎸夌敤鎴疯嚜瀹氫箟鍚嶅瓧鎺掑簭             @~english Sorting by UserID
+SortMethod_CurrentIP_ASC = 2                     ## @~chinese 鎸夊綋鍓岻P鍦板潃鎺掑簭锛堝崌搴忥級         @~english Sorting by current IP锛圓scending锛�
+SortMethod_CurrentIP_DESC = 3                    ## @~chinese 鎸夊綋鍓岻P鍦板潃鎺掑簭锛堥檷搴忥級         @~english Sorting by current IP锛圖escending锛�
+
+
+## @~chinese 鍙栨祦绛栫暐                     @~english The strategy of Grabbing
+MV_GrabStrategy_OneByOne = 0                     ## @~chinese 浠庢棫鍒版柊涓�甯т竴甯х殑鑾峰彇鍥惧儚        @~english Frame by frame from old to new
+MV_GrabStrategy_LatestImagesOnly = 1             ## @~chinese 鑾峰彇鍒楄〃涓渶鏂扮殑涓�甯у浘鍍忥紙鍚屾椂娓呴櫎鍒楄〃涓殑鍏朵綑鍥惧儚锛�         @~english Gets the most recent image in the list (while clearing the rest of the images in the list)
+MV_GrabStrategy_LatestImages = 2                 ## @~chinese 鑾峰彇鍒楄〃涓渶鏂扮殑鍥惧儚               @~english Gets the latest image in the list
+MV_GrabStrategy_UpcomingImage = 3                ## @~chinese 绛夊緟涓嬩竴甯у浘鍍�                     @~english Wait for the next image
+
+
+## @~chinese 淇濆瓨鐨�3D鏁版嵁鏍煎紡          @~english The saved format for 3D data
+MV_PointCloudFile_Undefined = 0                  ## @~chinese 鏈畾涔夌殑鐐逛簯鏍煎紡                  @~english Undefined point cloud format
+MV_PointCloudFile_PLY = 1                        ## @~chinese PLY鐐逛簯鏍煎紡                       @~english The point cloud format named PLY
+MV_PointCloudFile_CSV = 2                        ## @~chinese CSV鐐逛簯鏍煎紡                       @~english The point cloud format named CSV
+MV_PointCloudFile_OBJ = 3                        ## @~chinese OBJ鐐逛簯鏍煎紡                       @~english The point cloud format named OBJ
+
+## @~chinese 淇濆瓨鍥剧墖鏍煎紡              @~english Save image type
+MV_Image_Undefined = 0                           ## @~chinese 鏈畾涔夌殑鍥惧儚绫诲瀷                  @~english Image undefined
+MV_Image_Bmp = 1                                 ## @~chinese Bmp鏍煎紡                           @~english Bmp image file
+MV_Image_Jpeg = 2                                ## @~chinese Jpeg鏍煎紡                          @~english Jpeg image file
+MV_Image_Png = 3                                 ## @~chinese Png鏍煎紡                           @~english Png image file
+MV_Image_Tif = 4                                 ## @~chinese Tif鏍煎紡                           @~english Tif image file
+
+
+## @~chinese  鏃嬭浆瑙掑害                  @~english Rotation angle
+MV_IMAGE_ROTATE_90 = 1                           ## @~chinese 鏃嬭浆90搴�          @~english Rotate 90 degrees
+MV_IMAGE_ROTATE_180 = 2                          ## @~chinese 鏃嬭浆180搴�         @~english Rotate 180 degrees
+MV_IMAGE_ROTATE_270 = 3                          ## @~chinese 鏃嬭浆270搴�         @~english Rotate 270 degrees
+
+## @~chinese  缈昏浆绫诲瀷                  @~english Flip type
+MV_FLIP_VERTICAL = 1                             ## @~chinese 鍨傜洿缈昏浆          @~english flip vertical
+MV_FLIP_HORIZONTAL = 2                           ## @~chinese 姘村钩缈昏浆          @~english flip horizontal
+
+## @~chinese  Gamma绫诲瀷                 @~english Gamma type
+MV_CC_GAMMA_TYPE_NONE = 0                        ## @~chinese 涓嶅惎鐢�                       @~english Disable
+MV_CC_GAMMA_TYPE_VALUE = 1                       ## @~chinese Gamma鍊�                      @~english Gamma value
+MV_CC_GAMMA_TYPE_USER_CURVE = 2                  ## @~chinese Gamma鏇茬嚎                    @~english Gamma curve
+MV_CC_GAMMA_TYPE_LRGB2SRGB = 3                   ## @~chinese linear RGB to sRGB           @~english linear RGB to sRGB
+MV_CC_GAMMA_TYPE_SRGB2LRGB = 4                   ## @~chinese sRGB to linear RGB(浠呰壊褰╂彃鍊兼椂鏀寔锛岃壊褰╂牎姝f椂鏃犳晥) @~english sRGB to linear RGB
+
+## @~chinese   褰曞儚鏍煎紡瀹氫箟              @~english Record Format Type
+MV_FormatType_Undefined = 0                      ## @~chinese 鏈畾涔夌殑鏍煎紡绫诲瀷                  @~english Undefined format type
+MV_FormatType_AVI = 1                            ## @~chinese AVI瑙嗛鏍煎紡                       @~english AVI format type
+
+
+## @~chinese  閲囬泦妯″紡                  @~english Acquisition mode
+MV_ACQ_MODE_SINGLE = 0                           ## @~chinese 鍗曞抚妯″紡                          @~english Single Mode
+MV_ACQ_MODE_MUTLI = 1                            ## @~chinese 澶氬抚妯″紡                          @~english Multi Mode
+MV_ACQ_MODE_CONTINUOUS = 2                       ## @~chinese 鎸佺画閲囬泦妯″紡                      @~english Continuous Mode
+
+## @~chinese  澧炵泭妯″紡                  @~english Gain Mode
+MV_GAIN_MODE_OFF = 0                             ## @~chinese 鍏抽棴澧炵泭妯″紡                     @~english Gain mode off
+MV_GAIN_MODE_ONCE = 1                            ## @~chinese 鍗曟                             @~english Gain Mode Once
+MV_GAIN_MODE_CONTINUOUS = 2                      ## @~chinese 杩炵画                             @~english Gain Mode Continuous 
+
+
+## @~chinese  鏇濆厜妯″紡                  @~english Exposure Mode
+MV_EXPOSURE_MODE_TIMED = 0                       ## @~chinese 鏇濆厜瓒呮椂妯″紡                      @~english exposure mode timed
+MV_EXPOSURE_MODE_TRIGGER_WIDTH = 1               ## @~chinese 鏇濆厜妯″紡瑙﹀彂瀹�                    @~english Trigger width
+
+
+
+## @~chinese 鑷姩鏇濆厜妯″紡              @~english Auto Exposure Mode
+MV_EXPOSURE_AUTO_MODE_OFF = 0                    ## @~chinese 鍏抽棴鑷姩鏇濆厜妯″紡                 @~english Exposure auto mode off
+MV_EXPOSURE_AUTO_MODE_ONCE = 1                   ## @~chinese 鍗曟鑷姩鏇濆厜妯″紡                 @~english Exposure auto mode once
+MV_EXPOSURE_AUTO_MODE_CONTINUOUS = 2             ## @~chinese 鑷姩杩炵画鏇濆厜妯″紡                 @~english Exposure auto mode continuous
+
+## @~chinese   瑙﹀彂妯″紡                  @~english Trigger Mode
+MV_TRIGGER_MODE_OFF = 0                          ## @~chinese 鍏抽棴                             @~english Off
+MV_TRIGGER_MODE_ON = 1                           ## @~chinese 鎵撳紑                             @~english On
+
+
+
+## @~chinese  Gamma閫夋嫨鍣�               @~english Gamma Selector
+MV_GAMMA_SELECTOR_USER = 1                       ## @~chinese gamma閫夋嫨椤筓ser                 @~english This enumeration selects the type of gamma to apply
+MV_GAMMA_SELECTOR_SRGB = 2                       ## @~chinese gamma閫夋嫨椤筍RGB                 @~english This enumeration selects the type of gamma to apply
+
+
+## @~chinese 鐧藉钩琛�                    @~english White Balance
+MV_BALANCEWHITE_AUTO_OFF = 0                     ## @~chinese 鐧藉钩琛¤嚜鍔ㄥ叧闂�                   @~english Balance white auto off
+MV_BALANCEWHITE_AUTO_CONTINUOUS = 1              ## @~chinese 鐧藉钩琛¤嚜鍔ㄨ繛缁�                   @~english Balance white auto continuous
+MV_BALANCEWHITE_AUTO_ONCE = 2                    ## @~chinese 鍗曟鑷姩鐧藉钩琛�                   @~english Balance white auto once
+
+
+## @~chinese  瑙﹀彂婧�                    @~english Trigger Source
+MV_TRIGGER_SOURCE_LINE0 = 0                      ## @~chinese LINE0 瑙﹀彂婧�                             @~english Trigger source line0
+MV_TRIGGER_SOURCE_LINE1 = 1                      ## @~chinese LINE1 瑙﹀彂婧�                             @~english Trigger source line1
+MV_TRIGGER_SOURCE_LINE2 = 2                      ## @~chinese LINE2 瑙﹀彂婧�                             @~english Trigger source line2
+MV_TRIGGER_SOURCE_LINE3 = 3                      ## @~chinese LINE3 瑙﹀彂婧�                             @~english Trigger source line3
+MV_TRIGGER_SOURCE_COUNTER0 = 4                   ## @~chinese 瑙﹀彂婧愯鏁板櫒                             @~english Trigger source conuter
+MV_TRIGGER_SOURCE_SOFTWARE = 7                   ## @~chinese 杞Е鍙�                                   @~english Trigger source software
+MV_TRIGGER_SOURCE_FrequencyConverter = 8         ## @~chinese 瑙﹀彂婧愬彉棰戝櫒                             @~english Trigger source frequency converter
+
+
+## @~chinese   鍥惧儚鎵╁睍淇℃伅鐨勭被鍨� MV_FRAME_EXTRA_INFO_TYPE     @~english  Image Extended Information Type: MV_FRAME_EXTRA_INFO_TYPE
+MV_FRAME_EXTRA_NO_INFO     = 0x0000              ## @~chinese 娌℃湁鎵╁睍淇℃伅
+MV_FRAME_EXTRA_SUBIMAGES   = 0x0001              ## @~chinese 瀛愬浘
+MV_FRAME_EXTRA_MULTIPARTS  = 0x0002              ## @~chinese 澶氶儴鍒�
+
+## @~chinese  ZONE鏂瑰悜锛堣嚜涓婅�屼笅鎴栬�呰嚜涓嬭�屼笂锛� MV_GIGE_ZONE_DIRECTION     @~english Zone Direction (Top to Bottom or Bottom to Top) - MV_GIGE_ZONE_DIRECTION (system variable)
+MV_GIGE_PART_ZONE_TOP_DOWN = 0 
+MV_GIGE_PART_ZONE_BOTTOM_UP  = 1
+
+## @~chinese   鏁版嵁绫诲瀷 MV_MULTI_PART_DATA_TYPE     @~english Data Type:  MV_MULTI_PART_DATA_TYPE
+MV_GIGE_DT_2D_IMAGE_1_PLANAR = 0x0001 
+MV_GIGE_DT_2D_IMAGE_2_PLANAR = 0x0002 
+MV_GIGE_DT_2D_IMAGE_3_PLANAR = 0x0003
+MV_GIGE_DT_2D_IMAGE_4_PLANAR = 0x0004
+MV_GIGE_DT_3D_IMAGE_1_PLANAR = 0x0005
+MV_GIGE_DT_3D_IMAGE_2_PLANAR = 0x0006
+MV_GIGE_DT_3D_IMAGE_3_PLANAR = 0x0007
+MV_GIGE_DT_3D_IMAGE_4_PLANAR = 0x0008
+MV_GIGE_DT_CONFIDENCE_MAP = 0x0009
+MV_GIGE_DT_CHUNK_DATA = 0x000A
+MV_GIGE_DT_JPEG_IMAGE = 0x000B
+MV_GIGE_DT_JPEG2000_IMAGE = 0x000C
+
+## @~chinese   娴佸紓甯哥被鍨�      @~english  Stream Anomaly Type
+MV_CC_STREAM_EXCEPTION_ABNORMAL_IMAGE = 0x4001   ## @~chinese 鍥惧儚寮傚父(鍥惧儚闀垮害涓嶆纭�佹暟鎹寘鍐呭瑙f瀽寮傚父鍜屾牎楠屽け璐ョ瓑),涓㈠純璇ュ抚(鍙兘鍘熷洜锛氶摼璺紶杈撳紓甯稿拰璁惧鍙戝寘寮傚父绛�)             @~english Image anomaly (incorrect image length, data packet content parsing error, checksum failure, etc.): discard the frame. Possible causes: link transmission anomalies, device packet transmission anomalies, etc.
+MV_CC_STREAM_EXCEPTION_LIST_OVERFLOW = 0x4002    ## @~chinese 缂撳瓨鍒楄〃宸叉弧(娌℃湁鍙婃椂鍙栬蛋鍥惧儚),閲囬泦鍗′笅鐩告満鍜屽崟USB鍙g浉鏈轰笉鏀寔       @~english The cache list is full (due to images not being retrieved in time). Cameras under the capture card and single USB port cameras are not supported.
+MV_CC_STREAM_EXCEPTION_LIST_EMPTY = 0x4003       ## @~chinese 缂撳瓨鍒楄〃涓虹┖(鍙栬蛋鍥惧儚鍚庢湭鍙婃椂灏嗗浘鍍忕紦瀛樺綊杩�)        @~english    The cache list is empty (the image was taken from the cache but not returned in time).
+MV_CC_STREAM_EXCEPTION_RECONNECTION = 0x4004     ## @~chinese 瑙﹀彂涓�娆℃柇娴佹仮澶�(浠匲3V鏀寔)                         @~english  Trigger a stream recovery (supported only by U3V)
+MV_CC_STREAM_EXCEPTION_DISCONNECTED = 0x4005     ## @~chinese 鏂祦鎭㈠澶辫触,鍙栨祦琚腑姝�(浠匲3V鏀寔)                  @~english  Failed to recover from stream interruption: Stream retrieval terminated (Supported only by U3V).
+MV_CC_STREAM_EXCEPTION_DEVICE = 0x4006           ## @~chinese 璁惧寮傚父,鍙栨祦琚腑姝�(浠匲3V鏀寔)                      @~english  Streaming interrupted due to device error (only supported by U3V)
+MV_CC_STREAM_EXCEPTION_PARTIAL_IMAGE = 0x4007    ## @~chinese 琛岄珮涓嶈冻,涓㈠純娈嬪抚(绾块樀鐩告満鎴栬�呴噰闆嗗崱閰嶇疆浜嗘畫甯т涪寮冩ā寮�,鍑哄浘琛岄珮涓嶈冻鏃惰SDK涓㈠純)  @~english   Insufficient line height (discard residual frames): Incomplete frames are discarded by the SDK when the line height is insufficient if line-scan cameras or frame grabbers are configured with residual frame discard mode.
+MV_CC_STREAM_EXCEPTION_IMAGE_BUFFER_OVERFLOW   = 0x4008    ## @~chinese 璁惧鍙戦�佺殑鍥惧儚鏁版嵁澶у皬瓒呰繃浜嗗浘鍍忕紦鍐插尯瀹归噺(璇ュ抚涓㈠純)   @~english  The size of the image data sent by the device exceeds the image buffer capacity (this frame is dropped).
+
+
+## @~chinese  Gige鐨勪紶杈撶被鍨�            @~english The transmission type of Gige
+MV_GIGE_TRANSTYPE_UNICAST = 0                    ## @~chinese 琛ㄧず鍗曟挱(榛樿)                              @~english Unicast mode(default)
+MV_GIGE_TRANSTYPE_MULTICAST = 1                  ## @~chinese 琛ㄧず缁勬挱                                    @~english Multicast mode
+MV_GIGE_TRANSTYPE_LIMITEDBROADCAST = 2           ## @~chinese 琛ㄧず灞�鍩熺綉鍐呭箍鎾紝鏆備笉鏀寔                  @~english Limited broadcast mode,not support
+MV_GIGE_TRANSTYPE_SUBNETBROADCAST = 3            ## @~chinese 琛ㄧず瀛愮綉鍐呭箍鎾紝鏆備笉鏀寔                    @~english Subnet broadcast mode,not support
+MV_GIGE_TRANSTYPE_CAMERADEFINED = 4              ## @~chinese 琛ㄧず浠庣浉鏈鸿幏鍙栵紝鏆備笉鏀寔                    @~english Transtype from camera,not support
+MV_GIGE_TRANSTYPE_UNICAST_DEFINED_PORT = 5       ## @~chinese 琛ㄧず鐢ㄦ埛鑷畾涔夊簲鐢ㄧ鎺ユ敹鍥惧儚鏁版嵁Port鍙�      @~english User Defined Receive Data Port
+MV_GIGE_TRANSTYPE_UNICAST_WITHOUT_RECV = 65536   ## @~chinese 琛ㄧず璁剧疆浜嗗崟鎾紝浣嗘湰瀹炰緥涓嶆帴鏀跺浘鍍忔暟鎹�      @~english Unicast without receive data
+MV_GIGE_TRANSTYPE_MULTICAST_WITHOUT_RECV = 65537 ## @~chinese 琛ㄧず缁勬挱妯″紡锛屼絾鏈疄渚嬩笉鎺ユ敹鍥惧儚鏁版嵁        @~english Multicast without receive data
+
+
+## @~chinese  姣忎釜鑺傜偣瀵瑰簲鐨勬帴鍙g被鍨�    @~english Interface type corresponds to each node 
+IFT_IValue = 0                                   ## @~chinese IValue鎺ュ彛绫诲瀷                  @~english IValue interface
+IFT_IBase = 1                                    ## @~chinese IBase鎺ュ彛绫诲瀷                   @~english IBase interface
+IFT_IInteger = 2                                 ## @~chinese IInteger鎺ュ彛绫诲瀷                @~english IInteger interface
+IFT_IBoolean = 3                                 ## @~chinese IBoolean鎺ュ彛绫诲瀷                @~english IBoolean interface
+IFT_ICommand = 4                                 ## @~chinese ICommand鎺ュ彛绫诲瀷                @~english ICommand interface
+IFT_IFloat = 5                                   ## @~chinese IFloat鎺ュ彛绫诲瀷                  @~english IFloat interface
+IFT_IString = 6                                  ## @~chinese IString鎺ュ彛绫诲瀷                 @~english IString interface
+IFT_IRegister = 7                                ## @~chinese IRegister鎺ュ彛绫诲瀷               @~english IRegister interface
+IFT_ICategory = 8                                ## @~chinese ICategory鎺ュ彛绫诲瀷               @~english ICategory interface
+IFT_IEnumeration = 9                             ## @~chinese IEnumeration鎺ュ彛绫诲瀷            @~english IEnumeration interface
+IFT_IEnumEntry = 10                              ## @~chinese IEnumEntry鎺ュ彛绫诲瀷              @~english IEnumEntry interface
+IFT_IPort = 11                                   ## @~chinese IPort鎺ュ彛绫诲瀷                   @~english IPort interface
+
+## @~chinese  鑺傜偣鐨勮闂ā寮�            @~english Node Access Mode
+AM_NI = 0                                        ## @~chinese 娌℃湁瀹炵幇                          @~english Not implemented
+AM_NA = 1                                        ## @~chinese 涓嶅彲鐢�                            @~english Not available
+AM_WO = 2                                        ## @~chinese 鍙啓                              @~english Write Only
+AM_RO = 3                                        ## @~chinese 鍙                              @~english Read Only
+AM_RW = 4                                        ## @~chinese 璇诲拰鍐�                            @~english Read and Write
+AM_Undefined = 5                                 ## @~chinese 瀵硅薄鏈鍒濆鍖�                    @~english Object is not yet initialized
+AM_CycleDetect = 6                               ## @~chinese 鍐呴儴鐢ㄤ簬AccessMode寰幆妫�娴�        @~english used internally for AccessMode cycle detection
+
+
+## @~chinese  瀵煎叆鍙傛暟鎶ラ敊鏃剁殑鍘熷洜,閿欒鐮�    @~english Reasons for importing parameter errors code
+MVCC_NODE_ERR_NODE_INVALID  = 1         ## @~chinese  鑺傜偣涓嶅瓨鍦�                                   @~english Usually, the operating node does not exist in the device
+MVCC_NODE_ERR_ACCESS        = 2,         ## @~chinese  璁块棶鏉′欢閿欒,閫氬父鏄妭鐐逛笉鍙鍐�             @~english Access condition error, usually due to nodes not being readable or writable
+MVCC_NODE_ERR_OUT_RANGE     = 3,         ## @~chinese  鍐欏叆瓒婄晫,瓒呭嚭璇ヨ妭鐐规敮鎸佺殑鑼冨洿               @~english Write out of bounds, beyond the supported range of this node
+MVCC_NODE_ERR_VERIFY_FAILD  = 4,         ## @~chinese  鏍¢獙澶辫触,閫氬父鏄啓鍏ョ殑鍊间笌鏂囦欢涓殑鍊间笉鍖归厤        @~english Verification failed, usually due to a mismatch between the written value and the value in the file
+MVCC_NODE_ERR_OTHER         = 100       ## @~chinese  鍏跺畠閿欒,鍙煡闃呮棩蹇�                            @~english Other errors, can view logs
+
+
+## @~chinese   鍥惧儚閲嶆瀯鐨勬柟寮�        @~english Image reconstruction method
+MV_SPLIT_BY_LINE = 1                            #< \~chinese 婧愬浘鍍忔寜琛屾媶鍒嗘垚澶氬紶鍥惧儚         @~english Source image split into multiple images by line
+
+int8_t = c_int8
+int16_t = c_int16
+int32_t = c_int32
+int64_t = c_int64
+uint8_t = c_uint8
+uint16_t = c_uint16
+uint32_t = c_uint32
+uint64_t = c_uint64
+int_least8_t = c_byte
+int_least16_t = c_short
+int_least32_t = c_int
+int_least64_t = c_long
+uint_least8_t = c_ubyte
+uint_least16_t = c_ushort
+uint_least32_t = c_uint
+uint_least64_t = c_ulong
+int_fast8_t = c_byte
+int_fast16_t = c_long
+int_fast32_t = c_long
+int_fast64_t = c_long
+uint_fast8_t = c_ubyte
+uint_fast16_t = c_ulong
+uint_fast32_t = c_ulong
+uint_fast64_t = c_ulong
+intptr_t = c_long
+uintptr_t = c_ulong
+intmax_t = c_long
+uintmax_t = c_ulong
+
+MvGvspPixelType = c_int # enum
+
+def check_sys_and_update_PixelType():
+    currentsystem = platform.system()
+    global MvGvspPixelType
+    if currentsystem == 'Windows':
+        # values for enumeration 'MvGvspPixelType'
+        MvGvspPixelType = c_uint # enum
+    else:
+        # values for enumeration 'MvGvspPixelType'
+        MvGvspPixelType = int64_t  # enum
+        
+#妫�娴嬬郴缁燂紝骞舵洿鏂�
+check_sys_and_update_PixelType()
+
+# GigE璁惧淇℃伅    @~english GigE device info
+class _MV_GIGE_DEVICE_INFO_(Structure):
+    pass
+_MV_GIGE_DEVICE_INFO_._fields_ = [
+    ('nIpCfgOption', c_uint),                     ## @~chinese IP閰嶇疆閫夐」         @~english Ip config option
+    ('nIpCfgCurrent', c_uint),                    ## @~chinese 褰撳墠IP鍦板潃閰嶇疆     @~english IP configuration:bit31-static bit30-dhcp bit29-lla
+    ('nCurrentIp', c_uint),                       ## @~chinese 褰撳墠涓绘満IP鍦板潃     @~english Current host Ip 
+    ('nCurrentSubNetMask', c_uint),               ## @~chinese 褰撳墠瀛愮綉鎺╃爜       @~english curtent subnet mask
+    ('nDefultGateWay', c_uint),                   ## @~chinese 榛樿缃戝叧           @~english Default gate way
+    ('chManufacturerName', c_ubyte * 32),         ## @~chinese 鍘傚晢鍚嶇О           @~english Manufacturer Name
+    ('chModelName', c_ubyte * 32),                ## @~chinese 鍨嬪彿鍚嶇О           @~english Mode name
+    ('chDeviceVersion', c_ubyte * 32),            ## @~chinese 璁惧鍥轰欢鐗堟湰       @~english Device Version
+    ('chManufacturerSpecificInfo', c_ubyte * 48), ## @~chinese 鍘傚晢鐗规畩淇℃伅       @~english Manufacturer Specific Infomation
+    ('chSerialNumber', c_ubyte * 16),             ## @~chinese 搴忓垪鍙�             @~english serial number
+    ('chUserDefinedName', c_ubyte * 16),          ## @~chinese 鐢ㄦ埛瀹氫箟鍚嶇О       @~english User Defined Name
+    ('nNetExport', c_uint),                       ## @~chinese 缃戝彛Ip鍦板潃         @~english NetWork Ip address
+    ('nReserved', c_uint * 4),                    ## @~chinese 淇濈暀瀛楄妭           @~english Reserved bytes
+]
+MV_GIGE_DEVICE_INFO = _MV_GIGE_DEVICE_INFO_
+
+# USB璁惧淇℃伅    @~english USB device info
+class _MV_USB3_DEVICE_INFO_(Structure):
+    pass
+_MV_USB3_DEVICE_INFO_._fields_ = [
+    ('CrtlInEndPoint', c_ubyte),                            ## @~chinese 鎺у埗杈撳叆绔偣          @~english Control input endpoint
+    ('CrtlOutEndPoint', c_ubyte),                           ## @~chinese 鎺у埗杈撳嚭绔偣          @~english Control output endpoint
+    ('StreamEndPoint', c_ubyte),                            ## @~chinese 娴佺鐐�                @~english Flow endpoint
+    ('EventEndPoint', c_ubyte),                             ## @~chinese 浜嬩欢绔偣              @~english Event endpoint
+    ('idVendor', c_ushort),                                 ## @~chinese 渚涘簲鍟咺D鍙�            @~english Vendor ID Number
+    ('idProduct', c_ushort),                                ## @~chinese 浜у搧ID鍙�              @~english Device ID Number
+    ('nDeviceNumber', c_uint),                              ## @~chinese 璁惧搴忓垪鍙�            @~english Device Serial Number
+    ('chDeviceGUID', c_ubyte * INFO_MAX_BUFFER_SIZE),       ## @~chinese 璁惧GUID鍙�            @~english Device GUID Number
+    ('chVendorName', c_ubyte * INFO_MAX_BUFFER_SIZE),       ## @~chinese 渚涘簲鍟嗗悕瀛�            @~english Vendor Name
+    ('chModelName', c_ubyte * INFO_MAX_BUFFER_SIZE),        ## @~chinese 鍨嬪彿鍚嶅瓧              @~english Model Name
+    ('chFamilyName', c_ubyte * INFO_MAX_BUFFER_SIZE),       ## @~chinese 瀹舵棌鍚嶅瓧              @~english Family Name
+    ('chDeviceVersion', c_ubyte * INFO_MAX_BUFFER_SIZE),    ## @~chinese 璁惧鐗堟湰鍙�            @~english Device Version
+    ('chManufacturerName', c_ubyte * INFO_MAX_BUFFER_SIZE), ## @~chinese 鍒堕�犲晢鍚嶅瓧            @~english Manufacturer Name
+    ('chSerialNumber', c_ubyte * INFO_MAX_BUFFER_SIZE),     ## @~chinese 搴忓垪鍙�                @~english Serial Number
+    ('chUserDefinedName', c_ubyte * INFO_MAX_BUFFER_SIZE),  ## @~chinese 鐢ㄦ埛鑷畾涔夊悕瀛�        @~english User Defined Name
+    ('nbcdUSB', c_uint),                                    ## @~chinese 鏀寔鐨刄SB鍗忚         @~english Support USB Protocol
+    ('nDeviceAddress', c_uint),                             ## @~chinese 璁惧鍦板潃              @~english Device Address
+    ('nReserved', c_uint * 2),                              ## @~chinese 淇濈暀瀛楄妭              @~english Reserved bytes
+]
+MV_USB3_DEVICE_INFO = _MV_USB3_DEVICE_INFO_
+
+# CameraLink璁惧淇℃伅    @~english CameraLink device info
+class _MV_CamL_DEV_INFO_(Structure):
+    pass
+_MV_CamL_DEV_INFO_._fields_ = [
+    ('chPortID', c_ubyte * INFO_MAX_BUFFER_SIZE),           ## @~chinese 绔彛鍙�            @~english Port ID         
+    ('chModelName', c_ubyte * INFO_MAX_BUFFER_SIZE),        ## @~chinese 璁惧鍨嬪彿          @~english Model name
+    ('chFamilyName', c_ubyte * INFO_MAX_BUFFER_SIZE),       ## @~chinese 瀹舵棌鍚嶅瓧          @~english Family Name
+    ('chDeviceVersion', c_ubyte * INFO_MAX_BUFFER_SIZE),    ## @~chinese 璁惧鐗堟湰鍙�        @~english Device Version
+    ('chManufacturerName', c_ubyte * INFO_MAX_BUFFER_SIZE), ## @~chinese 鍒堕�犲晢鍚嶅瓧        @~english Manufacturer Name
+    ('chSerialNumber', c_ubyte * INFO_MAX_BUFFER_SIZE),     ## @~chinese 搴忓垪鍙�            @~english Serial Number
+    ('nReserved', c_uint * 38),                             ## @~chinese 淇濈暀瀛楄妭          @~english Reserved bytes
+]
+MV_CamL_DEV_INFO = _MV_CamL_DEV_INFO_
+
+# CoaXPress鐩告満淇℃伅      @~english CoaXPress device information
+class _MV_CXP_DEVICE_INFO_(Structure):
+    pass
+_MV_CXP_DEVICE_INFO_._fields_ = [
+    ('chInterfaceID', c_ubyte * INFO_MAX_BUFFER_SIZE),   ## @~chinese 閲囬泦鍗D         @~english Interface ID of Frame Grabber
+    ('chVendorName', c_ubyte * INFO_MAX_BUFFER_SIZE),    ## @~chinese 渚涘簲鍟嗗悕瀛�       @~english Vendor name
+    ('chModelName', c_ubyte * INFO_MAX_BUFFER_SIZE),     ## @~chinese 鍨嬪彿鍚嶅瓧         @~english Model name
+    ('chManufacturerInfo', c_ubyte * INFO_MAX_BUFFER_SIZE),   ## @~chinese 鍘傚晢淇℃伅    @~english Manufacturer information
+    ('chDeviceVersion', c_ubyte * INFO_MAX_BUFFER_SIZE),    ## @~chinese 鐩告満鐗堟湰      @~english Device version
+    ('chSerialNumber', c_ubyte * INFO_MAX_BUFFER_SIZE),     ## @~chinese 搴忓垪鍙�        @~english Serial Number
+    ('chUserDefinedName', c_ubyte * INFO_MAX_BUFFER_SIZE),  ## @~chinese 鐢ㄦ埛鑷畾涔夊悕瀛�    @~english User defined name
+    ('chDeviceID', c_ubyte * INFO_MAX_BUFFER_SIZE),         ## @~chinese 鐩告満ID            @~english Device ID
+    ('nReserved', c_uint * 7),                              ## @~chinese 淇濈暀瀛楄妭          @~english Reserved bytes
+]
+MV_CXP_DEVICE_INFO = _MV_CXP_DEVICE_INFO_
+
+
+# 閲囬泦鍗amera Link鐩告満淇℃伅          @~english Camera Link device information on frame grabber
+class _MV_CML_DEVICE_INFO_(Structure):
+    pass
+_MV_CML_DEVICE_INFO_._fields_ = [
+    ('chInterfaceID', c_ubyte * INFO_MAX_BUFFER_SIZE),   ## @~chinese 閲囬泦鍗D         @~english Interface ID of Frame Grabber
+    ('chVendorName', c_ubyte * INFO_MAX_BUFFER_SIZE),    ## @~chinese 渚涘簲鍟嗗悕瀛�       @~english Vendor name
+    ('chModelName', c_ubyte * INFO_MAX_BUFFER_SIZE),     ## @~chinese 鍨嬪彿鍚嶅瓧         @~english Model name
+    ('chManufacturerInfo', c_ubyte * INFO_MAX_BUFFER_SIZE),   ## @~chinese 鍘傚晢淇℃伅    @~english Manufacturer information
+    ('chDeviceVersion', c_ubyte * INFO_MAX_BUFFER_SIZE),    ## @~chinese 鐩告満鐗堟湰      @~english Device version
+    ('chSerialNumber', c_ubyte * INFO_MAX_BUFFER_SIZE),     ## @~chinese 搴忓垪鍙�        @~english Serial Number
+    ('chUserDefinedName', c_ubyte * INFO_MAX_BUFFER_SIZE),  ## @~chinese 鐢ㄦ埛鑷畾涔夊悕瀛桜~english User defined name
+    ('chDeviceID', c_ubyte * INFO_MAX_BUFFER_SIZE),         ## @~chinese 鐩告満ID        @~english Device ID
+    ('nReserved', c_uint * 7),                              ## @~chinese 淇濈暀瀛楄妭      @~english Reserved bytes
+]
+MV_CML_DEVICE_INFO = _MV_CML_DEVICE_INFO_
+
+# XoFLink鐩告満淇℃伅      @~english XoFLink device information
+class _MV_XOF_DEVICE_INFO_(Structure):
+    pass
+_MV_XOF_DEVICE_INFO_._fields_ = [
+    ('chInterfaceID', c_ubyte * INFO_MAX_BUFFER_SIZE),   ## @~chinese 閲囬泦鍗D         @~english Interface ID of Frame Grabber
+    ('chVendorName', c_ubyte * INFO_MAX_BUFFER_SIZE),    ## @~chinese 渚涘簲鍟嗗悕瀛�       @~english Vendor name
+    ('chModelName', c_ubyte * INFO_MAX_BUFFER_SIZE),     ## @~chinese 鍨嬪彿鍚嶅瓧         @~english Model name
+    ('chManufacturerInfo', c_ubyte * INFO_MAX_BUFFER_SIZE),   ## @~chinese 鍘傚晢淇℃伅    @~english Manufacturer information
+    ('chDeviceVersion', c_ubyte * INFO_MAX_BUFFER_SIZE),    ## @~chinese 鐩告満鐗堟湰      @~english Device version
+    ('chSerialNumber', c_ubyte * INFO_MAX_BUFFER_SIZE),     ## @~chinese 搴忓垪鍙�        @~english Serial Number
+    ('chUserDefinedName', c_ubyte * INFO_MAX_BUFFER_SIZE),  ## @~chinese 鐢ㄦ埛鑷畾涔夊悕瀛桜~english User defined name
+    ('chDeviceID', c_ubyte * INFO_MAX_BUFFER_SIZE),         ## @~chinese 鐩告満ID        @~english Device ID
+    ('nReserved', c_uint * 7),                              ## @~chinese 淇濈暀瀛楄妭      @~english Reserved bytes
+]
+MV_XOF_DEVICE_INFO = _MV_XOF_DEVICE_INFO_
+
+# \~chinese 铏氭嫙鐩告満淇℃伅      @~english Virtual device information
+class _MV_GENTL_VIR_DEVICE_INFO_(Structure):
+    pass
+_MV_GENTL_VIR_DEVICE_INFO_._fields_ = [
+    ('chInterfaceID', c_ubyte * INFO_MAX_BUFFER_SIZE),        ## @~chinese 閲囬泦鍗D            @~english Interface ID of Frame Grabber
+    ('chVendorName', c_ubyte * INFO_MAX_BUFFER_SIZE),         ## @~chinese 渚涘簲鍟嗗悕瀛�          @~english Vendor name
+    ('chModelName', c_ubyte * INFO_MAX_BUFFER_SIZE),          ## @~chinese 鍨嬪彿鍚嶅瓧            @~english Model name
+    ('chManufacturerInfo', c_ubyte * INFO_MAX_BUFFER_SIZE),   ## @~chinese 鍘傚晢淇℃伅            @~english Manufacturer information
+    ('chDeviceVersion', c_ubyte * INFO_MAX_BUFFER_SIZE),       ## @~chinese 鐩告満鐗堟湰           @~english Device version 
+    ('chSerialNumber', c_ubyte * INFO_MAX_BUFFER_SIZE),        ## @~chinese 搴忓垪鍙�             @~english Serial Number 
+    ('chUserDefinedName', c_ubyte * INFO_MAX_BUFFER_SIZE),     ## @~chinese 鐢ㄦ埛鑷畾涔夊悕瀛�     @~english User defined name
+    ('chDeviceID', c_ubyte * INFO_MAX_BUFFER_SIZE),            ## @~chinese 鐩告満ID             @~english Device ID
+    ('chTLType', c_ubyte * INFO_MAX_BUFFER_SIZE),              #< \~chinese 浼犺緭灞傜被鍨�         @~english GenTL Type
+    ('nReserved', c_uint * 7),                                 ## @~chinese 淇濈暀瀛楄妭           @~english Reserved bytes
+]
+MV_GENTL_VIR_DEVICE_INFO = _MV_GENTL_VIR_DEVICE_INFO_
+
+
+
+# \~chinese 璁惧淇℃伅    @~english Device info
+class _MV_CC_DEVICE_INFO_(Structure):
+    pass
+class N19_MV_CC_DEVICE_INFO_3DOT_0E(Union):
+    pass
+N19_MV_CC_DEVICE_INFO_3DOT_0E._fields_ = [
+    ('stGigEInfo', MV_GIGE_DEVICE_INFO),                   ## @~chinese Gige璁惧淇℃伅        @~english Gige device infomation
+    ('stUsb3VInfo', MV_USB3_DEVICE_INFO),                  ## @~chinese U3V璁惧淇℃伅         @~english u3V device information
+    ('stCamLInfo', MV_CamL_DEV_INFO),                      ## @~chinese CamLink璁惧淇℃伅     @~english CamLink device information
+    ('stCMLInfo', MV_CML_DEVICE_INFO),                     ## @~chinese 閲囬泦鍗ameraLink璁惧淇℃伅       @~english CameraLink Device Info On Frame Grabber
+    ('stCXPInfo', MV_CXP_DEVICE_INFO),                     ## @~chinese 閲囬泦鍗oaXPress璁惧淇℃伅        @~english CoaXPress Device Info On Frame Grabber
+    ('stXoFInfo', MV_XOF_DEVICE_INFO),                     ## @~chinese 閲囬泦鍗oF璁惧淇℃伅              @~english XoF Device Info On Frame Grabber
+    ('stVirInfo', MV_GENTL_VIR_DEVICE_INFO),               ## @~chinese 铏氭嫙鐩告満淇℃伅                   @~english Virtual device information
+]
+
+_MV_CC_DEVICE_INFO_._fields_ = [
+    ('nMajorVer', c_ushort),                              ## @~chinese 瑙勮寖鐨勪富瑕佺増鏈�         @~english Major version of the specification.
+    ('nMinorVer', c_ushort),                              ## @~chinese 瑙勮寖鐨勬瑕佺増鏈�         @~english Minor version of the specification
+    ('nMacAddrHigh', c_uint),                             ## @~chinese MAC鍦板潃楂樹綅            @~english Mac address high
+    ('nMacAddrLow', c_uint),                              ## @~chinese MAC鍦板潃浣庝綅            @~english Mac address low
+    ('nTLayerType', c_uint),                              ## @~chinese 璁惧浼犺緭灞傚崗璁被鍨�     @~english Device Transport Layer Protocol Type, e.g. MV_GIGE_DEVICE
+    ('nDevTypeInfo', c_uint),                             ## @~chinese 璁惧绫诲瀷淇℃伅           @~english Device Type Info
+    ('nReserved', c_uint * 3),                            ## @~chinese 淇濈暀瀛楄妭               @~english Reserved bytes
+    ('SpecialInfo', N19_MV_CC_DEVICE_INFO_3DOT_0E),       ## @~chinese 涓嶅悓璁惧鐗规湁淇℃伅       @~english Special information
+]
+MV_CC_DEVICE_INFO = _MV_CC_DEVICE_INFO_
+
+# 璁惧淇℃伅鍒楄〃    @~english Device Information List
+class _MV_CC_DEVICE_INFO_LIST_(Structure):
+    pass
+_MV_CC_DEVICE_INFO_LIST_._fields_ = [
+    ('nDeviceNum', c_uint),                                          ## @~chinese 鍦ㄧ嚎璁惧鏁伴噺         @~english Online Device Number
+    ('pDeviceInfo', POINTER(MV_CC_DEVICE_INFO) * MV_MAX_DEVICE_NUM), ## @~chinese 鏀寔鏈�澶�256涓澶�    @~english Support up to 256 devices
+]
+MV_CC_DEVICE_INFO_LIST = _MV_CC_DEVICE_INFO_LIST_
+
+
+# 閲囬泦鍗′俊鎭�            @~english Interface information
+class _MV_INTERFACE_INFO_(Structure):
+    pass
+_MV_INTERFACE_INFO_._fields_ = [
+    ('nTLayerType', c_uint),               ## @~chinese 閲囬泦鍗$被鍨�               @~english Interface type
+    ('nPCIEInfo', c_uint),                 ## @~chinese 閲囬泦鍗$殑PCIE鎻掓Ы淇℃伅     @~english PCIe slot information of interface
+    ('chInterfaceID', c_ubyte * INFO_MAX_BUFFER_SIZE),  ## @~chinese 閲囬泦鍗D    @~english Interface ID
+    ('chDisplayName', c_ubyte * INFO_MAX_BUFFER_SIZE),  ## @~chinese 鏄剧ず鍚嶇О    @~english Display name
+    ('chSerialNumber', c_ubyte * INFO_MAX_BUFFER_SIZE),  ## @~chinese 搴忓垪鍙�     @~english Serial number
+    ('chModelName', c_ubyte * INFO_MAX_BUFFER_SIZE),     ## @~chinese 鍨嬪彿       @~english model name
+    ('chManufacturer', c_ubyte * INFO_MAX_BUFFER_SIZE),  ## @~chinese 鍘傚晢       @~english manufacturer name
+    ('chDeviceVersion', c_ubyte * INFO_MAX_BUFFER_SIZE),  ## @~chinese 鐗堟湰鍙�     @~english device version
+    ('chUserDefinedName', c_ubyte * INFO_MAX_BUFFER_SIZE),  ## @~chinese 鑷畾涔夊悕绉� @~english user defined name
+    ('nReserved', c_uint * 64),                             ## @~chinese 淇濈暀瀛楄妭   @~english Reserved bytes
+]
+MV_INTERFACE_INFO = _MV_INTERFACE_INFO_
+
+# 閲囬泦鍗′俊鎭垪琛�           @~english Interface Information List
+class _MV_INTERFACE_INFO_LIST_(Structure):
+    pass
+_MV_INTERFACE_INFO_LIST_._fields_ = [
+    ('nInterfaceNum', c_uint),                                          ## @~chinese 鍦ㄧ嚎璁惧鏁伴噺         @~english Online Device Number
+    ('pInterfaceInfos', POINTER(MV_INTERFACE_INFO) * MV_MAX_INTERFACE_NUM), ## @~chinese 鏀寔鏈�澶�256涓澶�    @~english Support up to 256 devices
+]
+MV_INTERFACE_INFO_LIST = _MV_INTERFACE_INFO_LIST_
+
+
+# 閫氳繃GenTL鏋氫妇鍒扮殑Interface淇℃伅    @~english Interface Information with GenTL
+class _MV_GENTL_IF_INFO_(Structure):
+    pass
+_MV_GENTL_IF_INFO_._fields_ = [
+    ('chInterfaceID', c_ubyte * INFO_MAX_BUFFER_SIZE), ## @~chinese GenTL鎺ュ彛ID        @~english Interface ID of GenTL
+    ('chTLType', c_ubyte * INFO_MAX_BUFFER_SIZE),      ## @~chinese 浼犺緭灞傜被鍨�          @~english Transport Layer type
+    ('chDisplayName', c_ubyte * INFO_MAX_BUFFER_SIZE), ## @~chinese 璁惧鏄剧ず鍚嶇О         @~english Display name
+    ('nCtiIndex', c_uint),                             ## @~chinese GenTL鐨刢ti鏂囦欢绱㈠紩   @~english Cti file index of GenTL 
+    ('nReserved', c_uint * 8),                         ## @~chinese 淇濈暀瀛楄妭             @~english Reserved bytes
+]
+MV_GENTL_IF_INFO = _MV_GENTL_IF_INFO_
+
+# 閫氳繃GenTL鏋氫妇鍒扮殑璁惧淇℃伅鍒楄〃    @~english Device Information List with GenTL
+class _MV_GENTL_IF_INFO_LIST_(Structure):
+    pass
+_MV_GENTL_IF_INFO_LIST_._fields_ = [
+    ('nInterfaceNum', c_uint),                                    ## @~chinese 鍦ㄧ嚎璁惧鏁伴噺         @~english Online Device Number
+    ('pIFInfo', POINTER(MV_GENTL_IF_INFO) * MV_MAX_GENTL_IF_NUM), ## @~chinese 鏀寔鏈�澶�256涓澶�     @~english Support up to 256 devices
+]
+MV_GENTL_IF_INFO_LIST = _MV_GENTL_IF_INFO_LIST_
+
+# 閫氳繃GenTL鏋氫妇鍒扮殑璁惧淇℃伅    @~english Device Information with GenTL
+class _MV_GENTL_DEV_INFO_(Structure):
+    pass
+_MV_GENTL_DEV_INFO_._fields_ = [
+    ('chInterfaceID', c_ubyte * INFO_MAX_BUFFER_SIZE),          ## @~chinese GenTL鎺ュ彛ID         @~english Interface ID of GenTL
+    ('chDeviceID', c_ubyte * INFO_MAX_BUFFER_SIZE),             ## @~chinese 璁惧ID              @~english Device ID
+    ('chVendorName', c_ubyte * INFO_MAX_BUFFER_SIZE),           ## @~chinese 渚涘簲鍟嗗悕瀛�          @~english Vendor Name
+    ('chModelName', c_ubyte * INFO_MAX_BUFFER_SIZE),            ## @~chinese 鍨嬪彿鍚嶅瓧            @~english Model name
+    ('chTLType', c_ubyte * INFO_MAX_BUFFER_SIZE),               ## @~chinese 浼犺緭灞傜被鍨�          @~english Transport Layer type
+    ('chDisplayName', c_ubyte * INFO_MAX_BUFFER_SIZE),          ## @~chinese 鏄剧ず鍚嶇О           @~english Display name
+    ('chUserDefinedName', c_ubyte * INFO_MAX_BUFFER_SIZE),      ## @~chinese 鐢ㄦ埛鑷畾涔夊悕瀛�      @~english User defined name
+    ('chSerialNumber', c_ubyte * INFO_MAX_BUFFER_SIZE),         ## @~chinese 搴忓垪鍙�             @~english Serial number
+    ('chDeviceVersion', c_ubyte * INFO_MAX_BUFFER_SIZE),        ## @~chinese 璁惧鐗堟湰鍙�         @~english Device version
+    ('nCtiIndex', c_uint),                                      ## @~chinese cti绱㈠紩            @~english Cti Index
+    ('nReserved', c_uint * 8),                                  ## @~chinese 淇濈暀瀛楄妭           @~english Reserved bytes
+]
+MV_GENTL_DEV_INFO = _MV_GENTL_DEV_INFO_
+
+# 閫氳繃GenTL鏋氫妇鍒扮殑璁惧淇℃伅鍒楄〃    @~english Device Information List with GenTL
+class _MV_GENTL_DEV_INFO_LIST_(Structure):
+    pass
+_MV_GENTL_DEV_INFO_LIST_._fields_ = [
+    ('nDeviceNum', c_uint),                                             ## @~chinese 鍦ㄧ嚎璁惧鏁伴噺         @~english Online Device Number
+    ('pDeviceInfo', POINTER(MV_GENTL_DEV_INFO) * MV_MAX_GENTL_DEV_NUM), ## @~chinese GenTL璁惧淇℃伅       @~english device infomation of GenTL device
+]
+MV_GENTL_DEV_INFO_LIST = _MV_GENTL_DEV_INFO_LIST_
+
+# Chunk鍐呭    @~english The content of ChunkData
+class _MV_CHUNK_DATA_CONTENT_(Structure):
+    pass
+_MV_CHUNK_DATA_CONTENT_._fields_ = [
+    ('pChunkData', POINTER(c_ubyte)),  ## @~chinese 鍧楁暟鎹�             @~english Chunk data
+    ('nChunkID', c_uint),              ## @~chinese 鍧楁暟鎹甀D           @~english Chunk id
+    ('nChunkLen', c_uint),             ## @~chinese 鍧楁暟鎹暱搴�         @~english Chunk len
+    ('nReserved', c_uint * 8),         ## @~chinese 淇濈暀瀛楄妭           @~english Reserved bytes
+]
+MV_CHUNK_DATA_CONTENT = _MV_CHUNK_DATA_CONTENT_
+
+
+#  鍥惧儚淇℃伅           @~english Image information
+class _MV_CC_IMAGE_(Structure):
+    pass
+_MV_CC_IMAGE_._fields_ = [
+    ('nWidth', c_uint),                     ## @~chinese 鍥惧儚瀹�       @~english Width
+    ('nHeight', c_uint),                    ## @~chinese 鍥惧儚楂�       @~english Height
+    ('enPixelType', MvGvspPixelType),       ## @~chinese 鍍忕礌鏍煎紡     @~english Pixel type
+    ('pImageBuf', POINTER(c_ubyte)),        ## @~chinese 鍥惧儚缂撳瓨    @~english Image buffer
+    ('nImageBufSize', uint64_t),            ## @~chinese 鍥惧儚缂撳瓨澶у皬  @~english Image buffer size
+    ('nImageLen', uint64_t),                ## @~chinese 鍥惧儚闀垮害    @~english Image length
+    ('nReserved', c_uint * 4),              ## @~chinese 棰勭暀瀛楁      @~english Reserved
+]
+MV_CC_IMAGE = _MV_CC_IMAGE_
+
+
+
+
+# values for enumeration '_MV_FRAME_EXTRA_INFO_TYPE_'
+_MV_FRAME_EXTRA_INFO_TYPE_ = c_int # enum
+MV_FRAME_EXTRA_INFO_TYPE = _MV_FRAME_EXTRA_INFO_TYPE_
+
+# values for enumeration '_MV_GIGE_ZONE_DIRECTION_'
+_MV_GIGE_ZONE_DIRECTION_ = c_int # enum
+MV_GIGE_ZONE_DIRECTION = _MV_GIGE_ZONE_DIRECTION_
+class _MV_GIGE_ZONE_INFO_(Structure):
+    pass
+class N19_MV_GIGE_ZONE_INFO_3DOT_1E(Union):
+    pass
+N19_MV_GIGE_ZONE_INFO_3DOT_1E._fields_ = [
+    ('pZoneAddr', POINTER(c_ubyte)),
+    ('nAlign', uint64_t),
+]
+_MV_GIGE_ZONE_INFO_._fields_ = [
+    ('enDirection', MV_GIGE_ZONE_DIRECTION),
+    ('stZone', N19_MV_GIGE_ZONE_INFO_3DOT_1E),
+    ('nLength', uint64_t),
+    ('nReserved', c_uint * 6),
+]
+MV_GIGE_ZONE_INFO = _MV_GIGE_ZONE_INFO_
+class _MV_GIGE_MULRI_PART_DATA_INFO_(Union):
+    pass
+class N30_MV_GIGE_MULRI_PART_DATA_INFO_3DOT_2E(Structure):
+    pass
+N30_MV_GIGE_MULRI_PART_DATA_INFO_3DOT_2E._fields_ = [
+    ('nSizeX', c_uint),
+    ('nSizeY', c_uint),
+    ('nOffsetX', c_uint),
+    ('nOffsetY', c_uint),
+    ('nPaddingX', c_ushort),
+]
+
+class N30_MV_GIGE_MULRI_PART_DATA_INFO_3DOT_3E(Structure):
+    pass
+N30_MV_GIGE_MULRI_PART_DATA_INFO_3DOT_3E._fields_ = [
+    ('nJpegFlag', c_ubyte),
+    ('nTimestampTickFrequencyHigh', c_uint),
+    ('nTimestampTickFrequencyLow', c_uint),
+    ('nJpegDataFormat', c_uint),
+]
+_MV_GIGE_MULRI_PART_DATA_INFO_._fields_ = [
+    ('stGeneral', N30_MV_GIGE_MULRI_PART_DATA_INFO_3DOT_2E),
+    ('stJpeg', N30_MV_GIGE_MULRI_PART_DATA_INFO_3DOT_3E),
+    ('pDataTypeSpecific', c_ubyte * 24),
+]
+MV_GIGE_PART_DATA_INFO = _MV_GIGE_MULRI_PART_DATA_INFO_
+
+# values for enumeration '_MV_GIGE_MULTI_PART_DATA_TYPE_'
+_MV_GIGE_MULTI_PART_DATA_TYPE_ = c_int # enum
+MV_GIGE_MULTI_PART_DATA_TYPE = _MV_GIGE_MULTI_PART_DATA_TYPE_
+
+class _MV_GIGE_MULTI_PART_INFO_(Structure):
+    pass
+_MV_GIGE_MULTI_PART_INFO_._fields_ = [
+    ('enDataType', MV_GIGE_MULTI_PART_DATA_TYPE),
+    ('nDataFormat', c_uint),
+    ('nSourceID', c_uint),
+    ('nRegionID', c_uint),
+    ('nDataPurposeID', c_uint),
+    ('nZones', c_uint),
+    ('pZoneInfo', POINTER(MV_GIGE_ZONE_INFO)),
+    ('nLength', uint64_t),
+    ('pPartAddr', POINTER(c_ubyte)),
+    ('stDataTypeSpecific', MV_GIGE_PART_DATA_INFO),
+    ('nReserved', c_uint * 8),
+]
+MV_GIGE_MULTI_PART_INFO = _MV_GIGE_MULTI_PART_INFO_
+
+
+
+# 杈撳嚭甯х殑淇℃伅    @~english Output Frame Information
+class _MV_FRAME_OUT_INFO_EX_(Structure):
+    pass
+# values for enumeration 'MvGvspPixelType'
+
+class N22_MV_FRAME_OUT_INFO_EX_3DOT_1E(Union):
+    pass
+N22_MV_FRAME_OUT_INFO_EX_3DOT_1E._fields_ = [
+    ('pUnparsedChunkContent', POINTER(MV_CHUNK_DATA_CONTENT)), ## @~chinese Chunk鍐呭         @~english Chunk Content
+    ('nAligning', int64_t),                                    ## @~chinese 鏍″噯瀛楁          @~english Aligning
+]
+
+class N22_MV_FRAME_OUT_INFO_EX_3DOT_2E(Union):
+    pass
+N22_MV_FRAME_OUT_INFO_EX_3DOT_2E._fields_ = [
+    ('pstSubImage', POINTER(MV_CC_IMAGE)),
+    ('pstPartInfo', POINTER(MV_GIGE_MULTI_PART_INFO)),
+    ('nAligning', int64_t),
+]
+
+class N22_MV_FRAME_OUT_INFO_EX_3DOT_3E(Union):
+    pass
+N22_MV_FRAME_OUT_INFO_EX_3DOT_3E._fields_ = [
+    ('pUser', c_void_p),
+    ('nAligning', int64_t),
+]
+
+_MV_FRAME_OUT_INFO_EX_._fields_ = [
+    ('nWidth', c_ushort),
+    ## @~chinese 鍥惧儚瀹�(鏈�澶�65535锛岃秴鍑鸿鐢╪ExtendWidth)    @~english Image Width (over 65535, use nExtendWidth)
+    ('nHeight', c_ushort),
+    ## @~chinese 鍥惧儚楂�(鏈�澶�65535锛岃秴鍑鸿鐢╪ExtendHeight)   @~english Image Height(over 65535, use nExtendHeight)
+    ('enPixelType', MvGvspPixelType),                        ## @~chinese 鍍忕礌鏍煎紡           @~english Pixel Type
+    ('nFrameNum', c_uint),                                   ## @~chinese 甯у彿               @~english Frame Number
+    ('nDevTimeStampHigh', c_uint),                           ## @~chinese 鏃堕棿鎴抽珮32浣�       @~english Timestamp high 32 bits
+    ('nDevTimeStampLow', c_uint),                            ## @~chinese 鏃堕棿鎴充綆32浣�       @~english Timestamp low 32 bits
+    ('nReserved0', c_uint),                                  ## @~chinese 淇濈暀锛�8瀛楄妭瀵归綈     @~english Reserved, 8-byte aligned
+    ('nHostTimeStamp', int64_t),                             ## @~chinese 涓绘満鐢熸垚鐨勬椂闂存埑    @~english Host-generated timestamp
+    ('nFrameLen', c_uint),                                   ## @~chinese 甯х殑闀垮害           @~english Frame length
+    ## @~chinese 浠ヤ笅涓篶hunk鏂板姘村嵃淇℃伅 @~english The followings are chunk add frame-specific information
+    ## @~chinese 璁惧姘村嵃鏃舵爣 @~english Device frame-specific time scale
+    ('nSecondCount', c_uint),                                ## @~chinese 绉掓暟               @~english The Seconds                         
+    ('nCycleCount', c_uint),                                 ## @~chinese 鍛ㄦ湡鏁�             @~english The Count of Cycle                
+    ('nCycleOffset', c_uint),                                ## @~chinese 鍛ㄦ湡鍋忕Щ閲�         @~english The Offset of Cycle                  
+    ('fGain', c_float),                                      ## @~chinese 澧炵泭               @~english Gain
+    ('fExposureTime', c_float),                              ## @~chinese 鏇濆厜鏃堕棿           @~english Exposure Time
+    ('nAverageBrightness', c_uint),                          ## @~chinese 骞冲潎浜害           @~english Average brightness
+    ## @~chinese:鐧藉钩琛$浉鍏� @~english White balance
+    ('nRed', c_uint),                                        ## @~chinese 绾㈣壊               @~english Red     
+    ('nGreen', c_uint),                                      ## @~chinese 缁胯壊               @~english Green
+    ('nBlue', c_uint),                                       ## @~chinese 钃濊壊               @~english Blue
+    ('nFrameCounter', c_uint),                               ## @~chinese 甯ц鏁�             @~english Frame counter
+    ('nTriggerIndex', c_uint),                               ## @~chinese 瑙﹀彂璁℃暟           @~english Trigger index
+    ## @~chinese  杈撳叆/杈撳嚭 @~english Line Input/Output
+    ('nInput', c_uint),                                      ## @~chinese 杈撳叆               @~english input
+    ('nOutput', c_uint),                                     ## @~chinese 杈撳嚭               @~english output
+    ## @~chinese ROI鍖哄煙 @~english ROI Region                       
+    ('nOffsetX', c_ushort),                                  ## @~chinese 姘村钩鍋忕Щ閲�             @~english OffsetX   
+    ('nOffsetY', c_ushort),                                  ## @~chinese 鍨傜洿鍋忕Щ閲�             @~english OffsetY
+    ('nChunkWidth', c_ushort),                               ## @~chinese chunk 瀹�              @~english The Width of Chunk
+    ('nChunkHeight', c_ushort),                              ## @~chinese chunk 楂�               @~english The Height of Chunk
+    ('nLostPacket', c_uint),                                 ## @~chinese 鏈抚涓㈠寘鏁�            @~english Lost Pacekt Number In This Frame
+    ('nUnparsedChunkNum', c_uint),                           ## @~chinese 鏈В鏋愮殑Chunkdata涓暟 @~english Unparsed chunk number
+    ('UnparsedChunkList', N22_MV_FRAME_OUT_INFO_EX_3DOT_1E), ## @~chinese 鏈В鏋愮殑Chunk鏁版嵁      @~english Unparsed chunk list
+    ('nExtendWidth', c_uint),                                ## @~chinese 鍥惧儚瀹�(鎵╁睍鍙橀噺)       @~english Image Width
+    ('nExtendHeight', c_uint),                               ## @~chinese 鍥惧儚楂�(鎵╁睍鍙橀噺)       @~english Image Height
+    ('nFrameLenEx', uint64_t),                               ## @~chinese 甯х殑闀垮害               @~english The Length of Frame   
+    ('nExtraType', c_uint),                                  ## @~chinese鍒ゆ柇鎼哄甫鐨勯澶栦俊鎭殑绫诲瀷锛氬瓙鍥�(SubImageList)杩樻槸澶氬浘(MultiPartArray) MV_FRAME_EXTRA_INFO_TYPE绫诲瀷         @~english Reserved Identify the type of additional information: SubImageList or MultiPartArray of type MV_FRAME_EXTRA_INFO_TYPE.
+    ('nSubImageNum', c_uint),                                ## @~chinese 鍥惧儚缂撳瓨涓殑瀛愬浘涓暟   @~english  Number of sub-images in the image cache
+    ('SubImageList', N22_MV_FRAME_OUT_INFO_EX_3DOT_2E),      ## @~chinese 瀛愬浘淇℃伅               @~english Sub image info
+    ('UserPtr', N22_MV_FRAME_OUT_INFO_EX_3DOT_3E),           ## @~chinese 鑷畾涔夋寚閽�(澶栭儴娉ㄥ唽缂撳瓨鏃讹紝鍐呭瓨鍦板潃瀵瑰簲鐨勭敤鎴疯嚜瀹氫箟鎸囬拡)          @~english Custom pointer (user-defined pointer corresponding to memory address when registering external cache)
+    ('nFirstLineEncoderCount', c_uint),                      ## @~chinese 棣栬缂栫爜鍣ㄨ鏁�       @~english  First line encoder count
+    ('nLastLineEncoderCount', c_uint),                       ## @~chinese 灏捐缂栫爜鍣ㄨ鏁�       @~english  Last line encoder count
+    ('nReserved', c_uint * 24),                              ## @~chinese 淇濈暀瀛楄妭            @~english Reserved bytes
+]
+MV_FRAME_OUT_INFO_EX = _MV_FRAME_OUT_INFO_EX_
+
+# 鍥惧儚缁撴瀯浣擄紝杈撳嚭鍥惧儚鎸囬拡鍦板潃鍙婂浘鍍忎俊鎭�    @~english Image Struct, output the pointer of Image and the information of the specific image
+class _MV_FRAME_OUT_(Structure):
+    pass
+_MV_FRAME_OUT_._fields_ = [
+    ('pBufAddr', POINTER(c_ubyte)),         ## @~chinese 鍥惧儚鎸囬拡鍦板潃         @~english pointer of image
+    ('stFrameInfo', MV_FRAME_OUT_INFO_EX),  ## @~chinese 鍥惧儚淇℃伅            @~english information of the specific image
+    ('nRes', c_uint * 16),                  ## @~chinese 淇濈暀瀛楄妭            @~english Reserved bytes
+]
+MV_FRAME_OUT = _MV_FRAME_OUT_
+
+# values for enumeration '_MV_GRAB_STRATEGY_'
+_MV_GRAB_STRATEGY_ = c_int # enum       
+MV_GRAB_STRATEGY = _MV_GRAB_STRATEGY_   
+
+# 缃戠粶浼犺緭鐨勭浉鍏充俊鎭�    @~english Network transmission information
+class _MV_NETTRANS_INFO_(Structure):
+    pass
+_MV_NETTRANS_INFO_._fields_ = [
+    ('nReceiveDataSize', int64_t),          ## @~chinese 宸叉帴鏀舵暟鎹ぇ灏�  [缁熻StartGrabbing鍜孲topGrabbing涔嬮棿鐨勬暟鎹噺]         @~english Received Data Size  [Calculate the Data Size between StartGrabbing and StopGrabbing]  
+    ('nThrowFrameCount', c_int),            ## @~chinese 涓㈠抚鏁伴噺             @~english Throw frame number
+    ('nNetRecvFrameCount', c_uint),         ## @~chinese 鏀跺埌甯ц鏁�           @~english Receive Frame count
+    ('nRequestResendPacketCount', int64_t), ## @~chinese 璇锋眰閲嶅彂鍖呮暟         @~english Request Resend Packet Count
+    ('nResendPacketCount', int64_t),        ## @~chinese 閲嶅彂鍖呮暟            @~english Resend Packet Count
+]
+MV_NETTRANS_INFO = _MV_NETTRANS_INFO_
+
+# 鍏ㄥ尮閰嶇殑涓�绉嶄俊鎭粨鏋勪綋    @~english A fully matched information structure
+class _MV_ALL_MATCH_INFO_(Structure):
+    pass
+_MV_ALL_MATCH_INFO_._fields_ = [
+    ('nType', c_uint),              ## @~chinese 闇�瑕佽緭鍑虹殑淇℃伅绫诲瀷                  @~english Information type need to output
+    ('pInfo', c_void_p),            ## @~chinese 杈撳嚭鐨勪俊鎭紦瀛橈紝鐢辫皟鐢ㄨ�呭垎閰�         @~englishOutput information cache, which is allocated by the caller
+    ('nInfoSize', c_uint),          ## @~chinese 淇℃伅缂撳瓨鐨勫ぇ灏�                      @~english Information cache size
+]
+MV_ALL_MATCH_INFO = _MV_ALL_MATCH_INFO_
+
+# 缃戠粶娴侀噺鍜屼涪鍖呬俊鎭弽棣堢粨鏋勪綋锛屽搴旂被鍨嬩负 MV_MATCH_TYPE_NET_DETECT    @~english Network traffic and packet loss feedback structure, the corresponding type is MV_MATCH_TYPE_NET_DETECT
+class _MV_MATCH_INFO_NET_DETECT_(Structure):
+    pass
+_MV_MATCH_INFO_NET_DETECT_._fields_ = [
+    ('nReceiveDataSize', int64_t),          ## @~chinese 宸叉帴鏀舵暟鎹ぇ灏�      @~english Received data size
+    ('nLostPacketCount', int64_t),          ## @~chinese 涓㈠け鐨勫寘鏁伴噺        @~english Number of packets lost
+    ('nLostFrameCount', c_uint),            ## @~chinese 涓㈠抚鏁伴噺            @~english Number of frames lost
+    ('nNetRecvFrameCount', c_uint),         ## @~chinese 鏀跺埌甯ц鏁�           @~english Receive Frame count
+    ('nRequestResendPacketCount', int64_t), ## @~chinese 璇锋眰閲嶅彂鍖呮暟         @~english Request Resend Packet Count
+    ('nResendPacketCount', int64_t),        ## @~chinese 閲嶅彂鍖呮暟             @~english Resend Packet Count
+]
+MV_MATCH_INFO_NET_DETECT = _MV_MATCH_INFO_NET_DETECT_
+
+# \~chinese host鏀跺埌浠巙3v璁惧绔殑鎬诲瓧鑺傛暟锛屽搴旂被鍨嬩负 MV_MATCH_TYPE_USB_DETECT    @~english The total number of bytes host received from the u3v device side, the corresponding type is MV_MATCH_TYPE_USB_DETECT
+class _MV_MATCH_INFO_USB_DETECT_(Structure):
+    pass
+_MV_MATCH_INFO_USB_DETECT_._fields_ = [
+    ('nReceiveDataSize', int64_t),   ## @~chinese 宸叉帴鏀舵暟鎹ぇ灏�      @~english Received data size
+    ('nReceivedFrameCount', c_uint), ## @~chinese 宸叉敹鍒扮殑甯ф暟        @~english Number of frames received
+    ('nErrorFrameCount', c_uint),    ## @~chinese 閿欒甯ф暟            @~english Number of error frames
+    ('nReserved', c_uint * 2),       ## @~chinese 淇濈暀瀛楄妭            @~english Reserved bytes
+]
+MV_MATCH_INFO_USB_DETECT = _MV_MATCH_INFO_USB_DETECT_
+
+# \~chinese 鏄剧ず甯т俊鎭�   @~english Display frame information
+class _MV_DISPLAY_FRAME_INFO_EX_(Structure):
+    pass
+_MV_DISPLAY_FRAME_INFO_EX_._fields_ = [
+    ('nWidth', c_uint),                ## @~chinese 鍥惧儚瀹�    @~english Image Width
+    ('nHeight', c_uint),               ## @~chinese 鍥惧儚楂�    @~english Image Height
+    ('enPixelType', MvGvspPixelType),  ## @~chinese 鍍忕礌鏍煎紡            @~english Pixel Type
+    ('pImageBuf', POINTER(c_ubyte)),   ## @~chinese 杈撳叆鍥惧儚缂撳瓨         @~english Input image buffer
+    ('nImageBufLen', c_uint),          ## @~chinese 杈撳叆鍥惧儚闀垮害         @~english Input image length
+    ('enRenderMode', c_uint),          ## @~chinese 鍥惧儚娓叉煋鏂瑰紡 0-GDI(榛樿), 1-D3D, 2-OPENGL @~english Render mode 0-GDI(default), 1-D3D, 2-OPENGL
+    ('nRes', c_uint * 3),              ## @~chinese 淇濈暀瀛楄妭            @~english Reserved bytes
+]
+MV_DISPLAY_FRAME_INFO_EX = _MV_DISPLAY_FRAME_INFO_EX_
+
+
+# values for enumeration 'MV_SAVE_IAMGE_TYPE'
+MV_SAVE_IAMGE_TYPE = c_int # enum
+
+class _MV_SAVE_IMAGE_PARAM_EX3_(Structure):
+    pass
+_MV_SAVE_IMAGE_PARAM_EX3_._fields_ = [
+    ('pData', POINTER(c_ubyte)),                            ## @~chinese 杈撳叆鏁版嵁缂撳瓨         @~english Input Data Buffer
+    ('nDataLen', c_uint),                                   ## @~chinese 杈撳叆鏁版嵁澶у皬         @~english Input Data Size
+    ('enPixelType', MvGvspPixelType),                       ## @~chinese 杈撳叆鏁版嵁鐨勫儚绱犳牸寮�         @~english Input Data Pixel Format
+    ('nWidth', c_uint),                                     ## @~chinese 鍥惧儚瀹�         @~english Image Width
+    ('nHeight', c_uint),                                    ## @~chinese 鍥惧儚楂�         @~english Image Height
+    ('pImageBuffer', POINTER(c_ubyte)),                     ## @~chinese 杈撳嚭鍥剧墖缂撳瓨         @~english Output Image Buffer
+    ('nImageLen', c_uint),                                  ## @~chinese 杈撳嚭鍥剧墖澶у皬         @~english Output Image Size
+    ('nBufferSize', c_uint),                                ## @~chinese 鎻愪緵鐨勮緭鍑虹紦鍐插尯澶у皬         @~english Output buffer size provided
+    ('enImageType', MV_SAVE_IAMGE_TYPE),                    ## @~chinese 杈撳嚭鍥剧墖鏍煎紡         @~english Output Image Format
+    ('nJpgQuality', c_uint),                                ## @~chinese 缂栫爜璐ㄩ噺, (50-99]         @~english Encoding quality, (50-99]
+    ## @~chinese     ch:Bayer鏍煎紡杞负RGB24鐨勬彃鍊兼柟娉� 0-蹇�� 1-鍧囪  2-鏈�浼� 3-鏈�浼�+ , RBGG/BRGG/GGRB/GGBR鐩稿叧鍍忕礌鏍煎紡涓嶆敮鎸�0鍜�3 
+    # < @~english   en:Interpolation method of convert Bayer to RGB24  0-Fast 1-Equilibrium 2-Optimal 3-Optimal plus , RBGG/BRGG/GGRB/GGBR pixel formats do not support 0 and 3.
+    ('iMethodValue', c_uint),
+    ('nReserved', c_uint * 3),                              ## @~chinese 淇濈暀瀛楄妭           @~english Reserved bytes
+]
+MV_SAVE_IMAGE_PARAM_EX3 = _MV_SAVE_IMAGE_PARAM_EX3_
+
+# \~chinese 淇濆瓨鍥剧墖鍒版枃浠跺弬鏁�
+class _MV_SAVE_IMAGE_TO_FILE_PARAM_EX_(Structure):
+    pass
+_MV_SAVE_IMAGE_TO_FILE_PARAM_EX_._fields_ = [
+    ('nWidth', c_uint),                                 ## @~chinese 鍥惧儚瀹�                                @~english Image Width
+    ('nHeight', c_uint),                                ## @~chinese 鍥惧儚楂�                                @~english Image Height
+    ('enPixelType', MvGvspPixelType),                   ## @~chinese 杈撳叆鏁版嵁鐨勫儚绱犳牸寮�                    @~english The pixel format of the input data
+    ('pData', POINTER(c_ubyte)),                        ## @~chinese 杈撳叆鏁版嵁缂撳瓨                          @~english Input Data Buffer
+    ('nDataLen', c_uint),                               ## @~chinese 杈撳叆鏁版嵁澶у皬                          @~english Input Data Size
+    ('enImageType', MV_SAVE_IAMGE_TYPE),                ## @~chinese 杈撳叆鍥剧墖鏍煎紡                          @~english Input Image Format
+    ('pcImagePath', POINTER(c_char)),                   ## @~chinese 杈撳叆鏂囦欢璺緞,Windows骞冲彴璺緞闀垮害涓嶈秴杩�260瀛楄妭, Linux骞冲彴涓嶈秴杩�255瀛楄妭  @~english Input file path, The path length should not exceed 260 bytes on the Windows platform and 255 bytes on the Linux platform
+    ('nQuality', c_uint),                               ## @~chinese JPG缂栫爜璐ㄩ噺(50-99]锛屽叾浠栨牸寮忔棤鏁�    @~english JPG Encoding quality(50-99]
+    ('iMethodValue', c_int),                            ## @~chinese     ch:Bayer鏍煎紡杞负RGB24鐨勬彃鍊兼柟娉� 0-蹇�� 1-鍧囪  2-鏈�浼� 3-鏈�浼�+ , RBGG/BRGG/GGRB/GGBR鐩稿叧鍍忕礌鏍煎紡涓嶆敮鎸�0鍜�3   @~english   en:Interpolation method of convert Bayer to RGB24  0-Fast 1-Equilibrium 2-Optimal 3-Optimal plus , RBGG/BRGG/GGRB/GGBR pixel formats do not support 0 and 3.
+    ('nReserved', c_uint * 8),                          ## @~chinese 淇濈暀瀛楄妭           @~english Reserved bytes
+]
+MV_SAVE_IMAGE_TO_FILE_PARAM_EX = _MV_SAVE_IMAGE_TO_FILE_PARAM_EX_
+
+# \~chinese 淇濆瓨鍥剧墖鍒版枃浠跺弬鏁�
+class _MV_CC_SAVE_IMAGE_PARAM_(Structure):
+    pass
+_MV_CC_SAVE_IMAGE_PARAM_._fields_ = [
+    ('enImageType', MV_SAVE_IAMGE_TYPE),    ## @~chinese    杈撳叆鍥剧墖鏍煎紡  @~english Enter image format.
+    ('nQuality', c_uint),       ## @~chinese      JPG缂栫爜璐ㄩ噺(50-99]锛屽叾瀹冩牸寮忔棤鏁�   @~english   JPEG Encoding Quality (50鈥�99), Other Formats Are Invalid.
+    ('iMethodValue', c_int),    ## @~chinese     ch:Bayer鏍煎紡杞负RGB24鐨勬彃鍊兼柟娉� 0-蹇�� 1-鍧囪  2-鏈�浼� 3-鏈�浼�+ , RBGG/BRGG/GGRB/GGBR鐩稿叧鍍忕礌鏍煎紡涓嶆敮鎸�0鍜�3   @~english   en:Interpolation method of convert Bayer to RGB24  0-Fast 1-Equilibrium 2-Optimal 3-Optimal plus , RBGG/BRGG/GGRB/GGBR pixel formats do not support 0 and 3.
+    ('nReserved', c_uint * 8),
+]
+MV_CC_SAVE_IMAGE_PARAM = _MV_CC_SAVE_IMAGE_PARAM_
+
+
+
+# values for enumeration '_MV_SORT_METHOD_'
+_MV_SORT_METHOD_ = c_int  # enum
+MV_SORT_METHOD = _MV_SORT_METHOD_
+
+# values for enumeration '_MV_IMG_ROTATION_ANGLE_'
+_MV_IMG_ROTATION_ANGLE_ = c_int  # enum
+MV_IMG_ROTATION_ANGLE = _MV_IMG_ROTATION_ANGLE_
+
+# values for enumeration '_MV_IMG_FLIP_TYPE_'
+_MV_IMG_FLIP_TYPE_ = c_int  # enum
+MV_IMG_FLIP_TYPE = _MV_IMG_FLIP_TYPE_
+
+# values for enumeration '_MV_CC_GAMMA_TYPE_'
+_MV_CC_GAMMA_TYPE_ = c_int  # enum
+MV_CC_GAMMA_TYPE = _MV_CC_GAMMA_TYPE_
+
+
+# values for enumeration '_MV_IMAGE_RECONSTRUCTION_METHOD_'
+_MV_IMAGE_RECONSTRUCTION_METHOD_ = c_int  # enum
+MV_IMAGE_RECONSTRUCTION_METHOD = _MV_IMAGE_RECONSTRUCTION_METHOD_
+
+
+# \~chinese 鍥惧儚鏃嬭浆缁撴瀯浣�            @~english Rotate image structure
+class _MV_CC_ROTATE_IMAGE_PARAM_T_(Structure):
+    pass
+_MV_CC_ROTATE_IMAGE_PARAM_T_._fields_ = [
+    ('enPixelType', MvGvspPixelType),   ## @~chinese 鍍忕礌鏍煎紡              @~english pixel format
+    ('nWidth', c_uint),                 ## @~chinese 鍥惧儚瀹�                @~english Image Width
+    ('nHeight', c_uint),                ## @~chinese 鍥惧儚楂�                @~english Image Height
+    ('pSrcData', POINTER(c_ubyte)),     ## @~chinese 杈撳叆鏁版嵁缂撳瓨           @~english Input data buffer
+    ('nSrcDataLen', c_uint),            ## @~chinese 杈撳叆鏁版嵁澶у皬           @~english Input data length
+    ('pDstBuf', POINTER(c_ubyte)),      ## @~chinese 杈撳嚭鏁版嵁缂撳瓨           @~english Output data buffer
+    ('nDstBufLen', c_uint),             ## @~chinese杈撳嚭鏁版嵁闀垮害            @~english Output data length
+    ('nDstBufSize', c_uint),            ## @~chinese  鎻愪緵鐨勮緭鍑虹紦鍐插尯澶у皬    @~english Provided output buffer size
+    ('enRotationAngle', MV_IMG_ROTATION_ANGLE),   ## @~chinese  鏃嬭浆瑙掑害               @~english Rotation angle
+    ('nRes', c_uint * 8),               ## @~chinese 淇濈暀瀛楄妭               @~english Reserved bytes
+]
+MV_CC_ROTATE_IMAGE_PARAM = _MV_CC_ROTATE_IMAGE_PARAM_T_
+
+# \~chinese 鍥惧儚缈昏浆缁撴瀯浣�            @~english Flip image structure
+class _MV_CC_FLIP_IMAGE_PARAM_T_(Structure):
+    pass
+_MV_CC_FLIP_IMAGE_PARAM_T_._fields_ = [
+    ('enPixelType', MvGvspPixelType),   ## @~chinese 鍍忕礌鏍煎紡              @~english pixel format
+    ('nWidth', c_uint),                 ## @~chinese 鍥惧儚瀹�                @~english Image Width
+    ('nHeight', c_uint),                ## @~chinese 鍥惧儚楂�                @~english Image Height
+    ('pSrcData', POINTER(c_ubyte)),     ## @~chinese 杈撳叆鏁版嵁缂撳瓨           @~english Input data buffer
+    ('nSrcDataLen', c_uint),            ## @~chinese 杈撳叆鏁版嵁澶у皬           @~english Input data length
+    ('pDstBuf', POINTER(c_ubyte)),      ## @~chinese 杈撳嚭鏁版嵁缂撳瓨           @~english Output data buffer
+    ('nDstBufLen', c_uint),             ## @~chinese杈撳嚭鏁版嵁闀垮害            @~english Output data length
+    ('nDstBufSize', c_uint),            ## @~chinese  鎻愪緵鐨勮緭鍑虹紦鍐插尯澶у皬    @~english Provided output buffer size
+    ('enFlipType', MV_IMG_FLIP_TYPE),   ## @~chinese  缈昏浆绫诲瀷              @~english Flip type
+    ('nRes', c_uint * 8),               ## @~chinese 淇濈暀瀛楄妭               @~english Reserved bytes
+]
+MV_CC_FLIP_IMAGE_PARAM = _MV_CC_FLIP_IMAGE_PARAM_T_
+
+class _MV_PIXEL_CONVERT_PARAM_EX_T_(Structure):
+    pass
+_MV_PIXEL_CONVERT_PARAM_EX_T_._fields_ = [
+    ('nWidth', c_uint),                ## @~chinese 鍥惧儚瀹�             @~english Image Width
+    ('nHeight', c_uint),               ## @~chinese 鍥惧儚楂�              @~english Image Height
+    ('enSrcPixelType', MvGvspPixelType), ## @~chinese 婧愬儚绱犳牸寮�            @~english Source pixel format
+    ('pSrcData', POINTER(c_ubyte)),      ## @~chinese 杈撳叆鏁版嵁缂撳瓨           @~english Input data buffer
+    ('nSrcDataLen', c_uint),             ## @~chinese 杈撳叆鏁版嵁澶у皬            @~english Input data size
+    ('enDstPixelType', MvGvspPixelType), ## @~chinese 鐩爣鍍忕礌鏍煎紡             @~english Destination pixel format
+    ('pDstBuffer', POINTER(c_ubyte)),    ## @~chinese 杈撳嚭鏁版嵁缂撳瓨              @~english Output data buffer
+    ('nDstLen', c_uint),                 ## @~chinese 杈撳嚭鏁版嵁澶у皬               @~english Output data size
+    ('nDstBufferSize', c_uint),          ## @~chinese 鎻愪緵鐨勮緭鍑虹紦鍐插尯澶у皬         @~english Provided outbut buffer size
+    ('nRes', c_uint * 4),                ## @~chinese 淇濈暀瀛楄妭                     @~english Reserved bytes
+]
+MV_CC_PIXEL_CONVERT_PARAM_EX = _MV_PIXEL_CONVERT_PARAM_EX_T_
+
+
+
+# \~chinese Gamma淇℃伅缁撴瀯浣�           @~english Gamma info structure
+class _MV_CC_GAMMA_PARAM_T_(Structure):
+    pass
+_MV_CC_GAMMA_PARAM_T_._fields_ = [
+    ('enGammaType', MV_CC_GAMMA_TYPE),       ## @~chinese Gamma绫诲瀷              @~english Gamma type
+    ('fGammaValue', c_float),                ## @~chinese Gamma鍊糩0.1,4.0]       @~english Gamma value[0.1,4.0]
+    ('pGammaCurveBuf', POINTER(c_ubyte)),    ## @~chinese Gamma鏇茬嚎缂撳瓨          @~english Gamma curve buffer
+    ('nGammaCurveBufLen', c_uint),           ## @~chinese Gamma鏇茬嚎缂撳瓨闀垮害          @~english Gamma curve buffer size
+    ('nRes', c_uint * 8),                    ## @~chinese 淇濈暀瀛楄妭             @~english Reserved bytes
+]
+MV_CC_GAMMA_PARAM = _MV_CC_GAMMA_PARAM_T_
+
+# \~chinese CCM鍙傛暟                   @~english CCM param
+class _MV_CC_CCM_PARAM_T_(Structure):
+    pass
+_MV_CC_CCM_PARAM_T_._fields_ = [
+    ('bCCMEnable', c_bool),         ## @~chinese 鏄惁鍚敤CCM            @~english CCM enable
+    ('nCCMat', c_int * 9),          ## @~chinese CCM鐭╅樀[-8192~8192]   @~english Color correction matrix[-8192~8192]
+    ('nRes', c_uint * 8),           ## @~chinese 淇濈暀瀛楄妭             @~english Reserved bytes
+]
+MV_CC_CCM_PARAM = _MV_CC_CCM_PARAM_T_
+
+# \~chinese CCM鍙傛暟                   @~english CCM param
+class _MV_CC_CCM_PARAM_EX_T_(Structure):
+    pass
+_MV_CC_CCM_PARAM_EX_T_._fields_ = [
+    ('bCCMEnable', c_bool),         ## @~chinese 鏄惁鍚敤CCM            @~english CCM enable
+    ('nCCMat', c_int * 9),          ## @~chinese CCM鐭╅樀[-65536~65536]  @~english Color correction matrix[-65536~65536]
+    ('nCCMScale', c_uint),          ## @~chinese 閲忓寲绯绘暟锛�2鐨勬暣鏁板箓,鏈�澶�65536锛�    @~english Quantitative scale(Integer power of 2, <= 65536)
+    ('nRes', c_uint * 8),           ## @~chinese 淇濈暀瀛楄妭             @~english Reserved bytes
+]
+MV_CC_CCM_PARAM_EX = _MV_CC_CCM_PARAM_EX_T_
+
+# \~chinese 瀵规瘮搴﹁皟鑺傜粨鏋勪綋          @~english Contrast structure
+class _MV_CC_CONTRAST_PARAM_T_(Structure):
+    pass
+_MV_CC_CONTRAST_PARAM_T_._fields_ = [
+    ('nWidth', c_uint),                 ## @~chinese 鍥惧儚瀹�(鏈�灏�8)         @~english Image Width
+    ('nHeight', c_uint),                ## @~chinese 鍥惧儚楂�(鏈�灏�8)         @~english Image Height
+    ('pSrcBuf', POINTER(c_ubyte)),      ## @~chinese 杈撳叆鏁版嵁缂撳瓨           @~english Input data buffer
+    ('nSrcBufLen', c_uint),             ## @~chinese 杈撳叆鏁版嵁澶у皬           @~english Input data length
+    ('enPixelType', MvGvspPixelType),   ## @~chinese 鍍忕礌鏍煎紡               @~english pixel format
+    ('pDstBuf', POINTER(c_ubyte)),      ## @~chinese 杈撳嚭鏁版嵁缂撳瓨          @~english Output data buffer
+    ('nDstBufSize', c_uint),            ## @~chinese鎻愪緵鐨勮緭鍑虹紦鍐插尯澶у皬     @~english Provided output buffer size
+    ('nDstBufLen', c_uint),            ## @~chinese  杈撳嚭鏁版嵁闀垮害           @~english Output data length
+    ('nContrastFactor', c_uint),       ## @~chinese  瀵规瘮搴﹀�硷紝[1,10000]    @~english Contrast factor,[1,10000]
+    ('nRes', c_uint * 8),                 ## @~chinese 淇濈暀瀛楄妭             @~english Reserved bytes
+]
+MV_CC_CONTRAST_PARAM = _MV_CC_CONTRAST_PARAM_T_
+
+
+# \~chinese 姘村嵃淇℃伅     @~english  Frame-specific information
+class _MV_CC_FRAME_SPEC_INFO_(Structure):
+    pass
+_MV_CC_FRAME_SPEC_INFO_._fields_ = [
+    ## @~chinese 璁惧姘村嵃鏃舵爣      @~english Device frame-specific time scale
+    ('nSecondCount', c_uint),        ## @~chinese 绉掓暟                  @~english The Seconds
+    ('nCycleCount', c_uint),         ## @~chinese 鍛ㄦ湡鏁�                 @~english The Count of Cycle
+    ('nCycleOffset', c_uint),        ## @~chinese 鍛ㄦ湡鍋忕Щ閲�              @~english The Offset of Cycle
+    ('fGain', c_float),              ## @~chinese 澧炵泭                   @~english Gain
+    ('fExposureTime', c_float),      ## @~chinese 鏇濆厜鏃堕棿                @~english Exposure Time
+    ('nAverageBrightness', c_uint),  ## @~chinese 骞冲潎浜害                @~english Average brightness
+    ## @~chinese 鐧藉钩琛$浉鍏�        @~english White balance
+    ('nRed', c_uint),    ## @~chinese 绾㈣壊                   @~english Red
+    ('nGreen', c_uint),  ## @~chinese 缁胯壊                    @~english Green
+    ('nBlue', c_uint),   ## @~chinese 钃濊壊                    @~english Blue
+    ('nFrameCounter', c_uint),  ## @~chinese 鎬诲抚鏁�           @~english Frame Counter
+    ('nTriggerIndex', c_uint),  ## @~chinese 瑙﹀彂璁℃暟          @~english Trigger Counting
+    ('nInput', c_uint),  ## @~chinese 杈撳叆                   @~english Input
+    ('nOutput', c_uint), ## @~chinese 杈撳嚭                   @~english Output
+    ## @~chinese ROI鍖哄煙           @~english ROI Region
+    ('nOffsetX', c_ushort),      ## @~chinese 姘村钩鍋忕Щ閲�        @~english OffsetX
+    ('nOffsetY', c_ushort),      ## @~chinese 鍨傜洿鍋忕Щ閲�         @~english OffsetY
+    ('nFrameWidth', c_ushort),   ## @~chinese 姘村嵃瀹�            @~english The Width of Chunk
+    ('nFrameHeight', c_ushort),  ## @~chinese 姘村嵃楂�            @~english The Height of Chunk
+    ('nReserved', c_uint * 16),   ## @~chinese 棰勭暀              @~english Reserved bytes
+]
+MV_CC_FRAME_SPEC_INFO = _MV_CC_FRAME_SPEC_INFO_
+
+
+
+# \~chinese 鍘荤传杈圭粨鏋勪綋          @~english PurpleFringing structure
+class _MV_CC_PURPLE_FRINGING_PARAM_T_(Structure):
+    pass
+_MV_CC_PURPLE_FRINGING_PARAM_T_._fields_ = [
+    ('nWidth', c_uint),                         #/< [IN]  \~chinese 鍥惧儚瀹藉害(鏈�灏�4)        @~english Image Width
+    ('nHeight', c_uint),                        #/< [IN]  \~chinese 鍥惧儚楂樺害(鏈�灏�4)        @~english Image Height
+    ('pSrcBuf', POINTER(c_ubyte)),              #/< [IN]  \~chinese 杈撳叆鏁版嵁缂撳瓨           @~english Input data buffer
+    ('nSrcBufLen', c_uint),                     #/< [IN]  \~chinese 杈撳叆鏁版嵁澶у皬           @~english Input data length
+    ('enPixelType', MvGvspPixelType),           #/< [IN]  \~chinese 鍍忕礌鏍煎紡               @~english Pixel format
+    ('pDstBuf', POINTER(c_ubyte)),              #/< [OUT] \~chinese 杈撳嚭鏁版嵁缂撳瓨           @~english Output data buffer
+    ('nDstBufSize', c_uint),                    #/< [IN]  \~chinese 鎻愪緵鐨勮緭鍑虹紦鍐插尯澶у皬   @~english Provided output buffer size
+    ('nDstBufLen', c_uint),                     #/< [OUT] \~chinese 杈撳嚭鏁版嵁闀垮害           @~english Output data length
+    ('nKernelSize', c_uint),                    #/< [IN]     \~chinese 婊ゆ尝鏍稿昂瀵�,浠呮敮鎸�3,5,7,9   @~english Filter Kernel Size, only supports 3,5,7,9
+    ('nEdgeThreshold', c_uint),                 #/< [IN]     \~chinese 杈圭紭闃堝�糩0,2040]           @~english EdgeThreshold
+    ('nRes', c_uint * 8),                       #/<       \~chinese 棰勭暀                   @~english Reserved
+]
+MV_CC_PURPLE_FRINGING_PARAM = _MV_CC_PURPLE_FRINGING_PARAM_T_
+
+
+# \~chinese ISP閰嶇疆缁撴瀯浣�          @~english ISP configuration structure
+class _MV_CC_ISP_CONFIG_PARAM_T_(Structure):
+    pass
+_MV_CC_ISP_CONFIG_PARAM_T_._fields_ = [
+    ('pcConfigPath', STRING),               #/< [IN]  \~chinese 閰嶇疆鏂囦欢璺緞(璺緞淇敼鍚庝細閲嶆柊鍒涘缓绠楁硶鍙ユ焺)              @~english Config file path (The algorithm handle will be reinitialized if the path is modified.)
+    ('nRes', c_uint * 16),                  #/<        \~chinese 棰勭暀                    @~english Reserved
+]
+MV_CC_ISP_CONFIG_PARAM = _MV_CC_ISP_CONFIG_PARAM_T_
+
+
+
+# \~chinese 鏃犳崯瑙g爜鍙傛暟              @~english High Bandwidth decode structure
+class _MV_CC_HB_DECODE_PARAM_T_(Structure):
+    pass
+_MV_CC_HB_DECODE_PARAM_T_._fields_ = [
+    ('pSrcBuf', POINTER(c_ubyte)),      ## @~chinese 杈撳叆鏁版嵁缂撳瓨             @~english Input data buffer
+    ('nSrcLen', c_uint),                ## @~chinese 杈撳叆鏁版嵁澶у皬             @~english Input data size
+    ('nWidth', c_uint),                 ## @~chinese 鍥惧儚瀹�                   @~english Image Width
+    ('nHeight', c_uint),                ## @~chinese 鍥惧儚楂�                   @~english Image Height
+    ('pDstBuf', POINTER(c_ubyte)),      ## @~chinese 杈撳嚭鏁版嵁缂撳瓨             @~english Output data buffer
+    ('nDstBufSize', c_uint),            ## @~chinese 鎻愪緵鐨勮緭鍑虹紦鍐插尯澶у皬     @~english Provided output buffer size
+    ('nDstBufLen', c_uint),             ## @~chinese 杈撳嚭鏁版嵁澶у皬             @~english Output data size
+    ('enDstPixelType', MvGvspPixelType),  ## @~chinese 杈撳嚭鐨勫儚绱犳牸寮�         @~english Output pixel format
+    ('stFrameSpecInfo', MV_CC_FRAME_SPEC_INFO),  ## @~chinese 姘村嵃淇℃伅            @~english Frame Spec Info
+    ('nRes', c_uint * 8),                 ## @~chinese 淇濈暀瀛楄妭               @~english Reserved bytes
+]
+MV_CC_HB_DECODE_PARAM = _MV_CC_HB_DECODE_PARAM_T_
+
+
+
+# values for enumeration '_MV_RECORD_FORMAT_TYPE_'
+_MV_RECORD_FORMAT_TYPE_ = c_int # enum
+MV_RECORD_FORMAT_TYPE = _MV_RECORD_FORMAT_TYPE_
+
+# \~chinese 褰曞儚鍙傛暟    @~english Record Parameters
+class _MV_CC_RECORD_PARAM_T_(Structure):
+    pass
+_MV_CC_RECORD_PARAM_T_._fields_ = [
+    ('enPixelType', MvGvspPixelType),           ## @~chinese 杈撳叆鏁版嵁鐨勫儚绱犳牸寮�                                   @~english Pixel format of the input data
+    ('nWidth', c_ushort),                       ## @~chinese 鍥惧儚瀹�(鎸囧畾鐩爣鍙傛暟鏃堕渶涓�2鐨勫�嶆暟)                    @~english Image width (must be a multiple of 2 when specifying target parameters)
+    ('nHeight', c_ushort),                      ## @~chinese 鍥惧儚楂�(鎸囧畾鐩爣鍙傛暟鏃堕渶涓�2鐨勫�嶆暟)                    @~english Image height (must be a multiple of 2 when specifying target parameters)
+    ('fFrameRate', c_float),                    ## @~chinese 甯х巼fps [1/16-1000]                                   @~english Frame rate fps  [1/16-1000]    
+    ('nBitRate', c_uint),                       ## @~chinese 鐮佺巼kbps [128-16*1024]kbps                            @~english Bit rate kbps [128-16*1024]kbps   
+    ('enRecordFmtType', MV_RECORD_FORMAT_TYPE), ## @~chinese 褰曞儚鏍煎紡                                             @~english Video format
+    ('strFilePath', STRING),                    ## @~chinese 褰曞儚鏂囦欢瀛樻斁璺緞(濡傛灉璺緞涓瓨鍦ㄤ腑鏂囷紝闇�杞垚utf-8)    @~english Video file storage path (if there is Chinese in the path, it needs to be converted to utf-8)
+    ('nRes', c_uint * 8),                       ## @~chinese 淇濈暀瀛楄妭                                             @~english Reserved bytes
+]
+MV_CC_RECORD_PARAM = _MV_CC_RECORD_PARAM_T_
+
+# \~chinese 褰曞儚鏁版嵁    @~english Record Data
+class _MV_CC_INPUT_FRAME_INFO_T_(Structure):
+    pass
+_MV_CC_INPUT_FRAME_INFO_T_._fields_ = [
+    ('pData', POINTER(c_ubyte)),  ## @~chinese 鍥惧儚鏁版嵁鎸囬拡           @~english Input Data Buffer
+    ('nDataLen', c_uint),         ## @~chinese  杈撳叆鏁版嵁澶у皬          @~english Input Data Size
+    ('nRes', c_uint * 8),         ## @~chinese 淇濈暀瀛楄妭               @~english Reserved bytes
+]
+MV_CC_INPUT_FRAME_INFO = _MV_CC_INPUT_FRAME_INFO_T_
+
+# values for enumeration '_MV_CAM_ACQUISITION_MODE_'
+_MV_CAM_ACQUISITION_MODE_ = c_int # enum
+MV_CAM_ACQUISITION_MODE = _MV_CAM_ACQUISITION_MODE_
+
+# values for enumeration '_MV_CAM_GAIN_MODE_'
+_MV_CAM_GAIN_MODE_ = c_int # enum
+MV_CAM_GAIN_MODE = _MV_CAM_GAIN_MODE_
+
+# values for enumeration '_MV_CAM_EXPOSURE_MODE_'
+_MV_CAM_EXPOSURE_MODE_ = c_int # enum
+MV_CAM_EXPOSURE_MODE = _MV_CAM_EXPOSURE_MODE_
+
+# values for enumeration '_MV_CAM_EXPOSURE_AUTO_MODE_'
+_MV_CAM_EXPOSURE_AUTO_MODE_ = c_int # enum
+MV_CAM_EXPOSURE_AUTO_MODE = _MV_CAM_EXPOSURE_AUTO_MODE_
+
+# values for enumeration '_MV_CAM_TRIGGER_MODE_'
+_MV_CAM_TRIGGER_MODE_ = c_int # enum
+MV_CAM_TRIGGER_MODE = _MV_CAM_TRIGGER_MODE_
+
+# values for enumeration '_MV_CAM_GAMMA_SELECTOR_'
+_MV_CAM_GAMMA_SELECTOR_ = c_int # enum
+MV_CAM_GAMMA_SELECTOR = _MV_CAM_GAMMA_SELECTOR_
+
+# values for enumeration '_MV_CAM_BALANCEWHITE_AUTO_'
+_MV_CAM_BALANCEWHITE_AUTO_ = c_int # enum
+MV_CAM_BALANCEWHITE_AUTO = _MV_CAM_BALANCEWHITE_AUTO_
+
+# values for enumeration '_MV_CAM_TRIGGER_SOURCE_'
+_MV_CAM_TRIGGER_SOURCE_ = c_int # enum
+MV_CAM_TRIGGER_SOURCE = _MV_CAM_TRIGGER_SOURCE_
+
+
+# values for enumeration '_MV_CC_STREAM_EXCEPTION_TYPE_'
+_MV_CC_STREAM_EXCEPTION_TYPE_ = c_int # enum
+MV_CC_STREAM_EXCEPTION_TYPE = _MV_CC_STREAM_EXCEPTION_TYPE_
+
+# \~chinese 娴佸紓甯稿洖璋冧俊鎭�        @~english Stream exception callback infomation
+class _MV_CC_STREAM_EXCEPTION_INFO_T_(Structure):
+    pass
+_MV_CC_STREAM_EXCEPTION_INFO_T_._fields_ = [
+    ('chSerialNumber', c_char * INFO_MAX_BUFFER_SIZE), ## @~chinese 璁惧搴忓垪鍙�                      @~english Device serial number
+    ('nStreamIndex', c_uint),                    ## @~chinese 娴侀�氶亾搴忓彿          @~english Stream index
+    ('enExceptionType', MV_CC_STREAM_EXCEPTION_TYPE),  ## @~chinese 娴佸紓甯哥被鍨�                    @~english Exception type
+    ('nReserved', c_uint * 8),                  ## @~chinese 淇濈暀瀛楄妭                           @~english Reserved bytes
+]
+MV_CC_STREAM_EXCEPTION_INFO = _MV_CC_STREAM_EXCEPTION_INFO_T_
+
+
+# \~chinese Event浜嬩欢鍥炶皟淇℃伅\    @~english Event callback infomation
+class _MV_EVENT_OUT_INFO_(Structure):
+    pass
+_MV_EVENT_OUT_INFO_._fields_ = [
+    ('EventName', c_char * MAX_EVENT_NAME_SIZE), ## @~chinese Event鍚嶇О               @~english Event name
+    ('nEventID', c_ushort),                      ## @~chinese Event鍙�                 @~english Event ID
+    ('nStreamChannel', c_ushort),                ## @~chinese 娴侀�氶亾搴忓彿              @~english Circulation number
+    ('nBlockIdHigh', c_uint),                    ## @~chinese 甯у彿楂樹綅  (鏆傛棤鍥轰欢鏀寔)          @~english BlockId high, not support
+    ('nBlockIdLow', c_uint),                     ## @~chinese 甯у彿浣庝綅  (鏆傛棤鍥轰欢鏀寔)           @~english BlockId low, not support
+    ('nTimestampHigh', c_uint),                  ## @~chinese 鏃堕棿鎴抽珮浣�             @~english Timestramp high
+    ('nTimestampLow', c_uint),                   ## @~chinese 鏃堕棿鎴充綆浣�             @~english Timestramp low
+    ('pEventData', c_void_p),                    ## @~chinese Event鏁版嵁     (鏆傛棤鍥轰欢鏀寔)         @~english Event data, not support
+    ('nEventDataSize', c_uint),                  ## @~chinese Event鏁版嵁闀垮害 (鏆傛棤鍥轰欢鏀寔)         @~english Event data len, not support
+    ('nReserved', c_uint * 16),                  ## @~chinese 淇濈暀瀛楄妭                 @~english Reserved bytes
+]
+MV_EVENT_OUT_INFO = _MV_EVENT_OUT_INFO_
+
+# \~chinese 鏂囦欢瀛樺彇    @~english File Access
+class _MV_CC_FILE_ACCESS_T(Structure):
+    pass
+_MV_CC_FILE_ACCESS_T._fields_ = [
+    ('pUserFileName', c_char_p),  ## @~chinese 鐢ㄦ埛鏂囦欢鍚�          @~english User file name
+    ('pDevFileName', c_char_p),   ## @~chinese 璁惧鏂囦欢鍚�          @~english Device file name
+    ('nReserved', c_uint * 32), ## @~chinese 淇濈暀瀛楄妭            @~english Reserved bytes
+]
+MV_CC_FILE_ACCESS = _MV_CC_FILE_ACCESS_T
+
+# \~chinese 鏂囦欢瀛樺彇杩涘害    @~english File Access Progress
+class _MV_CC_FILE_ACCESS_PROGRESS_T(Structure):
+    pass
+_MV_CC_FILE_ACCESS_PROGRESS_T._fields_ = [
+    ('nCompleted', int64_t),     ## @~chinese 宸插畬鎴愮殑闀垮害         @~english Completed Length
+    ('nTotal', int64_t),         ## @~chinese 鎬婚暱搴�               @~english Total Length
+    ('nReserved', c_uint * 8),   ## @~chinese 淇濈暀瀛楄妭             @~english Reserved bytes
+]
+MV_CC_FILE_ACCESS_PROGRESS = _MV_CC_FILE_ACCESS_PROGRESS_T
+
+
+# \~chinese 鏂囦欢瀛樺彇                  @~english File Access
+class _MV_CC_FILE_ACCESS_E(Structure):
+    pass
+_MV_CC_FILE_ACCESS_E._fields_ = [
+    ('pUserFileBuf', POINTER(c_char)),  ## @~chinese 鐢ㄦ埛鏂囦欢鏁版嵁        @~english User file data
+    ('pFileBufSize', c_uint),  ## @~chinese 鐢ㄦ埛鏁版嵁缂撳瓨澶у皬       @~english data buffer size
+    ('pFileBufLen', c_uint),   ## @~chinese 鐢ㄦ埛鏁版嵁缂撳瓨闀垮害       @~english data buffer len
+    ('pDevFileName', c_char_p),           ## @~chinese 璁惧鏂囦欢鍚�          @~english Device file name
+    ('nReserved', c_uint * 32),         ## @~chinese 淇濈暀瀛楄妭            @~english Reserved bytes
+]
+MV_CC_FILE_ACCESS_EX = _MV_CC_FILE_ACCESS_E
+
+# values for enumeration '_MV_GIGE_TRANSMISSION_TYPE_'
+_MV_GIGE_TRANSMISSION_TYPE_ = c_int # enum
+MV_GIGE_TRANSMISSION_TYPE = _MV_GIGE_TRANSMISSION_TYPE_
+
+# 浼犺緭妯″紡锛屽彲浠ヤ负鍗曟挱妯″紡銆佺粍鎾ā寮忕瓑    @~english Transmission type
+class _MV_TRANSMISSION_TYPE_T(Structure):
+    pass
+_MV_TRANSMISSION_TYPE_T._fields_ = [
+    ('enTransmissionType', MV_GIGE_TRANSMISSION_TYPE),  ## @~chinese 浼犺緭妯″紡                      @~english Transmission type
+    ('nDestIp', c_uint),                                ## @~chinese 鐩爣IP锛岀粍鎾ā寮忎笅鏈夋剰涔�        @~english Destination IP
+    ('nDestPort', c_ushort),                            ## @~chinese 鐩爣Port锛岀粍鎾ā寮忎笅鏈夋剰涔�        @~english Destination port
+    ('nReserved', c_uint * 32),                         ## @~chinese 淇濈暀瀛楄妭                          @~english Reserved bytes
+]
+MV_TRANSMISSION_TYPE = _MV_TRANSMISSION_TYPE_T
+
+# \~chinese 鍔ㄤ綔鍛戒护淇℃伅    @~english Action Command
+class _MV_ACTION_CMD_INFO_T(Structure):
+    pass
+_MV_ACTION_CMD_INFO_T._fields_ = [
+    ('nDeviceKey', c_uint),        ## @~chinese 璁惧瀵嗛挜                                     @~english Device key
+    ('nGroupKey', c_uint),         ## @~chinese 缁勯敭                                          @~english Group key
+    ('nGroupMask', c_uint),        ## @~chinese 缁勬帺鐮�                                         @~english Group mask
+    ('bActionTimeEnable', c_uint), ## @~chinese 鍙湁璁剧疆鎴�1鏃禔ction Time鎵嶆湁鏁堬紝闈�1鏃舵棤鏁�         @~english Action time enable
+    ('nActionTime', int64_t),      ## @~chinese 棰勫畾鐨勬椂闂达紝鍜屼富棰戞湁鍏�                             @~english Action time
+    ('pBroadcastAddress', STRING), ## @~chinese 骞挎挱鍖呭湴鍧�                                         @~english Broadcast address
+    ('nTimeOut', c_uint),          ## @~chinese 绛夊緟ACK鐨勮秴鏃舵椂闂达紝濡傛灉涓�0琛ㄧず涓嶉渶瑕丄CK               @~english Timeout
+    ('bSpecialNetEnable', c_uint), ## @~chinese鍙湁璁剧疆鎴�1鏃舵寚瀹氱殑缃戝崱IP鎵嶆湁鏁堬紝闈�1鏃舵棤鏁� @~english Special IP Enable
+    ('nSpecialNetIP', c_uint),    ## @~chinese 鎸囧畾鐨勭綉鍗P                               @~english Special Net IP address
+    ('nReserved', c_uint * 14),    ## @~chinese 棰勭暀                                                 @~english Reserved bytes
+]
+MV_ACTION_CMD_INFO = _MV_ACTION_CMD_INFO_T
+
+# \~chinese 鍔ㄤ綔鍛戒护杩斿洖淇℃伅    @~english Action Command Result
+class _MV_ACTION_CMD_RESULT_T(Structure):
+    pass
+_MV_ACTION_CMD_RESULT_T._fields_ = [
+    ('strDeviceAddress', c_ubyte * 16), ## @~chinese IP閰嶇疆閫夐」         @~english IP address of the device
+    #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.
+    ('nStatus', c_int),                 ## @~chinese 鐘舵�佺爜            @~english status
+    ('nReserved', c_uint * 4),          ## @~chinese 棰勭暀              @~english Reserved bytes
+]
+MV_ACTION_CMD_RESULT = _MV_ACTION_CMD_RESULT_T
+
+# \~chinese 鍔ㄤ綔鍛戒护杩斿洖淇℃伅鍒楄〃    @~english Action Command Result List
+class _MV_ACTION_CMD_RESULT_LIST_T(Structure):
+    pass
+_MV_ACTION_CMD_RESULT_LIST_T._fields_ = [
+    ('nNumResults', c_uint),                     ## @~chinese 杩斿洖鍊间釜鏁�         @~english Num Results
+    ('pResults', POINTER(MV_ACTION_CMD_RESULT)), ## @~chinese 鍔ㄤ綔鍛戒护杩斿洖淇℃伅        @~english action command result list
+]
+MV_ACTION_CMD_RESULT_LIST = _MV_ACTION_CMD_RESULT_LIST_T
+
+# values for enumeration 'MV_XML_InterfaceType'
+MV_XML_InterfaceType = c_int # enum
+
+# values for enumeration 'MV_XML_AccessMode'
+MV_XML_AccessMode = c_int # enum
+
+
+#/ \~chinese 鑺傜偣鍚嶇О               @~english Node Name
+class _MVCC_NODE_NAME_T(Structure):
+    pass
+_MVCC_NODE_NAME_T._fields_ = [
+    ('strName', c_char * MV_MAX_NODE_NAME_LEN),           #/< \~chinese 鑺傜偣鍚嶇О                     @~english Nodes Name
+    ('nReserved', c_uint * 4),          #/< \~chinese 棰勭暀                         @~english Reserved    
+]
+MVCC_NODE_NAME = _MVCC_NODE_NAME_T
+
+#/ \~chinese 鑺傜偣鍒楄〃               @~english Node List
+class _MVCC_NODE_NAME_LIST_T(Structure):
+    pass
+_MVCC_NODE_NAME_LIST_T._fields_ = [
+    ('nNodeNum', c_uint),                                       #/< \~chinese 鑺傜偣涓暟                     @~english Number of Node
+    ('stNodeName', MVCC_NODE_NAME * MV_MAX_NODE_NUM),           #/< \~chinese 鑺傜偣鍚嶇О                     @~english Node Name
+    ('nReserved', c_uint * 4),                                  #< \~chinese 棰勭暀                         @~english Reserved
+]
+MVCC_NODE_NAME_LIST = _MVCC_NODE_NAME_LIST_T
+
+# values for enumeration '_MVCC_NODE_ERR_TYPE_'
+_MVCC_NODE_ERR_TYPE_ = c_int # enum
+MVCC_NODE_ERR_TYPE = _MVCC_NODE_ERR_TYPE_
+
+#/ \~chinese 閿欒淇℃伅               @~english Error Name
+class _MVCC_NODE_ERROR_T(Structure):
+    pass
+_MVCC_NODE_ERROR_T._fields_ = [
+    ('strName', c_char * 64),                   #/< \~chinese 鑺傜偣鍚嶇О                     @~english Nodes Name
+    ('enErrType', MVCC_NODE_ERR_TYPE),          #/< \~chinese 閿欒绫诲瀷                     @~english Error Type
+    ('nReserved', c_uint * 4),                  #< \~chinese 棰勭暀                         @~english Reserved
+]
+MVCC_NODE_ERROR = _MVCC_NODE_ERROR_T
+
+
+#/ \~chinese 閿欒淇℃伅鍒楄〃               @~english Error List
+class _MVCC_NODE_ERROR_LIST_T(Structure):
+    pass
+_MVCC_NODE_ERROR_LIST_T._fields_ = [
+    ('nErrorNum', c_uint),                  #/< \~chinese 閿欒涓暟                     @~english Number of Error
+    ('stNodeError', MVCC_NODE_ERROR * 64),  #/< \~chinese 閿欒淇℃伅                     @~english Error Name
+    ('nReserved', c_uint * 4),              #/< \~chinese 棰勭暀                         @~english Reserved
+]
+MVCC_NODE_ERROR_LIST = _MVCC_NODE_ERROR_LIST_T
+
+
+# \~chinese 鏋氫妇绫诲瀷鍊�    @~english Enumeration Value
+class _MVCC_ENUMVALUE_T(Structure):
+    pass
+_MVCC_ENUMVALUE_T._fields_ = [
+    ('nCurValue', c_uint),                               ## @~chinese 褰撳墠鍊�                @~english Current Value
+    ('nSupportedNum', c_uint),                           ## @~chinese 鏁版嵁鐨勬湁鏁堟暟鎹釜鏁�      @~english Number of valid data
+    ('nSupportValue', c_uint * MV_MAX_XML_SYMBOLIC_NUM), ## @~chinese 鏀寔鍊煎垪琛�              @~english Support value list
+    ('nReserved', c_uint * 4),                           ## @~chinese 棰勭暀                    @~english Reserved bytes
+]
+MVCC_ENUMVALUE = _MVCC_ENUMVALUE_T
+
+#/ \~chinese 鏋氫妇绫诲瀷鍊�                @~english Enumeration Value
+class _MVCC_ENUMVALUE_EX_T(Structure):
+    pass
+_MVCC_ENUMVALUE_EX_T._fields_ = [
+    ('nCurValue', c_uint),                          #\~chinese 褰撳墠鍊�                 @~english Current Value
+    ('nSupportedNum', c_uint),                      #\~chinese 鏁版嵁鐨勬湁鏁堟暟鎹釜鏁�     @~english Number of valid data
+    ('nSupportValue', c_uint * 256),                #\~chinese 鏀寔鐨勬灇涓惧��           @~english Support Value 
+    ('nReserved', c_uint * 4),                      #\~chinese 棰勭暀                   @~english Reserved
+]
+MVCC_ENUMVALUE_EX = _MVCC_ENUMVALUE_EX_T
+
+
+# \~chinese 鏋氫妇绫诲瀷鏉$洰          @~english Enumeration Entry
+class _MVCC_ENUMENTRY_T(Structure):
+    pass
+_MVCC_ENUMENTRY_T._fields_ = [
+    ('nValue', c_uint),                             ## @~chinese 鎸囧畾鍊�               @~english Value
+    ('chSymbolic', c_char * MV_MAX_SYMBOLIC_LEN),  ## @~chinese 鎸囧畾鍊煎搴旂殑绗﹀彿       @~english Symbolic
+
+    ('nReserved', c_uint * 4),                      ## @~chinese 棰勭暀                 @~english Reserved bytes
+]
+MVCC_ENUMENTRY = _MVCC_ENUMENTRY_T
+
+
+
+# \~chinese Int绫诲瀷鍊�    @~english Int Value
+class _MVCC_INTVALUE_T(Structure):
+    pass
+_MVCC_INTVALUE_T._fields_ = [
+    ('nCurValue', c_uint),     ## @~chinese 褰撳墠鍊�        @~english Current Value
+    ('nMax', c_uint),          ## @~chinese 鏈�澶у��         @~english Max Value
+    ('nMin', c_uint),          ## @~chinese 鏈�灏忓��          @~english Min Value
+    ('nInc', c_uint),          ## @~chinese 姝ュ緞             @~english Step size
+    ('nReserved', c_uint * 4), ## @~chinese 棰勭暀              @~english Reserved bytes
+]
+MVCC_INTVALUE = _MVCC_INTVALUE_T
+
+# \~chinese Int绫诲瀷鍊糆x    @~english Int Value Ex
+class _MVCC_INTVALUE_EX_T(Structure):
+    pass
+_MVCC_INTVALUE_EX_T._fields_ = [
+    ('nCurValue', int64_t),     ## @~chinese 褰撳墠鍊�         @~english Current Value
+    ('nMax', int64_t),          ## @~chinese 鏈�澶у��          @~english Max Value
+    ('nMin', int64_t),          ## @~chinese 鏈�灏忓��           @~english Min Value
+    ('nInc', int64_t),          ## @~chinese 姝ュ緞              @~english Step size
+    ('nReserved', c_uint * 16), ## @~chinese 棰勭暀               @~english Reserved bytes
+]
+MVCC_INTVALUE_EX = _MVCC_INTVALUE_EX_T
+
+# \~chinese Float绫诲瀷鍊�    @~english Float Value
+class _MVCC_FLOATVALUE_T(Structure):
+    pass
+_MVCC_FLOATVALUE_T._fields_ = [
+    ('fCurValue', c_float),    ## @~chinese 褰撳墠鍊�           @~english Current Value
+    ('fMax', c_float),         ## @~chinese 鏈�澶у��           @~english Max Value
+    ('fMin', c_float),         ## @~chinese 鏈�灏忓��           @~english Min Value
+    ('nReserved', c_uint * 4), ## @~chinese 棰勭暀             @~english Reserved bytes
+]
+MVCC_FLOATVALUE = _MVCC_FLOATVALUE_T
+
+# \~chinese String绫诲瀷鍊�    @~english String Value
+class _MVCC_STRINGVALUE_T(Structure):
+    pass
+_MVCC_STRINGVALUE_T._fields_ = [
+    ('chCurValue', c_char * 256), ## @~chinese 褰撳墠鍊�          @~english Current Value
+    ('nMaxLength', int64_t),      ## @~chinese 鏈�澶ч暱搴�        @~english Max length
+    ('nReserved', c_uint * 2),    ## @~chinese 棰勭暀            @~english Reserved bytes
+]
+MVCC_STRINGVALUE = _MVCC_STRINGVALUE_T
+
+
+# \~chinese 杈呭姪绾块鑹�                @~english Color of Auxiliary Line
+class _MVCC_COLORF(Structure):
+    pass
+_MVCC_COLORF._fields_ = [
+    ('fR', c_float),
+    ## @~chinese 绾㈣壊锛屾牴鎹儚绱犻鑹茬殑鐩稿娣卞害锛岃寖鍥翠负[0.0 , 1.0]锛屼唬琛ㄧ潃[0, 255]鐨勯鑹叉繁搴�   @~english Red锛孯ange[0.0, 1.0]
+    ('fG', c_float),
+    ## @~chinese 缁胯壊锛屾牴鎹儚绱犻鑹茬殑鐩稿娣卞害锛岃寖鍥翠负[0.0 , 1.0]锛屼唬琛ㄧ潃[0, 255]鐨勯鑹叉繁搴�   @~english Green锛孯ange[0.0, 1.0]
+    ('fB', c_float),
+    ## @~chinese 钃濊壊锛屾牴鎹儚绱犻鑹茬殑鐩稿娣卞害锛岃寖鍥翠负[0.0 , 1.0]锛屼唬琛ㄧ潃[0, 255]鐨勯鑹叉繁搴�   @~english Blue锛孯ange[0.0, 1.0]
+    ('fAlpha', c_float),
+    ## @~chinese 閫忔槑搴︼紝鏍规嵁鍍忕礌棰滆壊鐨勭浉瀵归�忔槑搴︼紝鑼冨洿涓篬0.0 , 1.0] (姝ゅ弬鏁板姛鑳芥殏涓嶆敮鎸�)    @~english Alpha锛孯ange[0.0, 1.0](Not Support)
+    ('nReserved', c_uint * 4),     ## @~chinese 淇濈暀瀛楄妭                            @~english Reserved bytes
+]
+MVCC_COLORF = _MVCC_COLORF
+
+# \~chinese 鑷畾涔夌偣                    @~english Point defined
+class _MVCC_POINTF(Structure):
+    pass
+_MVCC_POINTF._fields_ = [
+    ('fX', c_float),
+    ## @~chinese 璇ョ偣璺濈鍥惧儚宸﹁竟缂樿窛绂伙紝鏍规嵁鍥惧儚鐨勭浉瀵逛綅缃紝鑼冨洿涓篬0.0 , 1.0]   @~english Distance From Left锛孯ange[0.0, 1.0]
+    ('fY', c_float),
+    ## @~chinese 璇ョ偣璺濈鍥惧儚涓婅竟缂樿窛绂伙紝鏍规嵁鍥惧儚鐨勭浉瀵逛綅缃紝鑼冨洿涓篬0.0 , 1.0]   @~english Distance From Top锛孯ange[0.0, 1.0]
+    ('nReserved', c_uint * 4),     ## @~chinese 淇濈暀瀛楄妭                 @~english Reserved bytes
+]
+MVCC_POINTF = _MVCC_POINTF
+
+# \~chinese 鐭╁舰妗嗗尯鍩熶俊鎭�            @~english Rect Area Info
+class _MVCC_RECT_INFO(Structure):
+    pass
+_MVCC_RECT_INFO._fields_ = [
+    ('fTop', c_float),
+    ## @~chinese 鐭╁舰涓婅竟缂樿窛绂诲浘鍍忎笂杈圭紭鐨勮窛绂伙紝鏍规嵁鍥惧儚鐨勭浉瀵逛綅缃紝鑼冨洿涓篬0.0 , 1.0]   @~english Distance From Top锛孯ange[0, 1.0]
+    ('fBottom', c_float),
+    ## @~chinese 鐭╁舰涓嬭竟缂樿窛绂诲浘鍍忎笅杈圭紭鐨勮窛绂伙紝鏍规嵁鍥惧儚鐨勭浉瀵逛綅缃紝鑼冨洿涓篬0.0 , 1.0]   @~english Distance From Bottom锛孯ange[0, 1.0]
+    ('fLeft', c_float),
+    ## @~chinese 鐭╁舰宸﹁竟缂樿窛绂诲浘鍍忓乏杈圭紭鐨勮窛绂伙紝鏍规嵁鍥惧儚鐨勭浉瀵逛綅缃紝鑼冨洿涓篬0.0 , 1.0]   @~english Distance From Left锛孯ange[0, 1.0]
+    ('fRight', c_float),
+    ## @~chinese 鐭╁舰鍙宠竟缂樿窛绂诲浘鍍忓彸杈圭紭鐨勮窛绂伙紝鏍规嵁鍥惧儚鐨勭浉瀵逛綅缃紝鑼冨洿涓篬0.0 , 1.0]   @~english Distance From Right锛孯ange[0, 1.0]
+    ('stColor', MVCC_COLORF),      ## @~chinese 杈呭姪绾块鑹蹭俊鎭�                @~english Color of Auxiliary Line
+    ('nLineWidth', c_uint),        ## @~chinese 杈呭姪绾垮搴︼紝瀹藉害鍙兘鏄�1鎴�2      @~english Width of Auxiliary Line, width is 1 or 2
+    ('nReserved', c_uint * 4),     ## @~chinese 淇濈暀瀛楄妭                     @~english Reserved bytes
+]
+MVCC_RECT_INFO = _MVCC_RECT_INFO
+
+# \~chinese 鍦嗗舰妗嗗尯鍩熶俊鎭�            @~english Circle Area Info
+class _MVCC_CIRCLE_INFO(Structure):
+    pass
+_MVCC_CIRCLE_INFO._fields_ = [
+    ('stCenterPoint', MVCC_POINTF),  ## @~chinese 鍦嗗績淇℃伅                   @~english Circle Point Info
+    ('fR1', c_float),
+    ## @~chinese 瀹藉悜鍗婂緞锛屾牴鎹浘鍍忕殑鐩稿浣嶇疆[0, 1.0]锛屽崐寰勪笌鍦嗗績鐨勪綅缃湁鍏筹紝闇�淇濊瘉鐢诲嚭鐨勫渾鍦ㄦ樉绀烘鑼冨洿涔嬪唴锛屽惁鍒欐姤閿�  @~english Width Radius, Range[0, 1.0]
+    ('fR2', c_float),
+    ## @~chinese楂樺悜鍗婂緞锛屾牴鎹浘鍍忕殑鐩稿浣嶇疆[0, 1.0]锛屽崐寰勪笌鍦嗗績鐨勪綅缃湁鍏筹紝闇�淇濊瘉鐢诲嚭鐨勫渾鍦ㄦ樉绀烘鑼冨洿涔嬪唴锛屽惁鍒欐姤閿�  @~english Height Radius, Range[0, 1.0]
+    ('stColor', MVCC_COLORF),      ## @~chinese 杈呭姪绾块鑹蹭俊鎭�                @~english Color of Auxiliary Line
+    ('nLineWidth', c_uint),        ## @~chinese 杈呭姪绾垮搴︼紝瀹藉害鍙兘鏄�1鎴�2      @~english Width of Auxiliary Line, width is 1 or 2
+    ('nReserved', c_uint * 4),     ## @~chinese 淇濈暀瀛楄妭                     @~english Reserved bytes
+]
+MVCC_CIRCLE_INFO = _MVCC_CIRCLE_INFO
+
+# \~chinese 绾挎潯杈呭姪绾夸俊鎭�    @~english Linear Auxiliary Line Info
+class _MVCC_LINES_INFO(Structure):
+    pass
+_MVCC_LINES_INFO._fields_ = [
+    ('stStartPoint', MVCC_POINTF), ## @~chinese 绾挎潯杈呭姪绾跨殑璧峰鐐瑰潗鏍�         @~english The Start Point of Auxiliary Line
+    ('stEndPoint', MVCC_POINTF),   ## @~chinese绾挎潯杈呭姪绾跨殑缁堢偣鍧愭爣            @~english The End Point of Auxiliary Line
+    ('stColor', MVCC_COLORF),      ## @~chinese 杈呭姪绾块鑹蹭俊鎭�                @~english Color of Auxiliary Line
+    ('nLineWidth', c_uint),        ## @~chinese 杈呭姪绾垮搴︼紝瀹藉害鍙兘鏄�1鎴�2      @~english Width of Auxiliary Line, width is 1 or 2
+    ('nReserved', c_uint * 4),     ## @~chinese 淇濈暀瀛楄妭             @~english Reserved bytes
+]
+MVCC_LINES_INFO = _MVCC_LINES_INFO
+
+# \~chinese 鍥惧儚閲嶆瀯鍚庣殑鍥惧儚鍒楄〃      @~english List of images after image reconstruction
+class _MV_OUTPUT_IMAGE_INFO_(Structure):
+    pass
+_MV_OUTPUT_IMAGE_INFO_._fields_ = [
+    ('nWidth', c_uint),                 ## @~chinese 鍥惧儚瀹�                @~english Image Width
+    ('nHeight', c_uint),                ## @~chinese 鍥惧儚楂�                @~english Image Height
+    ('enPixelType', MvGvspPixelType),   ## @~chinese 鍍忕礌鏍煎紡               @~english pixel format
+    ('pBuf', POINTER(c_ubyte)),      ## @~chinese 杈撳嚭鏁版嵁缂撳瓨          @~english Output data buffer
+    ('nBufLen', c_uint),             ## @~chinese 杈撳嚭鏁版嵁闀垮害          @~english Output data length
+    ('nBufSize', c_uint),            ## @~chinese  鎻愪緵鐨勮緭鍑虹紦鍐插尯澶у皬  @~english Provided output buffer size
+    ('nRes', c_uint * 8),                 ## @~chinese 淇濈暀瀛楄妭             @~english Reserved bytes
+]
+MV_OUTPUT_IMAGE_INFO = _MV_OUTPUT_IMAGE_INFO_
+
+# \~chinese 閲嶆瀯鍥惧儚鍙傛暟淇℃伅      @~english Restructure image parameters
+class _MV_RECONSTRUCT_IMAGE_PARAM_(Structure):
+    pass
+_MV_RECONSTRUCT_IMAGE_PARAM_._fields_ = [
+    ('nWidth', c_uint),                 ## @~chinese 鍥惧儚瀹�                @~english Image Width
+    ('nHeight', c_uint),                ## @~chinese 鍥惧儚楂�                @~english Image Height
+    ('enPixelType', MvGvspPixelType),   ## @~chinese 鍍忕礌鏍煎紡               @~english pixel format
+    ('pSrcData', POINTER(c_ubyte)),      ## @~chinese 杈撳叆鏁版嵁缂撳瓨           @~english input data buffer
+    ('nSrcDataLen', c_uint),             ## @~chinese 杈撳叆鏁版嵁澶у皬            @~english input data size
+    ('nExposureNum', c_uint),            ## @~chinese  鏇濆厜涓暟(1-8]     @~english Exposure number
+    ('enReconstructMethod', MV_IMAGE_RECONSTRUCTION_METHOD),   ## @~chinese 鍥惧儚閲嶆瀯鏂瑰紡      @~english Image restructuring method
+    ('stDstBufList', MV_OUTPUT_IMAGE_INFO * MV_MAX_SPLIT_NUM),  ## @~chinese 杈撳嚭鏁版嵁缂撳瓨淇℃伅  @~english Output data info
+    ('nRes', c_uint * 4),                 ## @~chinese 淇濈暀瀛楄妭             @~english Reserved bytes
+]
+MV_RECONSTRUCT_IMAGE_PARAM = _MV_RECONSTRUCT_IMAGE_PARAM_
+
+
+# 涓插彛淇℃伅      @~english Serial Port Info
+class _MV_CAML_SERIAL_PORT_(Structure):
+    pass
+_MV_CAML_SERIAL_PORT_._fields_ = [
+    ('chSerialPort', c_char * INFO_MAX_BUFFER_SIZE),   ## @~chinese 涓插彛鍙�          @~english Serial Port
+    ('nRes', c_uint * 4),                              ## @~chinese 淇濈暀瀛楄妭        @~english Reserved bytes
+]
+MV_CAML_SERIAL_PORT = _MV_CAML_SERIAL_PORT_
+
+# 鏈満涓插彛鍒楄〃            @~english serial port list
+class _MV_CAML_SERIAL_PORT_LIST_(Structure):
+    pass
+_MV_CAML_SERIAL_PORT_LIST_._fields_ = [
+    ('nSerialPortNum', c_uint),                                      ## @~chinese 涓插彛鏁伴噺   @~english Serial Port Num
+    ('stSerialPort', MV_CAML_SERIAL_PORT * MV_MAX_SERIAL_PORT_NUM),  ## @~chinese 涓插彛淇℃伅   @~english Serial Port Information
+    ('nRes', c_uint * 4),  ## @~chinese 淇濈暀瀛楄妭   @~english Reserved bytes
+]
+MV_CAML_SERIAL_PORT_LIST = _MV_CAML_SERIAL_PORT_LIST_
+
+
+
+#涓嬮潰涓轰笉鎺ㄨ崘浣跨敤鐨� 瀹氫箟
+
+
+# \~chinese 鏄剧ず甯т俊鎭�   @~english Display frame information
+class _MV_DISPLAY_FRAME_INFO_(Structure):
+    pass
+_MV_DISPLAY_FRAME_INFO_._fields_ = [
+    ('hWnd', c_void_p),               ## @~chinese 绐楀彛鍙ユ焺           @~english Windows handle
+    ('pData', POINTER(c_ubyte)),      ## @~chinese 鏄剧ず鐨勬暟鎹�         @~english Data Buffer
+    ('nDataLen', c_uint),             ## @~chinese 鏁版嵁闀垮害           @~english Data Size
+    ('nWidth', c_ushort),             ## @~chinese 鍥惧儚瀹�             @~english Width
+    ('nHeight', c_ushort),            ## @~chinese 鍥惧儚楂�             @~english Height
+    ('enPixelType', MvGvspPixelType), ## @~chinese 鍍忕礌鏍煎紡           @~english Pixel format
+    ('enRenderMode', c_uint),         ## @~chinese 鍥惧儚娓叉煋鏂瑰紡 0-GDI(榛樿), 1-D3D, 2-OPENGL @~english Render mode 0-GDI(default), 1-D3D, 2-OPENGL
+    ('nRes', c_uint * 3),             ## @~chinese 淇濈暀瀛楄妭           @~english Reserved bytes
+]
+MV_DISPLAY_FRAME_INFO = _MV_DISPLAY_FRAME_INFO_
+
+
+
+# values for enumeration 'MV_SAVE_POINT_CLOUD_FILE_TYPE'
+MV_SAVE_POINT_CLOUD_FILE_TYPE = c_int # enum
+
+# \~chinese 淇濆瓨3D鏁版嵁鍒扮紦瀛�    @~english Save 3D data to buffer
+class _MV_SAVE_POINT_CLOUD_PARAM_(Structure):
+    pass
+_MV_SAVE_POINT_CLOUD_PARAM_._fields_ = [
+    ('nLinePntNum', c_uint),                                 ## @~chinese 姣忎竴琛岀偣鐨勬暟閲忥紝鍗冲浘鍍忓                                             @~english The number of points in each row,which is the width of the image
+    ('nLineNum', c_uint),                                    ## @~chinese 琛屾暟锛屽嵆鍥惧儚楂�                                                       @~english The number of rows,which is the height of the image
+    ('enSrcPixelType', MvGvspPixelType),                     ## @~chinese 杈撳叆鏁版嵁鐨勫儚绱犳牸寮�                                                    @~english The pixel format of the input data
+    ('pSrcData', POINTER(c_ubyte)),                          ## @~chinese 杈撳叆鏁版嵁缂撳瓨                                                          @~english Input data buffer
+    ('nSrcDataLen', c_uint),                                 ## @~chinese 杈撳叆鏁版嵁澶у皬                                                           @~english Input data size
+    ('pDstBuf', POINTER(c_ubyte)),                           ## @~chinese 杈撳嚭鍍忕礌鏁版嵁缂撳瓨                                                        @~english Output pixel data buffer
+    ('nDstBufSize', c_uint),                                 ## @~chinese 鎻愪緵鐨勮緭鍑虹紦鍐插尯澶у皬(nLinePntNum * nLineNum * (16*3 + 4) + 2048)         @~english Output buffer size provided (nLinePntNum * nLineNum * (16*3 + 4) + 2048) 
+    ('nDstBufLen', c_uint),                                  ## @~chinese 杈撳嚭鍍忕礌鏁版嵁缂撳瓨闀垮害                                                     @~english Output pixel data buffer size
+    ('enPointCloudFileType', MV_SAVE_POINT_CLOUD_FILE_TYPE), ## @~chinese 鎻愪緵杈撳嚭鐨勭偣浜戞枃浠剁被鍨�                                                    @~english Output point data file type provided
+    ('nReserved', c_uint * 8),                               ## @~chinese 淇濈暀瀛楄妭                                                                 @~english Reserved bytes
+]
+MV_SAVE_POINT_CLOUD_PARAM = _MV_SAVE_POINT_CLOUD_PARAM_
+
+
+
+# \~chinese 鍥剧墖淇濆瓨鍙傛暟    @~english Save Image Parameters
+class _MV_SAVE_IMAGE_PARAM_T_EX_(Structure):
+    pass
+_MV_SAVE_IMAGE_PARAM_T_EX_._fields_ = [
+    ('pData', POINTER(c_ubyte)),                            ## @~chinese 杈撳叆鏁版嵁缂撳瓨         @~english Input Data Buffer
+    ('nDataLen', c_uint),                                   ## @~chinese 杈撳叆鏁版嵁澶у皬         @~english Input Data Size
+    ('enPixelType', MvGvspPixelType),                       ## @~chinese 杈撳叆鏁版嵁鐨勫儚绱犳牸寮�         @~english Input Data Pixel Format
+    ('nWidth', c_ushort),                                   ## @~chinese 鍥惧儚瀹�         @~english Image Width
+    ('nHeight', c_ushort),                                  ## @~chinese 鍥惧儚楂�         @~english Image Height
+    ('pImageBuffer', POINTER(c_ubyte)),                     ## @~chinese 杈撳嚭鍥剧墖缂撳瓨         @~english Output Image Buffer
+    ('nImageLen', c_uint),                                  ## @~chinese 杈撳嚭鍥剧墖澶у皬         @~english Output Image Size
+    ('nBufferSize', c_uint),                                ## @~chinese 鎻愪緵鐨勮緭鍑虹紦鍐插尯澶у皬         @~english Output buffer size provided
+    ('enImageType', MV_SAVE_IAMGE_TYPE),                    ## @~chinese 杈撳嚭鍥剧墖鏍煎紡         @~english Output Image Format
+    ('nJpgQuality', c_uint),                                ## @~chinese 缂栫爜璐ㄩ噺, (50-99]         @~english Encoding quality, (50-99]
+    ## @~chinese     ch:Bayer鏍煎紡杞负RGB24鐨勬彃鍊兼柟娉� 0-蹇�� 1-鍧囪  2-鏈�浼� 3-鏈�浼�+ , RBGG/BRGG/GGRB/GGBR鐩稿叧鍍忕礌鏍煎紡涓嶆敮鎸�0鍜�3
+    ## @~english    en:Interpolation method of convert Bayer to RGB24  0-Fast 1-Equilibrium 2-Optimal 3-Optimal plus , RBGG/BRGG/GGRB/GGBR pixel formats do not support 0 and 3.
+    ('iMethodValue', c_uint),
+    ('nReserved', c_uint * 3),                              ## @~chinese 淇濈暀瀛楄妭           @~english Reserved bytes
+]
+MV_SAVE_IMAGE_PARAM_EX = _MV_SAVE_IMAGE_PARAM_T_EX_
+
+
+# \~chinese 淇濆瓨BMP銆丣PEG銆丳NG銆乀IFF鍥剧墖鏂囦欢鐨勫弬鏁�    @~english Save BMP銆丣PEG銆丳NG銆乀IFF image file parameters
+class _MV_SAVE_IMG_TO_FILE_PARAM_(Structure):
+    pass
+_MV_SAVE_IMG_TO_FILE_PARAM_._fields_ = [
+    ('enPixelType', MvGvspPixelType),    ## @~chinese 杈撳叆鏁版嵁鐨勫儚绱犳牸寮�                    @~english The pixel format of the input data
+    ('pData', POINTER(c_ubyte)),         ## @~chinese 杈撳叆鏁版嵁缂撳瓨                          @~english Input Data Buffer
+    ('nDataLen', c_uint),                ## @~chinese 杈撳叆鏁版嵁澶у皬                           @~english Input Data Size
+    ('nWidth', c_ushort),                ## @~chinese 鍥惧儚瀹�                                  @~english Image Width
+    ('nHeight', c_ushort),               ## @~chinese 鍥惧儚楂�                                   @~english Image Height
+    ('enImageType', MV_SAVE_IAMGE_TYPE), ## @~chinese 杈撳叆鍥剧墖鏍煎紡                               @~english Input Image Format
+    ('nQuality', c_uint),                ## @~chinese JPG缂栫爜璐ㄩ噺(50-99]         @~english JPG Encoding quality(50-99]
+    ('pImagePath', c_char * 256),        ## @~chinese 杈撳叆鏂囦欢璺緞         @~english Input file path
+ ## @~chinese     ch:Bayer鏍煎紡杞负RGB24鐨勬彃鍊兼柟娉� 0-蹇�� 1-鍧囪  2-鏈�浼� 3-鏈�浼�+ , RBGG/BRGG/GGRB/GGBR鐩稿叧鍍忕礌鏍煎紡涓嶆敮鎸�0鍜�3
+ ## @~english   en:Interpolation method of convert Bayer to RGB24  0-Fast 1-Equilibrium 2-Optimal 3-Optimal plus , RBGG/BRGG/GGRB/GGBR pixel formats do not support 0 and 3.
+    ('iMethodValue', c_int),             
+    ('nReserved', c_uint * 8),           ## @~chinese 淇濈暀瀛楄妭           @~english Reserved bytes
+]
+MV_SAVE_IMG_TO_FILE_PARAM = _MV_SAVE_IMG_TO_FILE_PARAM_
+
+
+# \~chinese 鍥惧儚杞崲缁撴瀯浣�    @~english Pixel convert structure
+class _MV_CC_PIXEL_CONVERT_PARAM_T_(Structure):
+    pass
+_MV_CC_PIXEL_CONVERT_PARAM_T_._fields_ = [
+    ('nWidth', c_ushort),                ## @~chinese 鍥惧儚瀹�             @~english Image Width
+    ('nHeight', c_ushort),               ## @~chinese 鍥惧儚楂�              @~english Image Height
+    ('enSrcPixelType', MvGvspPixelType), ## @~chinese 婧愬儚绱犳牸寮�            @~english Source pixel format
+    ('pSrcData', POINTER(c_ubyte)),      ## @~chinese 杈撳叆鏁版嵁缂撳瓨           @~english Input data buffer
+    ('nSrcDataLen', c_uint),             ## @~chinese 杈撳叆鏁版嵁澶у皬            @~english Input data size
+    ('enDstPixelType', MvGvspPixelType), ## @~chinese 鐩爣鍍忕礌鏍煎紡             @~english Destination pixel format
+    ('pDstBuffer', POINTER(c_ubyte)),    ## @~chinese 杈撳嚭鏁版嵁缂撳瓨              @~english Output data buffer
+    ('nDstLen', c_uint),                 ## @~chinese 杈撳嚭鏁版嵁澶у皬               @~english Output data size
+    ('nDstBufferSize', c_uint),          ## @~chinese 鎻愪緵鐨勮緭鍑虹紦鍐插尯澶у皬         @~english Provided outbut buffer size
+    ('nRes', c_uint * 4),                ## @~chinese 淇濈暀瀛楄妭                     @~english Reserved bytes
+]
+MV_CC_PIXEL_CONVERT_PARAM = _MV_CC_PIXEL_CONVERT_PARAM_T_
+
+
+__all__ = ['_MV_ALL_MATCH_INFO_', 'MV_CC_FILE_ACCESS_PROGRESS',
+           'N19_MV_CC_DEVICE_INFO_3DOT_0E', 'MV_FRAME_OUT',
+           'MV_CAM_GAIN_MODE',
+           'MV_ALL_MATCH_INFO',
+           'MV_GIGE_TRANSTYPE_UNICAST_WITHOUT_RECV',
+           'MV_TRIGGER_SOURCE_LINE0', 'MV_PointCloudFile_Undefined',
+           'MV_TRIGGER_SOURCE_LINE2', 'MV_TRIGGER_SOURCE_LINE3',
+           'AM_CycleDetect',
+           'MV_GrabStrategy_UpcomingImage', 'IFT_IFloat',
+           'MV_EVENT_OUT_INFO', 'MV_TRANSMISSION_TYPE',
+           'uint_fast16_t', 'MV_CHUNK_DATA_CONTENT','MV_ACTION_CMD_RESULT',
+           'MV_CC_INPUT_FRAME_INFO',
+           '_MV_ACTION_CMD_RESULT_T',
+           'AM_RO', 'IFT_IPort', 'uint_least16_t',
+           '_MV_FRAME_OUT_INFO_EX_', '_MV_TRANSMISSION_TYPE_T',
+           'MV_SAVE_IMAGE_PARAM_EX', 'MV_SAVE_IMAGE_PARAM_EX3', 'AM_RW', 'MV_XML_InterfaceType',
+           'int32_t', '_MV_ACTION_CMD_INFO_T', 'intptr_t',
+           'uint_least64_t', '_MV_NETTRANS_INFO_',
+           '_MV_CAM_TRIGGER_MODE_', 'int_least32_t',
+           'MV_GIGE_TRANSTYPE_SUBNETBROADCAST',
+           'MV_SAVE_POINT_CLOUD_FILE_TYPE',
+           'MV_ACTION_CMD_RESULT_LIST',
+           'MV_BALANCEWHITE_AUTO_CONTINUOUS',
+           '_MV_CHUNK_DATA_CONTENT_', 'MV_FormatType_AVI',
+           '_MV_CC_PIXEL_CONVERT_PARAM_T_','_MV_PIXEL_CONVERT_PARAM_EX_T_',
+           'MV_GENTL_IF_INFO',
+           'MV_ACQ_MODE_SINGLE',
+           'MV_TRIGGER_MODE_ON',
+           'int_least16_t', 'N22_MV_FRAME_OUT_INFO_EX_3DOT_1E',
+           'N22_MV_FRAME_OUT_INFO_EX_3DOT_2E','N22_MV_FRAME_OUT_INFO_EX_3DOT_3E',
+           'MV_GIGE_TRANSTYPE_LIMITEDBROADCAST', 'int_fast32_t',
+           '_MV_CAM_GAIN_MODE_',
+           'MV_RECORD_FORMAT_TYPE', 'MV_CC_DEVICE_INFO',
+           'IFT_ICommand', '_MV_RECORD_FORMAT_TYPE_',
+           '_MV_CAM_ACQUISITION_MODE_',
+           '_MVCC_STRINGVALUE_T',
+           'MV_GIGE_TRANSTYPE_MULTICAST_WITHOUT_RECV',
+           '_MV_MATCH_INFO_NET_DETECT_', 'MVCC_INTVALUE',
+           'MV_PointCloudFile_OBJ', '_MV_GIGE_TRANSMISSION_TYPE_',
+           '_MV_CC_RECORD_PARAM_T_',
+           '_MV_GENTL_IF_INFO_', 'MV_EXPOSURE_MODE_TIMED', 'intmax_t',
+           'int16_t',
+           'MV_DISPLAY_FRAME_INFO', '_MV_CC_FILE_ACCESS_PROGRESS_T',
+           '_MV_GRAB_STRATEGY_', '_MV_SAVE_IMG_TO_FILE_PARAM_', '_MV_SAVE_IMAGE_TO_FILE_PARAM_EX_',
+           'int_fast64_t',
+           'MV_XML_AccessMode',
+           'MV_GAIN_MODE_ONCE', 'IFT_IInteger',
+           'MV_CAM_BALANCEWHITE_AUTO', 'int_least8_t',
+           'MV_PointCloudFile_CSV', 'IFT_IBase',
+           'MV_TRIGGER_MODE_OFF', 'MV_Image_Bmp',
+           '_MV_GENTL_DEV_INFO_', 'MV_CC_FILE_ACCESS',
+           '_MV_CAM_EXPOSURE_AUTO_MODE_',
+           'uint_least8_t',
+           'MV_ACTION_CMD_INFO',
+           '_MV_CC_INPUT_FRAME_INFO_T_',
+           'MV_GENTL_DEV_INFO_LIST', '_MV_CAM_TRIGGER_SOURCE_',
+           'MV_GRAB_STRATEGY',
+           'IFT_IEnumeration', 'uint64_t', 'uint8_t',
+           '_MV_GENTL_DEV_INFO_LIST_',
+           'MV_CAM_GAMMA_SELECTOR',
+           'MV_CamL_DEV_INFO', 'MV_GENTL_IF_INFO_LIST',
+           'MV_CAM_TRIGGER_MODE', 'MV_GIGE_TRANSTYPE_MULTICAST',
+           'uint16_t', 'uint_fast8_t',
+           '_MV_ACTION_CMD_RESULT_LIST_T',
+           '_MV_MATCH_INFO_USB_DETECT_',
+           '_MVCC_ENUMVALUE_T',
+           'MV_SAVE_POINT_CLOUD_PARAM', '_MV_CC_DEVICE_INFO_',
+           'IFT_IBoolean',
+           'MV_MATCH_INFO_USB_DETECT', 'MV_PointCloudFile_PLY',
+           'MVCC_ENUMVALUE',
+           'IFT_IString',
+           'MV_ACQ_MODE_CONTINUOUS',
+           'MV_TRIGGER_SOURCE_FrequencyConverter',
+           'MV_FRAME_EXTRA_NO_INFO','MV_FRAME_EXTRA_SUBIMAGES','MV_FRAME_EXTRA_MULTIPARTS',
+           'MV_GIGE_PART_ZONE_TOP_DOWN','MV_GIGE_PART_ZONE_BOTTOM_UP',
+           'MV_GIGE_DT_2D_IMAGE_1_PLANAR','MV_GIGE_DT_2D_IMAGE_2_PLANAR','MV_GIGE_DT_2D_IMAGE_3_PLANAR','MV_GIGE_DT_2D_IMAGE_4_PLANAR', 
+           'MV_GIGE_DT_3D_IMAGE_1_PLANAR','MV_GIGE_DT_3D_IMAGE_2_PLANAR','MV_GIGE_DT_3D_IMAGE_3_PLANAR','MV_GIGE_DT_3D_IMAGE_4_PLANAR', 
+           'MV_GIGE_DT_CONFIDENCE_MAP','MV_GIGE_DT_CHUNK_DATA','MV_GIGE_DT_JPEG_IMAGE','MV_GIGE_DT_JPEG2000_IMAGE',           
+           'MV_TRIGGER_SOURCE_COUNTER0',
+           'MV_GAIN_MODE_OFF', '_MV_CC_DEVICE_INFO_LIST_',
+           'MV_GIGE_DEVICE_INFO', '_MV_SAVE_IMAGE_PARAM_T_EX_', '_MV_SAVE_IMAGE_PARAM_EX3_',
+           'AM_NA', 'uint_least32_t',
+           'MV_CC_PIXEL_CONVERT_PARAM', 'MV_CC_PIXEL_CONVERT_PARAM_EX','AM_NI',
+           '_MVCC_INTVALUE_EX_T', 'uintptr_t', 'MV_Image_Tif',
+           'MVCC_FLOATVALUE', 'MV_GIGE_TRANSTYPE_CAMERADEFINED',
+           '_MV_GENTL_IF_INFO_LIST_', 'MV_NETTRANS_INFO',
+           'IFT_IRegister', 'MV_GIGE_TRANSMISSION_TYPE',
+           'MV_EXPOSURE_AUTO_MODE_ONCE', 'MV_GIGE_TRANSTYPE_UNICAST',
+           'int8_t', '_MV_GIGE_DEVICE_INFO_', 'IFT_IValue', 'AM_WO',
+           'int_fast8_t',
+           'MV_GAMMA_SELECTOR_SRGB','int_least64_t',
+           'MV_GrabStrategy_LatestImagesOnly',
+           'MV_EXPOSURE_AUTO_MODE_OFF', 'MV_CAM_EXPOSURE_AUTO_MODE',
+           'MV_EXPOSURE_AUTO_MODE_CONTINUOUS',
+           'MV_CAM_ACQUISITION_MODE', 'AM_Undefined',
+           'MV_MATCH_INFO_NET_DETECT',
+           '_MV_CC_FILE_ACCESS_T',
+           '_MV_DISPLAY_FRAME_INFO_','MV_GrabStrategy_OneByOne',
+           'MV_TRIGGER_SOURCE_SOFTWARE', 'MV_FormatType_Undefined',
+           'MV_BALANCEWHITE_AUTO_ONCE',
+           'uintmax_t', 'int_fast16_t',
+           '_MV_CAM_EXPOSURE_MODE_','MV_BALANCEWHITE_AUTO_OFF',
+           'int64_t', 'MV_Image_Undefined', 'MV_GAIN_MODE_CONTINUOUS',
+           'uint_fast32_t',
+           'MV_CAM_TRIGGER_SOURCE', 'MV_GrabStrategy_LatestImages',
+           'MV_Image_Png',
+           'MV_Image_Jpeg', '_MV_CamL_DEV_INFO_',
+           '_MVCC_FLOATVALUE_T',
+           'MV_FRAME_OUT_INFO_EX', '_MV_SAVE_POINT_CLOUD_PARAM_',
+           '_MV_CAM_BALANCEWHITE_AUTO_', 'MV_CC_RECORD_PARAM',
+           '_MV_USB3_DEVICE_INFO_',
+           'MVCC_INTVALUE_EX', 'MV_EXPOSURE_MODE_TRIGGER_WIDTH',
+           'MV_GIGE_TRANSTYPE_UNICAST_DEFINED_PORT',
+           'MV_SAVE_IAMGE_TYPE','MV_GENTL_DEV_INFO',
+           'MV_CAM_EXPOSURE_MODE',
+           'MVCC_STRINGVALUE',
+           'MvGvspPixelType',
+           'MV_CC_DEVICE_INFO_LIST',
+           'MV_TRIGGER_SOURCE_LINE1',
+           'uint_fast64_t','_MVCC_INTVALUE_T',
+           'IFT_ICategory',
+           'MV_SAVE_IMG_TO_FILE_PARAM', 'MV_SAVE_IMAGE_TO_FILE_PARAM_EX', '_MV_FRAME_OUT_',
+           'MV_GAMMA_SELECTOR_USER',
+           'uint32_t', '_MV_CAM_GAMMA_SELECTOR_', 'MV_ACQ_MODE_MUTLI',
+           'MV_CC_ISP_CONFIG_PARAM','_MV_CC_ISP_CONFIG_PARAM_T_',
+           'MV_USB3_DEVICE_INFO', '_MV_EVENT_OUT_INFO_', 'MV_CC_FRAME_SPEC_INFO', 'MV_CC_HB_DECODE_PARAM','_MV_CC_HB_DECODE_PARAM_T_',
+           'MV_SORT_METHOD', '_MV_SORT_METHOD_',
+           'SortMethod_SerialNumber', 'SortMethod_UserID', 'SortMethod_CurrentIP_ASC', 'SortMethod_CurrentIP_DESC',
+           '_MV_IMG_ROTATION_ANGLE_', 'MV_IMG_ROTATION_ANGLE',
+           'MV_IMAGE_ROTATE_90', 'MV_IMAGE_ROTATE_180', 'MV_IMAGE_ROTATE_270',
+           '_MV_IMG_FLIP_TYPE_', 'MV_IMG_FLIP_TYPE', 'MV_FLIP_VERTICAL', 'MV_FLIP_HORIZONTAL',
+           '_MV_CC_GAMMA_TYPE_', 'MV_CC_GAMMA_TYPE', 'MV_CC_GAMMA_TYPE_NONE', 'MV_CC_GAMMA_TYPE_VALUE',
+           'MV_CC_GAMMA_TYPE_USER_CURVE', 'MV_CC_GAMMA_TYPE_LRGB2SRGB', 'MV_CC_GAMMA_TYPE_SRGB2LRGB',
+           'MV_CC_STREAM_EXCEPTION_TYPE', '_MV_CC_STREAM_EXCEPTION_TYPE_',
+           'MV_CC_STREAM_EXCEPTION_ABNORMAL_IMAGE', 'MV_CC_STREAM_EXCEPTION_LIST_OVERFLOW',
+           'MV_CC_STREAM_EXCEPTION_LIST_EMPTY', 'MV_CC_STREAM_EXCEPTION_RECONNECTION',
+           'MV_CC_STREAM_EXCEPTION_DISCONNECTED', 'MV_CC_STREAM_EXCEPTION_DEVICE', 
+           'MV_CC_STREAM_EXCEPTION_PARTIAL_IMAGE', 'MV_CC_STREAM_EXCEPTION_IMAGE_BUFFER_OVERFLOW', 
+           '_MV_IMAGE_RECONSTRUCTION_METHOD_', 'MV_IMAGE_RECONSTRUCTION_METHOD', 'MV_SPLIT_BY_LINE',
+           'MVCC_COLORF', '_MVCC_COLORF', '_MVCC_POINTF', 'MVCC_POINTF', '_MVCC_RECT_INFO', 'MVCC_RECT_INFO',
+           '_MVCC_CIRCLE_INFO', 'MVCC_CIRCLE_INFO', '_MVCC_LINES_INFO', 'MVCC_LINES_INFO', '_MV_OUTPUT_IMAGE_INFO_',
+           'MV_OUTPUT_IMAGE_INFO', 'MV_RECONSTRUCT_IMAGE_PARAM', '_MV_RECONSTRUCT_IMAGE_PARAM_',
+           '_MVCC_ENUMENTRY_T', 'MVCC_ENUMENTRY','_MV_CC_CONTRAST_PARAM_T_', 'MV_CC_CONTRAST_PARAM',
+           '_MV_CC_CCM_PARAM_EX_T_', 'MV_CC_CCM_PARAM_EX', 'MV_CC_CCM_PARAM', '_MV_CC_CCM_PARAM_T_',
+           'MV_CC_GAMMA_PARAM', '_MV_CC_GAMMA_PARAM_T_', 'MV_CC_FLIP_IMAGE_PARAM', '_MV_CC_FLIP_IMAGE_PARAM_T_',
+           '_MV_CC_ROTATE_IMAGE_PARAM_T_', 'MV_CC_ROTATE_IMAGE_PARAM', 'MV_CC_FILE_ACCESS_EX', '_MV_CC_FILE_ACCESS_E',
+           '_MV_DISPLAY_FRAME_INFO_EX_', 'MV_DISPLAY_FRAME_INFO_EX', 'MV_CML_DEVICE_INFO', '_MV_CML_DEVICE_INFO_',
+           'MV_CXP_DEVICE_INFO', '_MV_CXP_DEVICE_INFO_', '_MV_XOF_DEVICE_INFO_', 'MV_XOF_DEVICE_INFO',
+           '_MV_INTERFACE_INFO_LIST_', 'MV_INTERFACE_INFO_LIST', '_MV_INTERFACE_INFO_', 'MV_INTERFACE_INFO',
+           '_MV_CAML_SERIAL_PORT_LIST_', 'MV_CAML_SERIAL_PORT_LIST', '_MV_CAML_SERIAL_PORT_', 'MV_CAML_SERIAL_PORT',
+           'MVCC_NODE_ERR_NODE_INVALID','MVCC_NODE_ERR_ACCESS','MVCC_NODE_ERR_OUT_RANGE','MVCC_NODE_ERR_VERIFY_FAILD','MVCC_NODE_ERR_OTHER',
+           '_MV_GENTL_VIR_DEVICE_INFO_','MV_GENTL_VIR_DEVICE_INFO', 
+           '_MV_CC_IMAGE_','MV_CC_IMAGE',
+           '_MV_CC_SAVE_IMAGE_PARAM_','MV_CC_SAVE_IMAGE_PARAM',
+           '_MV_CC_PURPLE_FRINGING_PARAM_T_','MV_CC_PURPLE_FRINGING_PARAM',
+           '_MVCC_NODE_NAME_T', 'MVCC_NODE_NAME',
+           '_MVCC_NODE_NAME_LIST_T','MVCC_NODE_NAME_LIST',
+           '_MVCC_NODE_ERROR_T', 'MVCC_NODE_ERROR', 
+           '_MVCC_NODE_ERROR_LIST_T','MVCC_NODE_ERROR_LIST', 
+           '_MVCC_ENUMVALUE_EX_T', 'MVCC_ENUMVALUE_EX',
+            '_MV_FRAME_EXTRA_INFO_TYPE_', 'MV_FRAME_EXTRA_INFO_TYPE',
+            '_MV_GIGE_ZONE_DIRECTION_', 'MV_GIGE_ZONE_DIRECTION',
+            '_MV_GIGE_ZONE_INFO_', 'MV_GIGE_ZONE_INFO',
+            'N19_MV_GIGE_ZONE_INFO_3DOT_1E', 
+            'N30_MV_GIGE_MULRI_PART_DATA_INFO_3DOT_2E',
+            'N30_MV_GIGE_MULRI_PART_DATA_INFO_3DOT_3E',
+            'MV_GIGE_PART_DATA_INFO', 
+            '_MV_GIGE_MULTI_PART_DATA_TYPE_', 'MV_GIGE_MULTI_PART_DATA_TYPE',
+            '_MV_GIGE_MULTI_PART_INFO_', 'MV_GIGE_MULTI_PART_INFO',
+           '_MV_CC_STREAM_EXCEPTION_INFO_T_','MV_CC_STREAM_EXCEPTION_INFO']
diff --git a/MvImport/MvCameraControl.dll b/MvImport/MvCameraControl.dll
new file mode 100644
index 0000000..408931e
--- /dev/null
+++ b/MvImport/MvCameraControl.dll
Binary files differ
diff --git a/MvImport/MvCameraControl_class.py b/MvImport/MvCameraControl_class.py
new file mode 100644
index 0000000..13021c8
--- /dev/null
+++ b/MvImport/MvCameraControl_class.py
@@ -0,0 +1,3221 @@
+# -*- coding: utf-8 -*-
+
+import sys
+import platform
+import os
+import copy
+import ctypes
+
+from ctypes import *
+
+from PixelType_header import *
+from CameraParams_const import *
+from CameraParams_header import *
+from MvErrorDefine_const import *
+
+
+# 鏍规嵁骞冲彴璁剧疆璋冪敤绾﹀畾
+def get_platform_functype():
+    if platform.system() == 'Windows':
+        # 32浣峎indows浣跨敤WINFUNCTYPE锛�64浣嶄娇鐢–FUNCTYPE
+        if sys.maxsize <= 2**32:
+            return WINFUNCTYPE
+        else:
+            return CFUNCTYPE
+    else:
+        return CFUNCTYPE
+
+    
+def check_sys_and_update_dll():
+    # 灏咲LL鎵�鍦ㄧ洰褰曟坊鍔犲埌鎼滅储璺緞
+    os.add_dll_directory(r"D:\hikenv")
+
+    global MvCamCtrldll
+    max_size = sys.maxsize
+    bit_info =""
+    if max_size > 2**32:
+        bit_info = "64"
+    else:
+        bit_info = "32"
+    
+    MvCamCtrldllPath = ""
+    currentsystem = platform.system()
+    
+    if currentsystem == 'Windows':
+        #print(" current is windows system .")
+        MvCamCtrldllPath = r"C:\Program Files (x86)\Common Files\MVS\Runtime\Win64_x64\MvCameraControl.dll"
+        if "winmode" in ctypes.WinDLL.__init__.__code__.co_varnames:
+            MvCamCtrldll = CDLL(MvCamCtrldllPath)
+        else:
+            MvCamCtrldll = WinDLL(MvCamCtrldllPath)
+    else:
+        architecture = platform.machine()
+        if architecture == 'aarch64':
+            MvCamCtrldllPath = os.getenv('MVCAM_COMMON_RUNENV') + "/aarch64/libMvCameraControl.so"
+        elif architecture == 'x86_64':
+            if bit_info == "32":
+                MvCamCtrldllPath = os.getenv('MVCAM_COMMON_RUNENV') + "/32/libMvCameraControl.so"
+            else: 
+                MvCamCtrldllPath = os.getenv('MVCAM_COMMON_RUNENV') + "/64/libMvCameraControl.so"
+        elif architecture == 'arm-none':
+            MvCamCtrldllPath = os.getenv('MVCAM_COMMON_RUNENV') + "/arm-none/libMvCameraControl.so"
+        elif architecture == 'armhf':
+            MvCamCtrldllPath = os.getenv('MVCAM_COMMON_RUNENV') + "/armhf/libMvCameraControl.so"
+        elif architecture == 'armv6l':
+            MvCamCtrldllPath = os.getenv('MVCAM_COMMON_RUNENV') + "/armhf/libMvCameraControl.so"
+        elif architecture == 'armv7l':
+            MvCamCtrldllPath = os.getenv('MVCAM_COMMON_RUNENV') + "/armhf/libMvCameraControl.so"
+        elif architecture == 'i386':
+            MvCamCtrldllPath = os.getenv('MVCAM_COMMON_RUNENV') + "/32/libMvCameraControl.so"
+        elif architecture == 'i686':
+            MvCamCtrldllPath = os.getenv('MVCAM_COMMON_RUNENV') + "/32/libMvCameraControl.so"
+        else:
+            print ("machine: %s, not support." % architecture) 
+        
+        MvCamCtrldll = ctypes.cdll.LoadLibrary(MvCamCtrldllPath)
+        
+        
+#妫�娴嬬郴缁燂紝骞跺姞杞絪dk搴�
+check_sys_and_update_dll()
+
+
+        
+# 鐢ㄤ簬鍥炶皟鍑芥暟浼犲叆鐩告満瀹炰緥
+class _MV_PY_OBJECT_(Structure):
+    pass
+
+
+_MV_PY_OBJECT_._fields_ = [
+    ('PyObject', py_object),
+]
+MV_PY_OBJECT = _MV_PY_OBJECT_
+
+
+class MvCamera():
+
+    def __init__(self):
+        self._handle = c_void_p()  # 璁板綍褰撳墠杩炴帴璁惧鐨勫彞鏌�
+        self.handle = pointer(self._handle)  # 鍒涘缓鍙ユ焺鎸囬拡
+        
+
+    ## @addtogroup  SDK 鍒濆鍖� | en: SDK Initialization 
+    ## @{
+    
+    ##
+    #  @~chinese
+    #  @brief    鍒濆鍖朣DK
+    #  @return   鎴愬姛锛岃繑鍥濵V_OK锛涢敊璇紝杩斿洖閿欒鐮�
+
+    #  @~english
+    #  @brief  Initialize SDK  
+    #  @return  Success, return MV_OK. Failure, return error code  
+    @staticmethod
+    def MV_CC_Initialize():
+        MvCamCtrldll.MV_CC_Initialize.restype = c_int
+        return MvCamCtrldll.MV_CC_Initialize()
+
+    ##
+    #  @~chinese
+    #  @brief    鍙嶅垵濮嬪寲SDK锛岄噴鏀捐祫婧�
+    #  @return   鎴愬姛锛岃繑鍥濵V_OK锛涢敊璇紝杩斿洖閿欒鐮�
+    #  @remarks  main鍑芥暟閫�鍑哄墠璋冪敤
+
+    #  @~english
+    #  @brief   Terminate SDK  
+    #  @return  Success, return MV_OK. Failure, return error code   
+    #  @remarks  Called before the main function exits
+    @staticmethod
+    def MV_CC_Finalize():
+        MvCamCtrldll.MV_CC_Finalize.restype = c_int
+        return MvCamCtrldll.MV_CC_Finalize()
+
+    ##
+    #  @~chinese
+    #  @brief  鑾峰彇SDK鐗堟湰鍙�
+    #  @return 杩斿洖4瀛楄妭鐗堟湰鍙�
+    #       |涓�    |娆�    |淇  |  娴嬭瘯|
+    #        8bits  8bits  8bits  8bits
+    #  @remarks 姣斿杩斿洖鍊间负0x01000001锛屽嵆SDK鐗堟湰鍙蜂负V1.0.0.1銆�
+
+    #  @~english
+    #  @brief  Get SDK Version
+    #  @return Always return 4 Bytes of version number 
+    #      |Main    |Sub    |Rev  |  Test|
+    #       8bits  8bits  8bits  8bits
+    #  @remarks For example, if the return value is 0x01000001, the SDK version is V1.0.0.1.
+    @staticmethod
+    def MV_CC_GetSDKVersion():
+        MvCamCtrldll.MV_CC_GetSDKVersion.restype = c_uint
+        return MvCamCtrldll.MV_CC_GetSDKVersion()
+    ## @}
+    
+    
+
+    ## @addtogroup  ch: 鐩告満鐨勬帶鍒跺拰鍙栨祦鎺ュ彛 | en: Camera control and streaming
+    ## @{
+    
+    
+    ##
+    #  @~chinese
+    #  @brief  鏋氫妇璁惧
+    #  @param  nTLayerType                 [IN]            鏋氫妇浼犺緭灞�, 鍙傛暟瀹氫箟鍙傝CameraParams.h瀹氫箟, 濡�: #define MV_GIGE_DEVICE 0x00000001 GigE璁惧
+    #  @param  pstDevList                  [IN][OUT]       璁惧鍒楄〃
+    #  @return 鎴愬姛锛岃繑鍥濵V_OK锛涢敊璇紝杩斿洖閿欒鐮� 
+    #  @remarks 璁惧鍒楄〃鐨勫唴瀛樻槸鍦⊿DK鍐呴儴鍒嗛厤鐨勶紝澶氱嚎绋嬭皟鐢ㄨ鎺ュ彛鏃朵細杩涜璁惧鍒楄〃鍐呭瓨鐨勯噴鏀惧拰鐢宠,寤鸿灏介噺閬垮厤澶氱嚎绋嬫灇涓炬搷浣溿��
+    #  @remarks 鍙傛暟鏋氫妇浼犺緭灞傦紝閫傞厤浼犲叆MV_GIGE_DEVICE銆丮V_1394_DEVICE銆丮V_USB_DEVICE銆丮V_CAMERALINK_DEVICE锛汳V_GIGE_DEVICE璇ュ弬鏁�
+    #           浼犲嚭鎵�鏈塆iGE鐩稿叧鐨勮澶囦俊鎭紙鍖呭惈铏氭嫙GiGE鍜孏enTL涓嬬殑GiGE璁惧锛夛紝MV_USB_DEVICE璇ュ弬鏁颁紶鍑烘墍鏈塙SB璁惧锛屽寘鍚櫄鎷烾SB璁惧銆�
+
+    #  @~english
+    #  @brief  Enumerate Device
+    #  @param  nTLayerType                 [IN]            Enumerate TLs, Refer to the 'CameraParams.h' for parameter definitions, for example, #define MV_GIGE_DEVICE 0x00000001
+    #  @param  pstDevList                  [IN][OUT]       Device List
+    #  @return Success, return MV_OK. Failure, return error code 
+    #  @remarks The memory of the device list is allocated within the SDK. When the interface is invoked by multiple threads, the memory of the device list will be released and applied
+    #            It is recommended to avoid multithreaded enumeration operations as much as possible.
+    #  @remarks Transmission layer of enumeration, param only include MV_GIGE_DEVICE銆丮V_1394_DEVICE銆丮V_USB_DEVICE銆丮V_CAMERALINK_DEVICE;
+    #           MV_GIGE_DEVICE can output virtual and GenTL GiGE devices, MV_USB_DEVICE can output all USB devices, include virtual usb devices.
+    @staticmethod
+    def MV_CC_EnumDevices(nTLayerType, stDevList):
+        MvCamCtrldll.MV_CC_EnumDevices.argtype = (c_uint, c_void_p)
+        MvCamCtrldll.MV_CC_EnumDevices.restype = c_uint
+        return MvCamCtrldll.MV_CC_EnumDevices(c_uint(nTLayerType), byref(stDevList))
+
+    ##
+    #  @~chinese
+    #  @brief  鏍规嵁鍘傚晢鍚嶅瓧鏋氫妇璁惧
+    #  @param  nTLayerType                 [IN]            鏋氫妇浼犺緭灞�, 鍙傛暟瀹氫箟鍙傝CameraParams.h瀹氫箟, 濡�: #define MV_GIGE_DEVICE 0x00000001 GigE璁惧
+    #  @param  pstDevList                  [IN][OUT]       璁惧鍒楄〃
+    #  @param  strManufacturerName         [IN]            鍘傚晢鍚嶅瓧
+    #  @return 鎴愬姛锛岃繑鍥濵V_OK锛涢敊璇紝杩斿洖閿欒鐮� 
+    #  @remarks 鍙傛暟鏋氫妇浼犺緭灞傦紝閫傞厤浼犲叆MV_GIGE_DEVICE銆丮V_1394_DEVICE銆丮V_USB_DEVICE銆丮V_CAMERALINK_DEVICE锛汳V_GIGE_DEVICE璇ュ弬鏁�
+    #       浼犲嚭鎵�鏈塆iGE鐩稿叧鐨勮澶囦俊鎭紙鍖呭惈铏氭嫙GiGE鍜孏enTL涓嬬殑GiGE璁惧锛夛紝MV_USB_DEVICE璇ュ弬鏁颁紶鍑烘墍鏈塙SB璁惧锛屽寘鍚櫄鎷烾SB璁惧銆�
+    #  @remarks 璁惧鍒楄〃鐨勫唴瀛樻槸鍦⊿DK鍐呴儴鍒嗛厤鐨勶紝澶氱嚎绋嬭皟鐢ㄨ鎺ュ彛鏃朵細杩涜璁惧鍒楄〃鍐呭瓨鐨勯噴鏀惧拰鐢宠,寤鸿灏介噺閬垮厤澶氱嚎绋嬫灇涓炬搷浣溿��
+
+    #  @~english
+    #  @brief  Enumerate device according to manufacture name
+    #  @param  nTLayerType                 [IN]            Transmission layer of enumeration, , Refer to the 'CameraParams.h' for parameter definitions, for example, #define MV_GIGE_DEVICE 0x00000001
+    #  @param  pstDevList                  [IN][OUT]       Device list
+    #  @param  strManufacturerName         [IN]            Manufacture Name
+    #  @return Success, return MV_OK. Failure, return error code
+    #  @remarks Transmission layer of enumeration, param only include MV_GIGE_DEVICE銆丮V_1394_DEVICE銆丮V_USB_DEVICE銆丮V_CAMERALINK_DEVICE;
+    #        MV_GIGE_DEVICE can output virtual and GenTL GiGE devices, MV_USB_DEVICE can output all USB devices, include virtual usb devices.
+    #  @remarks The memory of the device list is allocated within the SDK. When the interface is invoked by multiple threads, the memory of the device list will be released and applied.
+    #        It is recommended to avoid multithreaded enumeration operations as much as possible.
+
+    @staticmethod
+    def MV_CC_EnumDevicesEx(nTLayerType, stDevList, strManufacturerName):
+        MvCamCtrldll.MV_CC_EnumDevicesEx.argtype = (c_uint, c_void_p, c_void_p)
+        MvCamCtrldll.MV_CC_EnumDevicesEx.restype = c_uint
+        return MvCamCtrldll.MV_CC_EnumDevicesEx(c_uint(nTLayerType), byref(stDevList),
+                                                strManufacturerName.encode('ascii'))
+
+
+    ##
+    #  @~chinese
+    #  @brief  鏋氫妇璁惧鎵╁睍锛堝彲鎸囧畾鎺掑簭鏂瑰紡鏋氫妇銆佹牴鎹巶鍟嗗悕瀛楄繃婊わ級
+    #  @param  nTLayerType                 [IN]            鏋氫妇浼犺緭灞傦紙鍖哄垎姣忎竴绉嶄紶杈撳眰绫诲瀷锛屼笉鑰﹀悎锛�, 鍙傛暟瀹氫箟鍙傝CameraParams.h瀹氫箟, 濡�: #define MV_GIGE_DEVICE 0x00000001 GigE璁惧
+    #  @param  pstDevList                  [IN][OUT]       璁惧鍒楄〃
+    #  @param  strManufacturerName         [IN]            鍘傚晢鍚嶅瓧锛堝彲浼燦ULL锛屽嵆涓嶈繃婊わ級
+    #  @param  enSortMethod                [IN]            鎺掑簭鏂瑰紡
+    #  @return 鎴愬姛锛岃繑鍥濵V_OK锛涢敊璇紝杩斿洖閿欒鐮� 
+    #  @remarks 璁惧鍒楄〃鐨勫唴瀛樻槸鍦⊿DK鍐呴儴鍒嗛厤鐨勶紝澶氱嚎绋嬭皟鐢ㄨ鎺ュ彛鏃朵細杩涜璁惧鍒楄〃鍐呭瓨鐨勯噴鏀惧拰鐢宠,寤鸿灏介噺閬垮厤澶氱嚎绋嬫灇涓炬搷浣�
+    #        strManufacturerName鍙紶鍏ULL锛岃嫢浼犲叆NULL鍒欒繑鍥炴帓濂藉簭鐨勬墍鏈夎澶囧垪琛�,鑻ヤ笉涓篘ULL鍒欏彧杩斿洖鎺掑ソ搴忕殑鎸囧畾鍘傚晢璁惧鍒楄〃銆�
+
+    #  @~english
+    #  @brief  Enumerate device according to the specified ordering
+    #  @param  nTLayerType                 [IN]            Transmission layer of enumeration(All layer protocol type can input), Refer to the 'CameraParams.h' for parameter definitions, for example, #define MV_GIGE_DEVICE 0x00000001
+    #  @param  pstDevList                  [IN][OUT]       Device list
+    #  @param  strManufacturerName         [IN]            Manufacture Name
+    #  @param  enSortMethod                [IN]            Sorting Method
+    #  @return Success, return MV_OK. Failure, return error code 
+    #  @remarks The memory of the device list is allocated within the SDK. When the interface is invoked by multiple threads, the memory of the device list will be released and applied.
+    #        It is recommended to avoid multithreaded enumeration operations as much as possible.
+    #        strManufacturerName can be passed in NULL,if NULL is passed in, it will return the sorted list of all devices.
+    #        If it is not NULL,it will only return the sorted list of the specified manufacturer's devices.
+    @staticmethod
+    def MV_CC_EnumDevicesEx2(nTLayerType, stDevList, strManufacturerName, enSortMethod):
+        MvCamCtrldll.MV_CC_EnumDevicesEx2.argtype = (c_uint, c_void_p, c_void_p, c_uint)
+        MvCamCtrldll.MV_CC_EnumDevicesEx2.restype = c_uint
+        return MvCamCtrldll.MV_CC_EnumDevicesEx2(c_uint(nTLayerType), byref(stDevList),
+                                                 strManufacturerName.encode('ascii'), c_uint(enSortMethod))
+
+    ##
+    #  @~chinese
+    #  @brief  璁惧鏄惁鍙繛鎺�
+    #  @param  pstDevInfo                  [IN]            璁惧淇℃伅缁撴瀯浣�
+    #  @param  nAccessMode                 [IN]            璁块棶鏉冮檺,鍙傛暟瀹氫箟鍙傝CameraParams.h瀹氫箟, 濡�:#define MV_ACCESS_Exclusive 1   锛堣鍙傛暟:浠呭 MV_GIGE_DEVICE/MV_GENTL_GIGE_DEVICE 绫诲瀷鐨勮澶囨湁鏁堬級
+    #  @remarks GIGE鐩告満: 璇诲彇璁惧CCP瀵勫瓨鍣ㄧ殑鍊硷紝鍒ゆ柇褰撳墠鐘舵�佹槸鍚﹀叿鏈夋煇绉嶈闂潈闄�
+    #        濡傛灉璁惧(MV_GENTL_GIGE_DEVICE/MV_GENTL_GIGE_DEVICE)涓嶆敮鎸� MV_ACCESS_ExclusiveWithSwitch銆丮V_ACCESS_ControlWithSwitch銆丮V_ACCESS_ControlSwitchEnable 銆丮V_ACCESS_ControlSwitchEnableWithKey杩欏洓绉嶆ā寮忥紝鎺ュ彛杩斿洖false銆�
+    #        锛堢洰鍓嶈澶囦笉鏀寔杩�3绉嶆姠鍗犳ā寮忥紝鍥介檯涓婁富娴佺殑鍘傚晢鐨勮澶囦篃閮芥殏涓嶆敮鎸佽繖3绉嶆ā寮忋�傦級
+    #        MV_GIGE_DEVICE/MV_GENTL_GIGE_DEVICE 绫诲瀷璁惧锛氭寜鐓AccessMode锛岃繑鍥炲綋鍓嶆槸鍚﹀彲浠ヨ杩炴帴;
+    #        璇ユ帴鍙f敮鎸� 铏氭嫙鐩告満锛孶3V鐩告満锛宑xp, xof, cameralink閲囬泦鍗$浉鏈�, nAccessMode鏃犳晥锛屽鏋滅浉鏈烘病鏈夎杩炴帴杩斿洖true锛� 濡傛灉璁惧琚涓夋柟杩炴帴锛屽垯杩斿洖false
+    #        璇ユ帴鍙d笉鏀寔CameraLink璁惧(杩斿洖false)
+    #  @~english
+    #  @brief  Is the device accessible
+    #  @param  pstDevInfo                  [IN]            Device Information Structure
+    #  @param  nAccessMode                 [IN]            Access Right, Refer to the 'CameraParams.h' for parameter definitions, for example, #define MV_ACCESS_Exclusive 1  (This parameter is only valid for devices of type MV_GIGE-DEVICE/MV_GENTL_GIGE-DEVICE)
+    #  @return Access, return true. Not access, return false
+    #  @remarks Read device CCP register value and determine current access permission.
+    #       If the device (MV_GENTL_GIGE_DEVICE/MV_GENTL_GIGE_DEVICE) does not support the MV_ACCESS_ExclusiveWithSwitch, MV_ACCESS_ControlWithSwitch, MV_ACCESS_ControlSwitchEnable, and MV_ACCESS_ControlSwitchEnableWithKey modes, the interface returns false. (At present, the device does not support these three preemptive modes, and the devices of mainstream international manufacturers do not currently support these three modes.)
+    #       MV_GIGE_DEVICE/MV_GENTL_GIGE_DEVICE type device: returns whether it can be connected according to nAccessMode;
+    #       This interface supports virtual cameras, U3V cameras, cxp, xof, cameralink capture card cameras, nAccessMode is invalid. If the camera is not connected, it returns true. If the device is connected by a third party, it returns false
+    #       This interface does not support CameraLink devices (returns false)
+    @staticmethod
+    def MV_CC_IsDeviceAccessible(stDevInfo, nAccessMode):
+        MvCamCtrldll.MV_CC_IsDeviceAccessible.argtype = (c_void_p, c_uint)
+        MvCamCtrldll.MV_CC_IsDeviceAccessible.restype = c_uint
+        return MvCamCtrldll.MV_CC_IsDeviceAccessible(byref(stDevInfo), nAccessMode)
+
+
+
+    ##
+    #  @~chinese
+    #  @brief  鍒涘缓璁惧鍙ユ焺
+    #  @param  handle                      [IN][OUT]       璁惧鍙ユ焺
+    #  @param  pstDevInfo                  [IN]            璁惧淇℃伅缁撴瀯浣�
+    #  @return 鎴愬姛锛岃繑鍥濵V_OK锛涢敊璇紝杩斿洖閿欒鐮� 
+    #  @remarks 鏍规嵁杈撳叆鐨勮澶囦俊鎭紝鍒涘缓搴撳唴閮ㄥ繀椤荤殑璧勬簮鍜屽垵濮嬪寲鍐呴儴妯″潡
+    #        閫氳繃璇ユ帴鍙e垱寤哄彞鏌勶紝璋冪敤SDK鎺ュ彛锛屼細榛樿鐢熸垚SDK鏃ュ織鏂囦欢锛屽鏋滀笉闇�瑕佺敓鎴愭棩蹇楁枃浠讹紝鍙互灏嗘棩蹇楅厤缃枃浠朵腑鐨勬棩蹇楃瓑绾ф敼鎴恛ff
+
+    #  @~english
+    #  @brief  Create Device Handle
+    #  @param  handle                      [IN][OUT]       Device handle
+    #  @param  pstDevInfo                  [IN]            Device Information Structure
+    #  @return Success, return MV_OK. Failure, return error code
+    #  @remarks Create required resources within library and initialize internal module according to input device information. 
+    #        By creating a handle through this interface and calling the SDK interface, SDK log files will be generated by default. If no log file needs to be generated, the log level in the log configuration file can be changed to off
+    def MV_CC_CreateHandle(self, stDevInfo):
+        MvCamCtrldll.MV_CC_CreateHandle.argtype = (c_void_p, c_void_p)
+        MvCamCtrldll.MV_CC_CreateHandle.restype = c_uint
+        return MvCamCtrldll.MV_CC_CreateHandle(byref(self.handle), byref(stDevInfo))
+
+    ##
+    #  @~chinese
+    #  @brief  閿�姣佽澶囧彞鏌�
+    #  @param  handle                      [IN]            璁惧鍙ユ焺
+    #  @return 鎴愬姛锛岃繑鍥濵V_OK锛涢敊璇紝杩斿洖閿欒鐮� 
+    #  @remarks MV_CC_DestroyHandle 濡傛灉浼犲叆閲囬泦鍗″彞鏌勶紝鍏舵晥鏋滃拰 MV_CC_DestroyInterface 鐩稿悓;
+
+    #  @~english
+    #  @brief  Destroy Device Handle
+    #  @param  handle                      [IN]            Device handle
+    #  @return Success, return MV_OK. Failure, return error code
+    #  @remarks If MV_CC_DestroyHandle passes in "Frame grabber handle", the effect is the same as the MV_CC_DestroyInterface
+    def MV_CC_DestroyHandle(self):
+        MvCamCtrldll.MV_CC_DestroyHandle.argtype = c_void_p
+        MvCamCtrldll.MV_CC_DestroyHandle.restype = c_uint
+        return MvCamCtrldll.MV_CC_DestroyHandle(self.handle)
+
+    ##
+    #  @~chinese
+    #  @brief  鎵撳紑璁惧
+    #  @param  handle                      [IN]            璁惧鍙ユ焺
+    #  @param  nAccessMode                 [IN]            璁块棶鏉冮檺, 鍙傛暟瀹氫箟鍙傝CameraParams.h瀹氫箟, 濡�:#define MV_ACCESS_Exclusive 1  锛堜粎瀵� MV_GIGE_DEVICE/MV_GENTL_GIGE_DEVICE 绫诲瀷鐨勮澶囨湁鏁堬級
+    #  @param  nSwitchoverKey              [IN]            鍒囨崲璁块棶鏉冮檺鏃剁殑瀵嗛挜                                                        锛堜粎瀵� MV_GIGE_DEVICE 绫诲瀷鐨勮澶囨湁鏁堬級
+    #  @return 鎴愬姛锛岃繑鍥濵V_OK锛涢敊璇紝杩斿洖閿欒鐮�
+    #  @remarks 鏍规嵁璁剧疆鐨勮澶囧弬鏁帮紝鎵惧埌瀵瑰簲鐨勮澶囷紝杩炴帴璁惧, 璋冪敤鎺ュ彛鏃跺彲涓嶄紶鍏AccessMode鍜宯SwitchoverKey锛屾鏃堕粯璁よ澶囪闂ā寮忎负鐙崰鏉冮檺銆�
+    #       MV_GIGE_DEVICE 绫诲瀷璁惧锛岀洰鍓嶇浉鏈哄浐浠舵殏涓嶆敮鎸丮V_ACCESS_ExclusiveWithSwitch銆丮V_ACCESS_ControlWithSwitch銆丮V_ACCESS_ControlSwitchEnable銆丮V_ACCESS_ControlSwitchEnableWithKey杩欏洓绉嶆姠鍗犳ā寮�, SDK鎺ュ彛鏀寔璁剧疆
+    #       MV_GENTL_GIGE_DEVICE 璁惧鍙敮鎸� nAccessMode 鏄� MV_ACCESS_Exclusive 銆丮V_ACCESS_Control 銆丮V_ACCESS_Monitor鏉冮檺
+    #       瀵逛簬U3V璁惧锛孋XP,Cameralink(MV_CAMERALINK_DEVICE銆丮V_GENTL_CAMERALINK_DEVICE), Xof璁惧, 铏氭嫙GEV, 铏氭嫙U3V璁惧锛歯AccessMode銆乶SwitchoverKey杩欎袱涓弬鏁版棤鏁堬紱 榛樿浠ユ帶鍒舵潈闄愭墦寮�璁惧;
+    #       璇ユ帴鍙f敮鎸佺綉鍙h澶囦笉鏋氫妇鐩存帴鎵撳紑锛屼笉鏀寔U鍙e拰GenTL璁惧涓嶆灇涓炬墦寮�璁惧
+
+    #  @~english
+    #  @brief  Open Device
+    #  @param  handle                      [IN]            Device handle
+    #  @param  nAccessMode                 [IN]            Access Right, Refer to the 'CameraParams.h' for parameter definitions, for example, #define MV_ACCESS_Exclusive 1 (Effective only for the device type of MV_GIGE_DEVICE/MV_GENTL_GIGE_DEVICE)
+    #  @param  nSwitchoverKey              [IN]            Switch key of access right                                                                                        (Effective only for the device type of MV_GIGE_DEVICE)
+    #  @return Success, return MV_OK. Failure, return error code
+    #  @remarks Find specific device and connect according to set device parameters.When calling the interface, the input of nAccessMode and nSwitchoverKey is optional, 
+    #        and the device access mode is exclusive. The device type of MV_GIGE_DEVICE, Currently the device firmware does not support the following preemption modes:
+    #        MV_ACCESS_ExclusiveWithSwitch, MV_ACCESS_ControlWithSwitch, MV_ACCESS_ControlSwitchEnable, MV_ACCESS_ControlSwitchEnableWithKey; SDK Interface will return MV_OK.
+    #        The device type of MV_GENTL_GIGE_DEVICE, only support nAccessMode as MV_ACCESS_Exclusive, MV_ACCESS_Control, MV_ACCESS_Monitor;
+    #        For USB3Vision device, CXP device, Cameralink device(MV_CAMERALINK_DEVICE銆丮V_GENTL_CAMERALINK_DEVICE), Xof device, virtual GEV devoce, virtual U3V device, 
+    #        nAccessMode, nSwitchoverKey are invalid. Open device with MV_ACCESS_Control in default.
+    #        This Interface support open without enumeration by GEV device锛孶SB device and GenTL device don't support .
+    def MV_CC_OpenDevice(self, nAccessMode=MV_ACCESS_Exclusive, nSwitchoverKey=0):
+        MvCamCtrldll.MV_CC_OpenDevice.argtype = (c_void_p, c_uint32, c_uint16)
+        MvCamCtrldll.MV_CC_OpenDevice.restype = c_uint
+        return MvCamCtrldll.MV_CC_OpenDevice(self.handle, nAccessMode, nSwitchoverKey)
+
+    ##
+    #  @~chinese
+    #  @brief  鍏抽棴璁惧
+    #  @param  handle                      [IN]            璁惧鍙ユ焺
+    #  @return 鎴愬姛锛岃繑鍥濵V_OK锛涢敊璇紝杩斿洖閿欒鐮�
+    #  @remarks 閫氳繃MV_CC_OpenDevice杩炴帴璁惧鍚庯紝鍙互閫氳繃璇ユ帴鍙f柇寮�璁惧杩炴帴锛岄噴鏀捐祫婧�
+
+    #  @~english
+    #  @brief  Close Device
+    #  @param  handle                      [IN]            Device handle
+    #  @return Success, return MV_OK. Failure, return error code
+    #  @remarks After connecting to device through MV_CC_OpenDevice, use this interface to disconnect and release resources.
+    def MV_CC_CloseDevice(self):
+        MvCamCtrldll.MV_CC_CloseDevice.argtype = c_void_p
+        MvCamCtrldll.MV_CC_CloseDevice.restype = c_uint
+        return MvCamCtrldll.MV_CC_CloseDevice(self.handle)
+
+    ##
+    #  @~chinese
+    #  @brief  鍒ゆ柇璁惧鏄惁澶勪簬杩炴帴鐘舵��
+    #  @param  handle                      [IN]            璁惧鍙ユ焺
+    #  @return 璁惧澶勪簬杩炴帴鐘舵�侊紝杩斿洖true锛涙病杩炴帴鎴栧け鍘昏繛鎺ワ紝杩斿洖false
+
+    #  @~english
+    #  @brief  Is The Device Connected
+    #  @param  handle                      [IN]            Device handle
+    #  @return Connected, return true. Not Connected or DIsconnected, return false
+    def MV_CC_IsDeviceConnected(self):
+        MvCamCtrldll.MV_CC_IsDeviceConnected.argtype = (c_void_p)
+        MvCamCtrldll.MV_CC_IsDeviceConnected.restype = c_bool
+        return MvCamCtrldll.MV_CC_IsDeviceConnected(self.handle)
+
+    ##
+    #  @~chinese
+    #  @brief  娉ㄥ唽鍥惧儚鏁版嵁鍥炶皟
+    #  @param  handle                      [IN]            璁惧鍙ユ焺
+    #  @param  cbOutput                    [IN]            鍥炶皟鍑芥暟鎸囬拡
+    #  @param  pUser                       [IN]            鐢ㄦ埛鑷畾涔夊彉閲�
+    #  @return 鎴愬姛锛岃繑鍥濵V_OK锛涢敊璇紝杩斿洖閿欒鐮�
+    #  @remarks 閫氳繃璇ユ帴鍙e彲浠ヨ缃浘鍍忔暟鎹洖璋冨嚱鏁帮紝鍦∕V_CC_CreateHandle涔嬪悗鍗冲彲璋冪敤, 鍥惧儚鏁版嵁閲囬泦鏈変袱绉嶆柟寮忥紝涓ょ鏂瑰紡涓嶈兘澶嶇敤锛�
+    #        鏂瑰紡涓�锛氳皟鐢∕V_CC_RegisterImageCallBackEx璁剧疆鍥惧儚鏁版嵁鍥炶皟鍑芥暟锛岀劧鍚庤皟鐢∕V_CC_StartGrabbing寮�濮嬮噰闆嗭紝閲囬泦鐨勫浘鍍忔暟鎹湪璁剧疆鐨勫洖璋冨嚱鏁颁腑杩斿洖
+    #        鏂瑰紡浜岋細璋冪敤MV_CC_StartGrabbing寮�濮嬮噰闆嗭紝鐒跺悗鍦ㄥ簲鐢ㄥ眰寰幆璋冪敤MV_CC_GetOneFrameTimeout鑾峰彇鎸囧畾鍍忕礌鏍煎紡鐨勫抚鏁版嵁锛�
+    #        鑾峰彇甯ф暟鎹椂涓婂眰搴旂敤绋嬪簭闇�瑕佹牴鎹抚鐜囨帶鍒跺ソ璋冪敤璇ユ帴鍙g殑棰戠巼銆�
+    #        璇ユ帴鍙d笉鏀寔MV_CAMERALINK_DEVICE 绫诲瀷鐨勮澶囥��
+
+    #  @~english
+    #  @brief  Register the image callback function
+    #  @param  handle                      [IN]            Device handle
+    #  @param  cbOutput                    [IN]            Callback function pointer
+    #  @param  pUser                       [IN]            User defined variable
+    #  @return Success, return MV_OK. Failure, return error code
+    #  @remarks After MV_CC_CreateHandle, call this interface to set image data callback function.There are two available image data acquisition modes, and cannot be used together:
+    #        Mode 1: Call MV_CC_RegisterImageCallBack to set image data callback function, and then callMV_CC_StartGrabbing to start acquiring. The acquired image data will return in the set callback function.
+    #        Mode 2: Call MV_CC_StartGrabbing to start acquiring, and then call MV_CC_GetOneFrameTimeout repeatedly in application layer to get frame data of specified pixel format. When getting frame data,
+    #        the frequency of calling this interface should be controlled by upper layer application according to frame rate.
+    #        This interface does not support devices of type MV_CAMERALINK_DEVICE
+    def MV_CC_RegisterImageCallBackEx(self, CallBackFun, pUser):
+        MvCamCtrldll.MV_CC_RegisterImageCallBackEx.argtype = (c_void_p, c_void_p, c_void_p)
+        MvCamCtrldll.MV_CC_RegisterImageCallBackEx.restype = c_uint
+        return MvCamCtrldll.MV_CC_RegisterImageCallBackEx(self.handle, CallBackFun, pUser)
+
+    ##
+    #  @~chinese
+    #  @brief  娉ㄥ唽鍥惧儚鏁版嵁鍥炶皟锛屽洖璋冨嚱鏁扮粨鏉熷悗锛岄渶瑕佽皟鐢∕V_CC_FreeImageBuffer鎵嶈兘鍥炴敹鍥惧儚缂撳瓨
+    #  @param  handle                      [IN]            璁惧鍙ユ焺
+    #  @param  cbOutput                    [IN]            鍥炶皟鍑芥暟鎸囬拡
+    #  @param  bAutoFree                   [IN]            鍥惧儚缂撳瓨鑷姩鍥炴敹鏍囪(true锛氬洖璋冪粨鏉熷悗锛屽浘鍍忕紦瀛樹細琚玈DK鍥炴敹锛沠alse锛氬洖璋冪粨鏉熷悗锛岄渶瑕佽皟鐢∕V_CC_FreeImageBuffer鎺ュ彛鎵嶈兘鍥炴敹鍥惧儚缂撳瓨)
+    #  @param  pUser                       [IN]            鐢ㄦ埛鑷畾涔夊彉閲�
+    #  @return 鎴愬姛锛岃繑鍥濵V_OK锛涢敊璇紝杩斿洖閿欒鐮�
+    #  @remarks 閫氳繃璇ユ帴鍙e彲浠ヨ缃浘鍍忔暟鎹洖璋冨嚱鏁帮紝鍦∕V_CC_CreateHandle涔嬪悗鍗冲彲璋冪敤銆�
+    #           鑾峰彇甯ф暟鎹椂涓婂眰搴旂敤绋嬪簭闇�瑕佹牴鎹抚鐜囨帶鍒跺ソ璋冪敤璇ユ帴鍙g殑棰戠巼銆�
+    #           璇ユ帴鍙d笉鏀寔MV_CAMERALINK_DEVICE 绫诲瀷鐨勮澶囥��
+    #           鍥炶皟鍑芥暟涓殑pstFrame鍙傛暟涓篠DK鍐呴儴涓存椂鍙橀噺锛屽叾鍐呭闇�鎷疯礉鍚庢墠鑳藉湪鍥惧儚鍥炶皟澶栦娇鐢ㄣ��
+
+    #  @~english
+    #  @brief  Register the image callback function, Call MV_CC_FreeImageBuffer() to release the buffer after the callback function ends.
+    #  @param  handle                      [IN]            Device handle
+    #  @param  cbOutput                    [IN]            Callback function pointer
+    #  @param  bAutoFree                   [IN]            It refers to the mark for automatic releasing of image buffer. (true:The image buffer will be released and reused by SDK after callback. false:After callback, it is required to call MV_CC_FreeImageBuffer() to release and reuse the image buffer.)
+    #  @param  pUser                       [IN]            User defined variable
+    #  @return Success, return MV_OK. Failure, return error code
+    #  @remarks After MV_CC_CreateHandle, call this interface to set image data callback function.
+    #           the frequency of calling this interface should be controlled by upper layer application according to frame rate.
+    #           This interface does not support devices of type MV_CAMERALINK_DEVICE
+    #           The pstFrame parameter in the callback function is an internal temporary variable of the SDK, and its content must be copied before it can be used outside the callback.
+    def MV_CC_RegisterImageCallBackEx2(self, CallBackFun, pUser, bAutoFree):
+        MvCamCtrldll.MV_CC_RegisterImageCallBackEx2.argtype = (c_void_p, c_void_p, c_void_p, ctypes.c_bool)
+        MvCamCtrldll.MV_CC_RegisterImageCallBackEx2.restype = c_uint
+        return MvCamCtrldll.MV_CC_RegisterImageCallBackEx2(self.handle, CallBackFun, pUser, ctypes.c_bool(bAutoFree))
+
+
+    ##
+    #  @~chinese
+    #  @brief  娉ㄥ唽娴佸紓甯告秷鎭洖璋�
+    #  @param  handle                      [IN]            璁惧鍙ユ焺
+    #  @param  cbException                 [IN]            寮傚父鍥炶皟鍑芥暟鎸囬拡
+    #  @param  pUser                       [IN]            鐢ㄦ埛鑷畾涔夊彉閲�
+    #  @return 鎴愬姛,杩斿洖MV_OK,澶辫触,杩斿洖閿欒鐮�
+
+    #  @~english
+    #  @brief  Register exception stream callBack
+    #  @param  handle                      [IN]            Device handle
+    #  @param  cbException                 [IN]            Exception callback function pointer
+    #  @param  pUser                       [IN]            User defined variable
+    #  @return Success, return MV_OK. Failure, return error code
+    def MV_CC_RegisterStreamExceptionCallBack(self, CallBackFun, pUser):
+        MvCamCtrldll.MV_CC_RegisterStreamExceptionCallBack.argtype = (c_void_p, c_void_p, c_void_p)
+        MvCamCtrldll.MV_CC_RegisterStreamExceptionCallBack.restype = c_uint
+        return MvCamCtrldll.MV_CC_RegisterStreamExceptionCallBack(self.handle, CallBackFun, pUser)
+        
+        
+    ##
+    #  @~chinese
+    #  @brief  寮�濮嬪彇娴�
+    #  @param  handle                      [IN]            璁惧鍙ユ焺
+    #  @return 鎴愬姛锛岃繑鍥濵V_OK锛涢敊璇紝杩斿洖閿欒鐮�
+    #  @remarks 璇ユ帴鍙d笉鏀寔MV_CAMERALINK_DEVICE 绫诲瀷鐨勮澶囥��
+
+    #  @~english
+    #  @brief  Start Grabbing
+    #  @param  handle                      [IN]            Device handle
+    #  @return Success, return MV_OK. Failure, return error code
+    #  @remarks This interface does not support devices of type MV_CAMERALINK_DEVICE
+    def MV_CC_StartGrabbing(self):
+        MvCamCtrldll.MV_CC_StartGrabbing.argtype = c_void_p
+        MvCamCtrldll.MV_CC_StartGrabbing.restype = c_uint
+        return MvCamCtrldll.MV_CC_StartGrabbing(self.handle)
+
+
+    ##
+    #  @~chinese
+    #  @brief  鍋滄鍙栨祦
+    #  @param  handle                      [IN]            璁惧鍙ユ焺
+    #  @return 鎴愬姛锛岃繑鍥濵V_OK锛涢敊璇紝杩斿洖閿欒鐮�
+    #  @remarks 璇ユ帴鍙d笉鏀寔MV_CAMERALINK_DEVICE 绫诲瀷鐨勮澶囥��
+
+    #  @~english
+    #  @brief  Stop Grabbing
+    #  @param  handle                      [IN]            Device handle
+    #  @return Success, return MV_OK. Failure, return error code
+    #  @remarks This interface does not support devices of type MV_CAMERALINK_DEVICE
+    def MV_CC_StopGrabbing(self):
+        MvCamCtrldll.MV_CC_StopGrabbing.argtype = c_void_p
+        MvCamCtrldll.MV_CC_StopGrabbing.restype = c_uint
+        return MvCamCtrldll.MV_CC_StopGrabbing(self.handle)
+
+    ##
+    #  @~chinese
+    #  @brief  浣跨敤鍐呴儴缂撳瓨鑾峰彇涓�甯у浘鐗囷紙涓嶮V_CC_Display涓嶈兘鍚屾椂浣跨敤锛�
+    #  @param  handle                      [IN]            璁惧鍙ユ焺
+    #  @param  pstFrame                    [IN][OUT]       鍥惧儚鏁版嵁鍜屽浘鍍忎俊鎭�
+    #  @param  nMsec                       [IN]            绛夊緟瓒呮椂鏃堕棿锛岃緭鍏NFINITE鏃惰〃绀烘棤闄愮瓑寰咃紝鐩村埌鏀跺埌涓�甯ф暟鎹垨鑰呭仠姝㈠彇娴�
+    #  @return 鎴愬姛锛岃繑鍥濵V_OK锛涢敊璇紝杩斿洖閿欒鐮�
+    #  @remarks 璋冪敤璇ユ帴鍙h幏鍙栧浘鍍忔暟鎹抚涔嬪墠闇�瑕佸厛璋冪敤MV_CC_StartGrabbing鍚姩鍥惧儚閲囬泦銆傝鎺ュ彛涓轰富鍔ㄥ紡鑾峰彇甯ф暟鎹紝涓婂眰搴旂敤绋嬪簭闇�瑕佹牴鎹抚鐜囷紝鎺у埗濂借皟鐢ㄨ鎺ュ彛鐨勯鐜�,
+    #        璇ユ帴鍙f敮鎸佽缃秴鏃舵椂闂达紝SDK鍐呴儴绛夊緟鐩村埌鏈夋暟鎹椂杩斿洖锛屽彲浠ュ鍔犲彇娴佸钩绋虫�э紝閫傚悎鐢ㄤ簬瀵瑰钩绋虫�ц姹傝緝楂樼殑鍦哄悎銆�
+    #        璇ユ帴鍙d笌MV_CC_FreeImageBuffer閰嶅浣跨敤锛屽綋澶勭悊瀹屽彇鍒扮殑鏁版嵁鍚庯紝闇�瑕佺敤MV_CC_FreeImageBuffer鎺ュ彛灏唒Frame鍐呯殑鏁版嵁鎸囬拡鏉冮檺杩涜閲婃斁銆�
+    #        璇ユ帴鍙d笌MV_CC_GetOneFrameTimeout鐩告瘮锛屾湁鐫�鏇撮珮鐨勬晥鐜囥�備笖鍏跺彇娴佺紦瀛樼殑鍒嗛厤鏄敱sdk鍐呴儴鑷姩鍒嗛厤鐨勶紝鑰孧V_CC_GetOneFrameTimeout鎺ュ彛鏄渶瑕佸鎴疯嚜琛屽垎閰嶃��
+    #        璇ユ帴鍙e湪璋冪敤MV_CC_Display鍚庢棤娉曞彇娴併��
+    #        璇ユ帴鍙e浜嶶3V銆丟IGE璁惧鍧囧彲鏀寔銆�
+    #        璇ユ帴鍙d笉鏀寔CameraLink璁惧銆�
+
+    #  @~english
+    #  @brief  Get a frame of an image using an internal cache
+    #  @param  handle                      [IN]            Device handle
+    #  @param  pstFrame                    [IN][OUT]       Image data and image information
+    #  @param  nMsec                       [IN]            Waiting timeout
+    #  @return Success, return MV_OK. Failure, return error code
+    #  @remarks Before calling this API to get image data frame, you should call MV_CC_StartGrabbing to start image acquisition.
+    #        This API can get frame data actively, the upper layer program should control the frequency of calling this API according to the frame rate. This API support setting timeout, and SDK will wait to return until data appears. This function will increase the streaming stability, which can be used in the situation with high stability requirement. 
+    #        This API and MV_CC_FreeImageBuffer should be called in pairs, after processing the acquired data, you should call MV_CC_FreeImageBuffer to release the data pointer permission of pFrame. 
+    #        This interface is more efficient than MV_CC_GetOneFrameTimeout. The allocation of the stream cache is automatically allocated within the SDK.The MV_CC_GetOneFrameTimeout interface needs to be allocated by customers themselves. 
+    #        This API cannot be called to stream after calling MV_CC_Display.
+    #        This API is not supported by CameraLink device. 
+    #        This API is supported by both USB3 vision camera and GigE camera. 
+    def MV_CC_GetImageBuffer(self, stFrame, nMsec):
+        MvCamCtrldll.MV_CC_GetImageBuffer.argtype = (c_void_p, c_void_p, c_uint)
+        MvCamCtrldll.MV_CC_GetImageBuffer.restype = c_uint
+        return MvCamCtrldll.MV_CC_GetImageBuffer(self.handle, byref(stFrame), nMsec)
+
+    ##
+    #  @~chinese
+    #  @brief  閲婃斁鍥惧儚缂撳瓨(姝ゆ帴鍙g敤浜庨噴鏀句笉鍐嶄娇鐢ㄧ殑鍥惧儚缂撳瓨锛屼笌MV_CC_GetImageBuffer閰嶅浣跨敤)
+    #  @param  handle                      [IN]            璁惧鍙ユ焺
+    #  @param  pstFrame                    [IN]            鍥惧儚鏁版嵁鍜屽浘鍍忔暟鎹�
+    #  @return 鎴愬姛锛岃繑鍥濵V_OK锛涢敊璇紝杩斿洖閿欒鐮�
+    #  @remarks 璇ユ帴鍙d笌MV_CC_GetImageBuffer閰嶅浣跨敤锛屼娇鐢∕V_CC_GetImageBuffer鎺ュ彛鍙栧埌鐨勫浘鍍忔暟鎹畃Frame锛岄渶瑕佺敤MV_CC_FreeImageBuffer鎺ュ彛杩涜鏉冮檺閲婃斁
+    #        璇ユ帴鍙e彇娴佹晥鐜囬珮浜嶨etOneFrameTimeout鎺ュ彛
+    #        褰揋etImageBuffer涓嶈繘琛孎reeImageBuffer鏃讹紝鏈�澶ц緭鍑哄浘鍍忎釜鏁颁负褰撳墠閰嶇疆涓婼DK鐨勭紦瀛樿妭鐐逛釜鏁�(鐢ㄦ埛鍙互璋冪敤SetImageNode鎺ュ彛锛岃皟鑺係DK鐨勭紦瀛樹釜鏁帮級
+    #        璇ユ帴鍙e浜嶶3V銆丟IGE璁惧鍧囧彲鏀寔
+    #        璇ユ帴鍙d笉鏀寔CameraLink璁惧銆�
+
+    #  @~english
+    #  @brief  Free image buffer(this interface can free image buffer, used with MV_CC_GetImageBuffer)
+    #  @param  handle                      [IN]            Device handle
+    #  @param  pstFrame                    [IN]            Image data and image information
+    #  @return Success, return MV_OK. Failure, return error code
+    #  @remarks MV_CC_FreeImageBuffer and MV_CC_GetImageBuffer API call in pairs, before calling MV_CC_GetImageBuffer to get image data pFrame, you should call MV_CC_FreeImageBuffer to release the permission.
+    #        Compared with API MV_CC_GetOneFrameTimeout
+    #        The API has higher efficiency of image acquisition. The max. number of nodes can be outputted is same as the "nNum" of  the current configuration of the SDK's cache (users can call the SetImageNode interface to adjust the SDK's cache count)
+    #        The API is not supported by CameraLink device.
+    #        The API is supported by both USB3 vision camera and GigE camera. 
+    def MV_CC_FreeImageBuffer(self, stFrame):
+        MvCamCtrldll.MV_CC_FreeImageBuffer.argtype = (c_void_p, c_void_p)
+        MvCamCtrldll.MV_CC_FreeImageBuffer.restype = c_uint
+        return MvCamCtrldll.MV_CC_FreeImageBuffer(self.handle, byref(stFrame))
+
+
+    ##
+    #  @~chinese
+    #  @brief  閲囩敤瓒呮椂鏈哄埗鑾峰彇涓�甯у浘鐗囷紝SDK鍐呴儴绛夊緟鐩村埌鏈夋暟鎹椂杩斿洖
+    #  @param  handle                      [IN]            璁惧鍙ユ焺
+    #  @param  pData                       [IN][OUT]       鍥惧儚鏁版嵁鎺ユ敹鎸囬拡
+    #  @param  nDataSize                   [IN]            鎺ユ敹缂撳瓨澶у皬
+    #  @param  pstFrameInfo                [IN][OUT]       鍥惧儚淇℃伅缁撴瀯浣�
+    #  @param  nMsec                       [IN]            绛夊緟瓒呮椂鏃堕棿
+    #  @return 鎴愬姛锛岃繑鍥濵V_OK锛涢敊璇紝杩斿洖閿欒鐮�
+    #  @remarks 璋冪敤璇ユ帴鍙h幏鍙栧浘鍍忔暟鎹抚涔嬪墠闇�瑕佸厛璋冪敤MV_CC_StartGrabbing鍚姩鍥惧儚閲囬泦
+    #        璇ユ帴鍙d负涓诲姩寮忚幏鍙栧抚鏁版嵁锛屼笂灞傚簲鐢ㄧ▼搴忛渶瑕佹牴鎹抚鐜囷紝鎺у埗濂借皟鐢ㄨ鎺ュ彛鐨勯鐜�
+    #        璇ユ帴鍙f敮鎸佽缃秴鏃舵椂闂达紝SDK鍐呴儴绛夊緟鐩村埌鏈夋暟鎹椂杩斿洖锛屽彲浠ュ鍔犲彇娴佸钩绋虫�э紝閫傚悎鐢ㄤ簬瀵瑰钩绋虫�ц姹傝緝楂樼殑鍦哄悎
+    #        璇ユ帴鍙e浜嶶3V銆丟IGE璁惧鍧囧彲鏀寔
+    #        璇ユ帴鍙d笉鏀寔CameraLink璁惧銆�
+
+    #  @~english
+    #  @brief  Timeout mechanism is used to get image, and the SDK waits inside until the data is returned
+    #  @param  handle                      [IN]            Device handle
+    #  @param  pData                       [IN][OUT]       Image data receiving buffer
+    #  @param  nDataSize                   [IN]            Buffer size
+    #  @param  pstFrameInfo                [IN][OUT]       Image information structure
+    #  @param  nMsec                       [IN]            Waiting timeout
+    #  @return Success, return MV_OK. Failure, return error code
+    #  @remarks Before calling this API to get image data frame, call MV_CC_StartGrabbing to start image acquisition.
+    #        This API can get frame data actively, the upper layer program should control the frequency of calling this API according to the frame rate.
+    #        This API supports setting timeout, SDK will wait to return until data appears. This function will increase the streaming stability, which can be used in the situation with high stability requirement.
+    #        Both the USB3Vision and GIGE camera can support this API.
+    #        This API is not supported by CameraLink device.
+    def MV_CC_GetOneFrameTimeout(self, pData, nDataSize, stFrameInfo, nMsec=1000):
+        MvCamCtrldll.MV_CC_GetOneFrameTimeout.argtype = (c_void_p, c_void_p, c_uint, c_void_p, c_uint)
+        MvCamCtrldll.MV_CC_GetOneFrameTimeout.restype = c_uint
+        return MvCamCtrldll.MV_CC_GetOneFrameTimeout(self.handle, pData, nDataSize, byref(stFrameInfo), nMsec)
+
+    ##
+    #  @~chinese
+    #  @brief  娓呴櫎鍙栨祦鏁版嵁缂撳瓨
+    #  @param  handle                      [IN]            璁惧鍙ユ焺
+    #  @return 鎴愬姛锛岃繑鍥濵V_OK锛涢敊璇紝杩斿洖閿欒鐮�
+    #  @remarks 璇ユ帴鍙e厑璁哥敤鎴峰湪涓嶅仠姝㈠彇娴佺殑鏃跺�欙紝灏辫兘娓呴櫎缂撳瓨涓笉闇�瑕佺殑鍥惧儚
+    #        璇ユ帴鍙e湪杩炵画妯″紡鍒囪Е鍙戞ā寮忓悗锛屽彲浠ユ竻闄ゅ巻鍙叉暟鎹��
+    #        璇ユ帴鍙g洰鍓嶅彧鑳芥竻闄DK鍐呴儴鐨勫浘鍍忕紦瀛橈紝閲囬泦鍗″唴鐨勭紦瀛樿繕鏃犳硶娓呴櫎銆�
+
+    #  @~english
+    #  @brief  if Image buffers has retrieved the data锛孋lear them
+    #  @param  handle                      [IN]            Device handle
+    #  @return Success, return MV_OK. Failure, return error code
+    #  @remarks This interface allows user to clear the unnecessary images from the buffer memory without stopping acquisition.
+    #        This interface allows user to clear previous data after switching from continuous mode to trigger mode. 
+    #        This interface can only clear the image cache inside the SDK, and the cache in the Frame grabber cannot be cleared.
+    def MV_CC_ClearImageBuffer(self):
+        MvCamCtrldll.MV_CC_ClearImageBuffer.argtype = (c_void_p)
+        MvCamCtrldll.MV_CC_ClearImageBuffer.restype = c_uint
+        return MvCamCtrldll.MV_CC_ClearImageBuffer(self.handle)
+
+    ##
+    #  @~chinese
+    #  @brief  鑾峰彇褰撳墠鍥惧儚缂撳瓨鍖虹殑鏈夋晥鍥惧儚涓暟
+    #  @param  handle                      [IN]            璁惧鍙ユ焺
+    #  @param  pnValidImageNum             [IN][OUT]       褰撳墠鍥惧儚缂撳瓨鍖轰腑鏈夋晥鍥惧儚涓暟鐨勬寚閽�
+    #  @return 鎴愬姛锛岃繑鍥濵V_OK锛涢敊璇紝杩斿洖閿欒鐮�
+    #  @remarks 璇ユ帴鍙e彧缁熻SDK鍐呴儴鐨勬湁鏁堝浘鍍忎釜鏁帮紝涓嶅寘鎷噰闆嗗崱缂撳瓨鍐呯殑鏈夋晥鍥惧儚涓暟
+
+    #  @~english
+    #  @brief  Get the number of valid images in the current image buffer
+    #  @param  handle                      [IN]            Device handle
+    #  @param  pnValidImageNum             [IN][OUT]       The number of valid images in the current image buffer
+    #  @return Success, return MV_OK. Failure, return error code
+    #  @remarks This interface only counts the number of valid images inside the SDK, not including the number of valid images in the capture card cache.
+    def MV_CC_GetValidImageNum(self, nValidImageNum):
+        MvCamCtrldll.MV_CC_GetValidImageNum.argtype = (c_void_p, c_void_p)
+        MvCamCtrldll.MV_CC_GetValidImageNum.restype = c_uint
+        return MvCamCtrldll.MV_CC_GetValidImageNum(self.handle, byref(nValidImageNum))
+
+    ##
+    #  @~chinese
+    #  @brief  鏄剧ず涓�甯у浘鍍�
+    #  @param  handle                      [IN]            璁惧鍙ユ焺
+    #  @param  hWnd                        [IN]            绐楀彛鍙ユ焺
+    #  @param  pstDisplayInfo              [IN]            鍥惧儚淇℃伅
+    #  @return 鎴愬姛锛岃繑鍥濵V_OK锛涢敊璇紝杩斿洖閿欒鐮�
+    #  @remarks 璇ユ帴鍙f敮鎸佹覆鏌撳楂樺ぇ灏忚嚦int绫诲瀷
+    #           娓叉煋妯″紡涓篋3D鏃讹紝鏀寔鐨勬渶澶у垎杈ㄧ巼涓�16384 # 163840
+
+    #  @~english
+    #  @brief  Display one frame image
+    #  @param  handle                      [IN]            Device handle
+    #  @param  hWnd                        [IN]            HWND
+    #  @param  pstDisplayInfo              [IN]            Frame Info
+    #  @return Success, return MV_OK. Failure, return error code
+    #  @remarks The rendering supports width and height to int type.
+    #           When the render mode is D3D, the maximum resolution supported is 16384 # 163840.
+    def MV_CC_DisplayOneFrameEx(self, hWnd, pstDisplayInfo):
+        MvCamCtrldll.MV_CC_DisplayOneFrameEx.argtype = (c_void_p, c_void_p, c_void_p)
+        MvCamCtrldll.MV_CC_DisplayOneFrameEx.restype = c_uint
+        return MvCamCtrldll.MV_CC_DisplayOneFrameEx(self.handle, hWnd, byref(pstDisplayInfo))
+
+
+    ##
+    #  @~chinese
+    #  @brief  鏄剧ず涓�甯у浘鍍�
+    #  @param  handle                      [IN]            璁惧鍙ユ焺
+    #  @param  hWnd                        [IN]            绐楀彛鍙ユ焺
+    #  @param  pstImage                    [IN]            鍥惧儚淇℃伅
+    #  @param  enRenderMode                [IN]            娓叉煋鏂瑰紡锛學indows:0-GDI 1-D3D 2-OpenGL Linux:0-OpenGL       
+    #  @return 鎴愬姛锛岃繑鍥濵V_OK锛涢敊璇紝杩斿洖閿欒鐮�
+    #  @remarks 鍙�夋嫨OpenGL娓叉煋妯″紡锛屾敮鎸丳ixelType_Gvsp_RGB8_Packed锛孭ixelType_Gvsp_BGR8_Packed锛孭ixelType_Gvsp_Mono8涓夌鍍忕礌鏍煎紡鍥惧儚澶у皬瓒呰繃4GB鐨勬覆鏌擄紝鍏朵粬娓叉煋妯″紡涓嶆敮鎸併��
+    #        鑻ュ浘鍍忓ぇ灏忔湭瓒呰繃4GB锛屾敮鎸佸楂樺ぇ灏忚嚦int绫诲瀷
+    #        璋冪敤鏃堕渶瑕佽緭鍏V_CC_IMAGE缁撴瀯浣撲腑nImageLen鐨勫��
+    #        娓叉煋妯″紡涓篋3D鏃讹紝鏀寔鐨勬渶澶у垎杈ㄧ巼涓�16384 # 163840
+
+    #  @~english
+    #  @brief  Display one frame image
+    #  @param  handle                      [IN]            Device handle
+    #  @param  hWnd                        [IN]            HWND
+    #  @param  pstImage                    [IN]            Frame Info
+    #  @param  enRenderMode                [IN]            Render mode, Windows:0-GDI 1-D3D 2-OpenGL Linux:0-OpenGL
+    #  @return Success, return MV_OK. Failure, return error code
+    #  @remarks OpenGL rendering mode can be selected, supporting three pixel formats: PixelType_Gvsp_RGB8_Packed锛孭ixelType_Gvsp_BGR8_Packed锛宎nd PixelType_Gvsp_Mono8 for rendering images with a size exceeding 4GB. 
+    #        Note that, other rendering modes are not supported.
+    #        If the image size does not exceed 4GB, the rendering supports width and height to int type.
+    #        When the render mode is D3D, the maximum resolution supported is 16384 # 163840.
+    #        When calling, the value of nImageLen in the MV_CC_IMAGE structure needs to be input.
+    def MV_CC_DisplayOneFrameEx2(self, hWnd, pstImage, enRenderMode):
+        MvCamCtrldll.MV_CC_DisplayOneFrameEx2.argtype = (c_void_p, c_void_p, c_void_p,c_uint)
+        MvCamCtrldll.MV_CC_DisplayOneFrameEx2.restype = c_uint
+        return MvCamCtrldll.MV_CC_DisplayOneFrameEx2(self.handle, hWnd, byref(pstImage), c_uint(enRenderMode))
+
+
+    ##
+    #  @~chinese
+    #  @brief  璁剧疆SDK鍐呴儴鍥惧儚缂撳瓨鑺傜偣涓暟锛屽ぇ浜庣瓑浜�1锛屽湪鎶撳浘鍓嶈皟鐢�
+    #  @param  handle                      [IN]            璁惧鍙ユ焺
+    #  @param  nNum                        [IN]            缂撳瓨鑺傜偣涓暟
+    #  @return 鎴愬姛锛岃繑鍥濵V_OK锛涢敊璇紝杩斿洖閿欒鐮�
+    #  @remarks 璋冪敤璇ユ帴鍙e彲浠ヨ缃甋DK鍐呴儴鍥惧儚缂撳瓨鑺傜偣涓暟锛屽湪璋冪敤MV_CC_StartGrabbing寮�濮嬫姄鍥惧墠璋冪敤銆�
+    #        涓嶅悓鐩告満鍥犱负鍙栨祦鏂瑰紡涓嶅悓锛屼笉璋冪敤MV_CC_SetImageNodeNum鎺ュ彛鎯呭喌涓嬶紝榛樿涓嶅悓鐩告満榛樿缂撳瓨鑺傜偣涓暟涓嶅悓
+    #        SDK瀹為檯鍒嗛厤鐨勮妭鐐逛釜鏁� = SDK鍐呴儴棰勫垎閰嶇殑涓暟 + 鐢ㄦ埛鍒嗛厤鐨勮妭鐐�(MV_CC_SetImageNodeNum)锛屽叾涓璖DK鍐呴儴棰勫垎閰嶇殑涓暟浠呬緵鍐呴儴浣跨敤锛屾瘮濡傚弻U鍐呴儴浼氬鍒嗛厤2涓妭鐐�;鑻ョ郴缁熷唴瀛樿祫婧愪笉澶�,SDK鍐呴儴浼氶噸鏂拌绠�, 浠ラ噸鏂拌绠楃殑鑺傜偣涓暟涓哄噯
+    #        鎺ュ彛涓嶆敮鎸丮V_CAMERALINK_DEVICE 绫诲瀷鐨勮澶囥��
+    #        璇ユ帴鍙d粎瀵筍DK鍐呴儴鍒嗛厤缂撳瓨妯″紡鏈夋晥锛屽閮ㄥ垎閰嶇紦瀛樻ā寮忥紙鍗宠皟鐢∕V_CC_RegisterBuffer锛夋棤鏁�;
+
+    #  @~english
+    #  @brief  Set the number of the internal image cache nodes in SDK, Greater than or equal to 1, to be called before the capture
+    #  @param  handle                      [IN]            Device handle
+    #  @param  nNum                        [IN]            Image Node Number
+    #  @return Success, return MV_OK. Failure, return error code
+    #  @remarks Call this interface to set the number of SDK internal image buffer nodes. The interface should be called before calling MV_CC_StartGrabbing for capturing. 
+    
+    #        Due to differing streaming methods among cameras, the default number of buffer nodes varies across different camera models when the MV_CC_SetImageNodeNum interface is not invoked.
+    #        The actual number of nodes allocated by the SDK = the sum of the SDK's internal pre-allocated nodes + user-specified nodes (set via MV_CC_SetImageNodeNum). The internally pre-allocated nodes are reserved for internal use only, such as the dual-U configuration which allocates an additional 2 nodes internally.
+    #        If the system memory resources are insufficient, the SDK will recalculate and use it as the actual number of nodes.
+    #        This interface does not support devices of type MV_CAMERALINK_DEVICE
+    #        This interface is only valid for the SDK's internal allocation cache mode, and the external allocation cache mode (i.e., calling MV_CC_RegisterBuffer) is invalid;
+    def MV_CC_SetImageNodeNum(self, nNum):
+        MvCamCtrldll.MV_CC_SetImageNodeNum.argtype = (c_void_p, c_uint)
+        MvCamCtrldll.MV_CC_SetImageNodeNum.restype = c_uint
+        return MvCamCtrldll.MV_CC_SetImageNodeNum(self.handle, c_uint(nNum))
+
+    ##
+    #  @~chinese
+    #  @brief  璁剧疆鍙栨祦绛栫暐
+    #  @param  handle                      [IN]            璁惧鍙ユ焺
+    #  @param  enGrabStrategy              [IN]            绛栫暐鏋氫妇鍊�
+    #  @return 鎴愬姛锛岃繑鍥濵V_OK锛涢敊璇紝杩斿洖閿欒鐮�
+    #  @remarks 璇ユ帴鍙e畾涔変簡鍥涚鍙栨祦绛栫暐锛岀敤鎴峰彲浠ユ牴鎹疄闄呴渶姹傝繘琛岄�夋嫨銆傚叿浣撴弿杩板涓嬶細
+    #           OneByOne:           浠庢棫鍒版柊涓�甯т竴甯х殑浠庤緭鍑虹紦瀛樺垪琛ㄤ腑鑾峰彇鍥惧儚锛屾墦寮�璁惧鍚庨粯璁や负璇ョ瓥鐣�
+    #           LatestImagesOnly:   浠呬粠杈撳嚭缂撳瓨鍒楄〃涓幏鍙栨渶鏂扮殑涓�甯у浘鍍忥紝鍚屾椂娓呯┖杈撳嚭缂撳瓨鍒楄〃
+    #           LatestImages:       浠庤緭鍑虹紦瀛樺垪琛ㄤ腑鑾峰彇鏈�鏂扮殑OutputQueueSize甯у浘鍍忥紝鍏朵腑OutputQueueSize鑼冨洿涓�1-ImageNodeNum锛屽彲鐢∕V_CC_SetOutputQueueSize鎺ュ彛璁剧疆锛孖mageNodeNum榛樿涓�1锛�
+    #                               鍙敤MV_CC_SetImageNodeNum鎺ュ彛璁剧疆 OutputQueueSize璁剧疆鎴�1绛夊悓浜嶭atestImagesOnly绛栫暐锛孫utputQueueSize璁剧疆鎴怚mageNodeNum绛夊悓浜嶰neByOne绛栫暐
+    #           UpcomingImage:      鍦ㄨ皟鐢ㄥ彇娴佹帴鍙f椂蹇界暐杈撳嚭缂撳瓨鍒楄〃涓墍鏈夊浘鍍忥紝骞剁瓑寰呰澶囧嵆灏嗙敓鎴愮殑涓�甯у浘鍍忋�傦紙璇ョ瓥鐣ヤ笉鏀寔MV_USB_DEVICE璁惧锛�
+    #        璇ユ帴鍙e湪Windows骞冲彴浠呮敮鎸丮V_GIGE_DEVICE銆丮V_USB_DEVICE璁惧锛屽湪Linux骞冲彴浠呮敮鎸丮V_USB_DEVICE璁惧锛�
+
+    #  @~english
+    #  @brief  Set Grab Strategy
+    #  @param  handle                      [IN]            Device handle
+    #  @param  enGrabStrategy              [IN]            The value of Grab Strategy
+    #  @return Success, return MV_OK. Failure, return error code
+    #  @remarks This interface is set by four image acquisition approaches, the user may choose one as needed. Specific details are as followed: 
+    #           OneByOne:Obtain image from output cache list frame by frame in order, this function is default strategy when device is on.
+    #           LatestImagesOnly:Obtain the latest image from output cache list only, meanwhile clear output cache list.
+    #           LatestImages:Obtain the latest OutputQueueSize image from output cache list, the range of OutputQueueSize is 1-ImageNodeNum, 
+    #                     the user may set the value of MV_CC_SetOutputQueueSizeinterface,the default value of ImageNodeNum is 1,
+    #                     If the user usesMV_CC_SetImageNodeNuminterface to set up OutputQueueSize,when the value of OutputQueueSize is set to be 1, 
+    #                     the function will be same as LatestImagesOnly; if the value of OutputQueueSize is set to be ImageNodeNum, the function will be same as OneByOne.
+    #           UpcomingImage:Ignore all images in output cache list when calling image acuiqisiotn interface, wait the next upcoming image generated.(This strategy does not support MV_USB_DEVICE device) 
+   #         This API only support MV_GIGE_DEVICE, MV_USB_DEVICE device on Windows, and only support MV_USB_DEVICE device on Linux.
+    def MV_CC_SetGrabStrategy(self, enGrabStrategy):
+        MvCamCtrldll.MV_CC_SetGrabStrategy.argtype = (c_void_p, c_uint)
+        MvCamCtrldll.MV_CC_SetGrabStrategy.restype = c_uint
+        return MvCamCtrldll.MV_CC_SetGrabStrategy(self.handle, c_uint(enGrabStrategy))
+
+
+    ##
+    #  @~chinese
+    #  @brief  璁剧疆杈撳嚭缂撳瓨涓暟锛堝彧鏈夊湪MV_GrabStrategy_LatestImages绛栫暐涓嬫墠鏈夋晥锛岃寖鍥达細1-ImageNodeNum锛�
+    #  @param  handle                      [IN]            璁惧鍙ユ焺
+    #  @param  nOutputQueueSize            [IN]            杈撳嚭缂撳瓨涓暟
+    #  @return 鎴愬姛锛岃繑鍥濵V_OK锛涢敊璇紝杩斿洖閿欒鐮�
+    #  @remarks 璇ユ帴鍙i渶涓嶭atestImages鍙栨祦绛栫暐閰嶅璋冪敤锛岀敤浜庤缃甃atestImages绛栫暐涓嬫渶澶氬厑璁哥紦瀛樺浘鍍忕殑涓暟銆傚彲浠ュ湪鍙栨祦杩囩▼涓姩鎬佽皟鑺傝緭鍑虹紦瀛樹釜鏁�
+    #        璇ユ帴鍙e湪Windows骞冲彴浠呮敮鎸丮V_GIGE_DEVICE銆丮V_USB_DEVICE璁惧锛屽湪Linux骞冲彴浠呮敮鎸丮V_USB_DEVICE璁惧锛�
+
+    #  @~english
+    #  @brief  Set The Size of Output Queue(Only work under the strategy of MV_GrabStrategy_LatestImages锛宺ang锛�1-ImageNodeNum)
+    #  @param  handle                      [IN]            Device handle
+    #  @param  nOutputQueueSize            [IN]            The Size of Output Queue
+    #  @return Success, return MV_OK. Failure, return error code
+    #  @remarks This interface must be used with LatestImages Grab strategy, it is used for setting the maximum allowance queue size of the image under the LatestImages strategy.
+    #        The user may change the output queue size while grabbing images.
+    #        This API only support MV_GIGE_DEVICE, MV_USB_DEVICE device on Windows, and only support MV_USB_DEVICE device on Linux.
+    def MV_CC_SetOutputQueueSize(self, nOutputQueueSize):
+        MvCamCtrldll.MV_CC_SetOutputQueueSize.argtype = (c_void_p, c_uint)
+        MvCamCtrldll.MV_CC_SetOutputQueueSize.restype = c_uint
+        return MvCamCtrldll.MV_CC_SetOutputQueueSize(self.handle, nOutputQueueSize)
+
+    ##
+    #  @~chinese
+    #  @brief  鑾峰彇璁惧淇℃伅锛屽彇娴佷箣鍓嶈皟鐢�
+    #  @param  handle                      [IN]            璁惧鍙ユ焺
+    #  @param  pstDevInfo                  [IN][OUT]       杩斿洖缁欒皟鐢ㄨ�呮湁鍏宠澶囦俊鎭粨鏋勪綋鎸囬拡
+    #  @return 鎴愬姛,杩斿洖MV_OK,澶辫触,杩斿洖閿欒鐮�
+    #  @remarks 鏀寔鐢ㄦ埛鍦ㄦ墦寮�璁惧鍚庤幏鍙栬澶囦俊鎭紝涓嶆敮鎸丟enTL璁惧
+    #        鑻ヨ璁惧鏄疓igE璁惧锛屽垯璋冪敤璇ユ帴鍙e瓨鍦ㄩ樆濉為闄╋紝鍥犳涓嶅缓璁湪鍙栨祦杩囩▼涓皟鐢ㄨ鎺ュ彛銆�
+
+    #  @~english
+    #  @brief  Get device information
+    #  @param  handle                      [IN]            Device handle
+    #  @param  pstDevInfo                  [IN][OUT]       Structure pointer of device information
+    #  @return Success, return MV_OK. Failure, return error code
+    #  @remarks The API support users to access device information after opening the device锛宒on't support GenTL Devices
+    #        If the device is a GigE camera, there is a blocking risk in calling the interface, so it is not recommended to call the interface during the fetching process. 
+    def MV_CC_GetDeviceInfo(self, stDevInfo):
+        MvCamCtrldll.MV_CC_GetDeviceInfo.argtype = (c_void_p, c_void_p)
+        MvCamCtrldll.MV_CC_GetDeviceInfo.restype = c_uint
+        return MvCamCtrldll.MV_CC_GetDeviceInfo(self.handle, byref(stDevInfo))
+
+
+
+    ##
+    #  @~chinese
+    #  @brief  鑾峰彇鍚勭绫诲瀷鐨勪俊鎭�
+    #  @param  handle                      [IN]            璁惧鍙ユ焺
+    #  @param  pstInfo                     [IN][OUT]       杩斿洖缁欒皟鐢ㄨ�呮湁鍏宠澶囧悇绉嶇被鍨嬬殑淇℃伅缁撴瀯浣撴寚閽�
+    #  @return 鎴愬姛,杩斿洖MV_OK,澶辫触,杩斿洖閿欒鐮�
+    #  @remarks 鎺ュ彛閲岄潰杈撳叆闇�瑕佽幏鍙栫殑淇℃伅绫诲瀷锛堟寚瀹歁V_ALL_MATCH_INFO缁撴瀯浣撲腑鐨刵Type绫诲瀷锛夛紝鑾峰彇瀵瑰簲鐨勪俊鎭紙鍦∕V_ALL_MATCH_INFO缁撴瀯浣撲腑pInfo閲岃繑鍥烇級
+    #        璇ユ帴鍙g殑璋冪敤鍓嶇疆鏉′欢鍙栧喅浜庢墍鑾峰彇鐨勪俊鎭被鍨嬶紝鑾峰彇GigE璁惧鐨凪V_MATCH_TYPE_NET_DETECT淇℃伅闇�鍦ㄥ紑鍚姄鍥句箣鍚庤皟鐢紝鑾峰彇U3V璁惧鐨凪V_MATCH_TYPE_USB_DETECT淇℃伅闇�鍦ㄦ墦寮�璁惧涔嬪悗璋冪敤
+    #        淇℃伅绫诲瀷 MV_MATCH_TYPE_NET_DETECT 瀵瑰簲缁撴瀯浣揗V_MATCH_INFO_NET_DETECT锛� 鍙敮鎸丮V_GIGE_DEVICE鐩告満/MV_GENTL_GIGE_DEVICE鐩告満
+    #        淇℃伅绫诲瀷 MV_MATCH_TYPE_USB_DETECT 瀵瑰簲缁撴瀯浣揗V_MATCH_INFO_USB_DETECT锛� 鍙敮鎸丮V_USB_DEVICE 绫诲瀷鐩告満
+    #        璇ユ帴鍙d笉鏀寔MV_CAMERALINK_DEVICE璁惧銆�
+
+    #  @~english
+    #  @brief  Get various type of information
+    #  @param  handle                      [IN]            Device handle
+    #  @param  pstInfo                     [IN][OUT]       Structure pointer of various type of information
+    #  @return Success, return MV_OK. Failure, return error code
+    #  @remarks Input required information type (specify nType in structure MV_ALL_MATCH_INFO) in the interface and get corresponding information (return in pInfo of structure MV_ALL_MATCH_INFO)
+    #        The calling precondition of this interface is determined by obtained information type. Call after enabling capture to get MV_MATCH_TYPE_NET_DETECT information of GigE device,
+    #        and call after starting device to get MV_MATCH_TYPE_USB_DETECT information of USB3Vision device.
+    #        The information type MV_MATCH_TYPE_NET_DETECT corresponds to the structure MV_MATCH_INFO_NET_DETECT, which only supports  cameras of  MV_GIGE_DEVICE and MV_GENTL_GIGE_DEVICE types
+    #        The information type MV_MATCH_TYPE_USB_DETECT corresponds to the structure MV_MATCH_INFO_USB_DETECT, which only supports cameras of MV_USB_DEVICE type
+    #        This API is not supported by MV_CAMERALINK_DEVICE device. 
+    def MV_CC_GetAllMatchInfo(self, stInfo):
+        MvCamCtrldll.MV_CC_GetAllMatchInfo.argtype = (c_void_p, c_void_p)
+        MvCamCtrldll.MV_CC_GetAllMatchInfo.restype = c_uint
+        return MvCamCtrldll.MV_CC_GetAllMatchInfo(self.handle, byref(stInfo))
+
+    ## @}
+    
+    
+    ## @addtogroup  ch: 閲囬泦鍗$殑閰嶇疆  | en: Frame grabber control 
+    ## @{
+
+    ##
+    #  @~chinese
+    #  @brief   鏋氫妇閲囬泦鍗�
+    #  @param   nTLayerType        [IN]             閲囬泦鍗℃帴鍙g被鍨� eg: (MV_GIGE_INTERFACE | MV_CAMERALINK_INTERFACE | MV_CXP_INTERFACE| MV_XOF_INTERFACE | MV_VIR_INTERFACE | MV_LC_INTERFACE锛�
+    #  @param   pInterfaceInfoList [IN][OUT]       閲囬泦鍗″垪琛�
+    #  @return  鎴愬姛锛岃繑鍥濵V_OK锛涢敊璇紝杩斿洖閿欒鐮�
+    #  @remarks 璇ユ帴鍙d笉鏀寔arm鍜孡inux32骞冲彴
+
+    #  @~english
+    #  @brief   enum Frame grabber
+    #  @param   nTLayerType         [IN]             Frame grabber Type eg: (MV_GIGE_INTERFACE | MV_CAMERALINK_INTERFACE | MV_CXP_INTERFACE| MV_XOF_INTERFACE | MV_VIR_INTERFACE | MV_LC_INTERFACE锛�
+    #  @param   pInterfaceInfoList   [IN][OUT]       Frame grabbe List
+    #  @return  Success, return MV_OK. Failure, return error code
+    #  @remarks This API do not support arm and Linux32 platform.
+    @staticmethod
+    def MV_CC_EnumInterfaces(nTLayerType, stInterfaceInfoList):
+        MvCamCtrldll.MV_CC_EnumInterfaces.argtype = (c_uint, c_void_p)
+        MvCamCtrldll.MV_CC_EnumInterfaces.restype = c_uint
+        return MvCamCtrldll.MV_CC_EnumInterfaces(c_uint(nTLayerType), byref(stInterfaceInfoList))
+
+    ##
+    #  @~chinese
+    #  @brief   鍒涘缓閲囬泦鍗″彞鏌�
+    #  @param   handle  [OUT] 閲囬泦鍗″彞鏌�
+    #  @param   pInterfaceInfo [IN] 閲囬泦鍗′俊鎭�
+    #  @return  鎴愬姛锛岃繑鍥濵V_OK锛涢敊璇紝杩斿洖閿欒鐮�
+    #  @remarks 璇ユ帴鍙d笉鏀寔arm鍜孡inux32骞冲彴
+
+    #  @~english
+    #  @brief   create Frame grabber handle
+    #  @param   handle              [OUT]      Frame grabber handle
+    #  @param   pInterfaceInfo      [IN]       Frame grabber Info
+    #  @return  Success, return MV_OK. Failure, return error code
+    #  @remarks This API do not support arm and Linux32 platform.
+    def MV_CC_CreateInterface(self, stInterfaceInfo):
+        MvCamCtrldll.MV_CC_CreateInterface.argtype = c_void_p
+        MvCamCtrldll.MV_CC_CreateInterface.restype = c_uint
+        return MvCamCtrldll.MV_CC_CreateInterface(byref(self.handle), byref(stInterfaceInfo))
+
+    ##
+    #  @~chinese
+    #  @brief   閫氳繃閲囬泦鍗D鍒涘缓閲囬泦鍗″彞鏌�
+    #  @param   handle         [IN][OUT]       閲囬泦鍗″彞鏌�
+    #  @param   pInterfaceID   [IN]            閲囬泦鍗D
+    #  @return  鎴愬姛锛岃繑鍥濵V_OK锛涢敊璇紝杩斿洖閿欒鐮�
+    #  @remarks 璇ユ帴鍙d笉鏀寔arm鍜孡inux32骞冲彴
+
+    #  @~english
+    #  @brief   create Frame grabber handle by ID
+    #  @param   handle             [IN][OUT]         Frame grabber handle
+    #  @param   pInterfaceID       [IN]              Frame grabber ID
+    #  @return  Success, return MV_OK. Failure, return error code
+    #  @remarks This API do not support arm and Linux32 platform.
+    def MV_CC_CreateInterfaceByID(self, InterfaceID):
+        MvCamCtrldll.MV_CC_CreateInterfaceByID.argtype = c_void_p
+        MvCamCtrldll.MV_CC_CreateInterfaceByID.restype = c_uint
+        return MvCamCtrldll.MV_CC_CreateInterfaceByID(byref(self.handle), InterfaceID.encode('ascii'))
+        
+    ##
+    #  @~chinese
+    #  @brief   鎵撳紑閲囬泦鍗�
+    #  @param   handle         [IN]        閲囬泦鍗″彞鏌�
+    #  @param   pReserved      [IN]        棰勭暀锛岀洿鎺ュ~NULL
+    #  @return  鎴愬姛锛岃繑鍥濵V_OK锛涢敊璇紝杩斿洖閿欒鐮�
+    #  @remarks 璇ユ帴鍙d笉鏀寔arm鍜孡inux32骞冲彴
+
+    #  @~english
+    #  @brief   open Frame grabber
+    #  @param   handle         [IN]       Frame grabber handle
+    #  @param   pReserved      [IN]       Reserved锛宒efault NULL
+    #  @return   Success, return MV_OK. Failure, return error code
+    #  @remarks This API do not support arm and Linux32 platform.
+    def MV_CC_OpenInterface(self):
+        MvCamCtrldll.MV_CC_OpenInterface.argtype = c_void_p
+        MvCamCtrldll.MV_CC_OpenInterface.restype = c_uint
+        return MvCamCtrldll.MV_CC_OpenInterface(self.handle, 0)
+
+    ##
+    #  @~chinese
+    #  @brief   鍏抽棴閲囬泦鍗�
+    #  @param   handle  [IN]       閲囬泦鍗″彞鏌�
+    #  @return  鎴愬姛锛岃繑鍥濵V_OK锛涢敊璇紝杩斿洖閿欒鐮�
+    #  @remarks 璇ユ帴鍙d笉鏀寔arm鍜孡inux32骞冲彴
+
+    #  @~english
+    #  @brief   close Frame grabber
+    #  @param   handle  [IN]          Frame grabber handle
+    #  @return   Success, return MV_OK. Failure, return error code
+    #  @remarks This API do not support arm and Linux32 platform.
+    def MV_CC_CloseInterface(self):
+        MvCamCtrldll.MV_CC_CloseInterface.argtype = c_void_p
+        MvCamCtrldll.MV_CC_CloseInterface.restype = c_uint
+        return MvCamCtrldll.MV_CC_CloseInterface(self.handle)
+
+    ##
+    #  @~chinese
+    #  @brief   閿�姣侀噰闆嗗崱鍙ユ焺
+    #  @param   handle  [IN]閲囬泦鍗″彞鏌�
+    #  @return  鎴愬姛锛岃繑鍥濵V_OK锛涢敊璇紝杩斿洖閿欒鐮�
+    #  @remarks MV_CC_DestroyInterface 濡傛灉浼犲叆鐩告満鍙ユ焺锛屽叾鏁堟灉鍜� MV_CC_DestroyHandle 鐩稿悓; 璇ユ帴鍙d笉鏀寔arm鍜孡inux32骞冲彴
+
+    #  @~english
+    #  @brief   Destroy Frame grabber handle
+    #  @param   handle  [IN] Frame grabber handle
+    #  @return  Success, return MV_OK. Failure, return error code
+    #  @remarks If MV_CC_DestroyInterface passes in "Device handle", the effect is the same as the MV_CC_DestroyHandle. This API do not support arm and Linux32 platform.
+    def MV_CC_DestroyInterface(self):
+        MvCamCtrldll.MV_CC_DestroyInterface.argtype = c_void_p
+        MvCamCtrldll.MV_CC_DestroyInterface.restype = c_uint
+        return MvCamCtrldll.MV_CC_DestroyInterface(self.handle)
+
+
+    ##
+    #  @~chinese
+    #  @brief  閫氳繃閲囬泦鍗″彞鏌勬灇涓捐澶�
+    #  @param  handle                    [IN]            閲囬泦鍗″彞鏌�
+    #  @param  pstDevList                [OUT]           璁惧鍒楄〃
+    #  @return 鎴愬姛锛岃繑鍥濵V_OK锛涢敊璇紝杩斿洖閿欒鐮�
+    #  @remarks 璁惧鍒楄〃鐨勫唴瀛樻槸鍦⊿DK鍐呴儴鍒嗛厤鐨勶紝澶氱嚎绋嬭皟鐢ㄨ鎺ュ彛鏃朵細杩涜璁惧鍒楄〃鍐呭瓨鐨勯噴鏀惧拰鐢宠
+    #           寤鸿灏介噺閬垮厤澶氱嚎绋嬫灇涓炬搷浣溿��
+
+    #  @~english
+    #  @brief  Enumerate Devices with interface handle
+    #  @param  handle                   [IN]            Interface information
+    #  @param  pstDevList               [OUT]           Device List
+    #  @return Success, return MV_OK. Failure, return error code
+    #  @remarks The memory of the list is allocated within the SDK. When the interface is invoked by multiple threads, the memory of the device list will be released and applied
+    #           It is recommended to avoid multithreaded enumeration operations as much as possible.
+    def MV_CC_EnumDevicesByInterface(self, stDevList):
+        MvCamCtrldll.MV_CC_EnumDevicesByInterface.argtype = (c_void_p, c_void_p)
+        MvCamCtrldll.MV_CC_EnumDevicesByInterface.restype = c_uint
+        return MvCamCtrldll.MV_CC_EnumDevicesByInterface(self.handle, byref(stDevList))
+    ## @}
+
+
+    ## @addtogroup  ch: 鐩告満/閲囬泦鍗″睘鎬т竾鑳介厤缃帴鍙� | en: Camera /Frame grabber attribute nodes universal interface
+    ## @{
+
+
+    ##
+    #  @~chinese
+    #  @brief  鑾峰彇Integer灞炴�у��
+    #  @param  handle                      [IN]            璁惧鍙ユ焺/閲囬泦鍗″彞鏌�
+    #  @param  strKey                      [IN]            灞炴�ч敭鍊硷紝濡傝幏鍙栧搴︿俊鎭垯涓�"Width"
+    #  @param  pstIntValue                 [IN][OUT]       杩斿洖缁欒皟鐢ㄨ�呮湁鍏宠澶囧睘鎬х粨鏋勪綋鎸囬拡
+    #  @return 鎴愬姛,杩斿洖MV_OK,澶辫触,杩斿洖閿欒鐮�
+    #  @remarks 杩炴帴璁惧涔嬪悗璋冪敤璇ユ帴鍙e彲浠ヨ幏鍙杋nt绫诲瀷鐨勬寚瀹氳妭鐐圭殑鍊笺��
+
+    #  @~english
+    #  @brief  Get Integer value
+    #  @param  handle                      [IN]            Device handle/Frame grabber handle
+    #  @param  strKey                      [IN]            Key value, for example, using "Width" to get width
+    #  @param  pstIntValue                 [IN][OUT]       Structure pointer of camera features
+    #  @return Success, return MV_OK. Failure, return error code
+    #  @remarks You can call this API to get the value of camera node with integer type after connecting the device. 
+    def MV_CC_GetIntValueEx(self, strKey, stIntValue):
+        MvCamCtrldll.MV_CC_GetIntValueEx.argtype = (c_void_p, c_void_p, c_void_p)
+        MvCamCtrldll.MV_CC_GetIntValueEx.restype = c_uint
+        return MvCamCtrldll.MV_CC_GetIntValueEx(self.handle, strKey.encode('ascii'), byref(stIntValue))
+
+    ##
+    #  @~chinese
+    #  @brief  璁剧疆Integer鍨嬪睘鎬у��
+    #  @param  handle                      [IN]            璁惧鍙ユ焺/閲囬泦鍗″彞鏌�
+    #  @param  strKey                      [IN]            灞炴�ч敭鍊硷紝濡傝幏鍙栧搴︿俊鎭垯涓�"Width"
+    #  @param  nValue                      [IN]            鎯宠璁剧疆鐨勮澶囩殑灞炴�у��
+    #  @return 鎴愬姛,杩斿洖MV_OK,澶辫触,杩斿洖閿欒鐮�
+    #  @remarks 杩炴帴璁惧涔嬪悗璋冪敤璇ユ帴鍙e彲浠ヨ缃甶nt绫诲瀷鐨勬寚瀹氳妭鐐圭殑鍊笺��
+
+    #  @~english
+    #  @brief  Set Integer value
+    #  @param  handle                      [IN]            Device handle/Frame grabber handle
+    #  @param  strKey                      [IN]            Key value, for example, using "Width" to set width
+    #  @param  nValue                      [IN]            Feature value to set
+    #  @return Success, return MV_OK. Failure, return error code
+    #  @remarks You can call this API to get the value of camera node with integer type after connecting the device. 
+    def MV_CC_SetIntValueEx(self, strKey, nValue):
+        MvCamCtrldll.MV_CC_SetIntValueEx.argtype = (c_void_p, c_void_p, c_int64)
+        MvCamCtrldll.MV_CC_SetIntValueEx.restype = c_uint
+        return MvCamCtrldll.MV_CC_SetIntValueEx(self.handle, strKey.encode('ascii'), c_int64(nValue))
+
+
+    ##
+    #  @~chinese
+    #  @brief  鑾峰彇Enum灞炴�у��
+    #  @param  handle                      [IN]            璁惧鍙ユ焺/閲囬泦鍗″彞鏌�
+    #  @param  strKey                      [IN]            灞炴�ч敭鍊硷紝濡傝幏鍙栧儚绱犳牸寮忎俊鎭垯涓�"PixelFormat"
+    #  @param  pstEnumValue                [IN][OUT]       杩斿洖缁欒皟鐢ㄨ�呮湁鍏宠澶囧睘鎬х粨鏋勪綋鎸囬拡
+    #  @return 鎴愬姛,杩斿洖MV_OK,澶辫触,杩斿洖閿欒鐮�
+    #  @remarks 杩炴帴璁惧涔嬪悗璋冪敤璇ユ帴鍙e彲浠ヨ幏鍙朎num绫诲瀷鐨勬寚瀹氳妭鐐圭殑鍊笺��
+
+    #  @~english
+    #  @brief  Get Enum value
+    #  @param  handle                      [IN]            Device handle/Frame grabber handle
+    #  @param  strKey                      [IN]            Key value, for example, using "PixelFormat" to get pixel format
+    #  @param  pstEnumValue                [IN][OUT]       Structure pointer of camera features
+    #  @return Success, return MV_OK. Failure, return error code
+    #  @remarks After the device is connected, call this interface to get specified Enum nodes. 
+    def MV_CC_GetEnumValue(self, strKey, stEnumValue):
+        MvCamCtrldll.MV_CC_GetEnumValue.argtype = (c_void_p, c_void_p, c_void_p)
+        MvCamCtrldll.MV_CC_GetEnumValue.restype = c_uint
+        return MvCamCtrldll.MV_CC_GetEnumValue(self.handle, strKey.encode('ascii'), byref(stEnumValue))
+
+    ##
+    #  @~chinese
+    #  @brief  鑾峰彇Enum灞炴�у��
+    #  @param  handle                      [IN]            璁惧鍙ユ焺/閲囬泦鍗″彞鏌�
+    #  @param  strKey                      [IN]            灞炴�ч敭鍊硷紝濡傝幏鍙栧儚绱犳牸寮忎俊鎭垯涓�"PixelFormat"
+    #  @param  pstEnumValue                [IN][OUT]       杩斿洖缁欒皟鐢ㄨ�呮湁鍏宠澶囧睘鎬х粨鏋勪綋鎸囬拡
+    #  @return 鎴愬姛,杩斿洖MV_OK,澶辫触,杩斿洖閿欒鐮�
+    #  @remarks 杩炴帴璁惧涔嬪悗璋冪敤璇ユ帴鍙e彲浠ヨ幏鍙朎num绫诲瀷鐨勬寚瀹氳妭鐐圭殑鍊�,鍖哄埆涓嶮V_CC_GetEnumValue,姝ゆ帴鍙h繑鍥炵殑鏋氫妇鏈夋晥涓暟鎵╁睍鍒�256涓��
+
+    #  @~english
+    #  @brief  Get Enum value
+    #  @param  handle                      [IN]            Device handle/Frame grabber handle
+    #  @param  strKey                      [IN]            Key value, for example, using "PixelFormat" to get pixel format
+    #  @param  pstEnumValue                [IN][OUT]       Structure pointer of camera features
+    #  @return Success, return MV_OK. Failure, return error code
+    #  @remarks After the device is connected, call this interface to get specified Enum nodes.
+    #           Comparing with the API MV_CC_GetEnumValue, this API expands the number of enumeration values up to 256.
+    def MV_CC_GetEnumValueEx(self, strKey, stEnumValue):
+        MvCamCtrldll.MV_CC_GetEnumValueEx.argtype = (c_void_p, c_void_p, c_void_p)
+        MvCamCtrldll.MV_CC_GetEnumValueEx.restype = c_uint
+        return MvCamCtrldll.MV_CC_GetEnumValueEx(self.handle, strKey.encode('ascii'), byref(stEnumValue))
+
+
+    ##
+    #  @~chinese
+    #  @brief  璁剧疆Enum鍨嬪睘鎬у��
+    #  @param  handle                      [IN]            璁惧鍙ユ焺/閲囬泦鍗″彞鏌�
+    #  @param  strKey                      [IN]            灞炴�ч敭鍊硷紝濡傝幏鍙栧儚绱犳牸寮忎俊鎭垯涓�"PixelFormat"
+    #  @param  nValue                      [IN]            鎯宠璁剧疆鐨勮澶囩殑灞炴�у��
+    #  @return 鎴愬姛,杩斿洖MV_OK,澶辫触,杩斿洖閿欒鐮�
+    #  @remarks 杩炴帴璁惧涔嬪悗璋冪敤璇ユ帴鍙e彲浠ヨ缃瓻num绫诲瀷鐨勬寚瀹氳妭鐐圭殑鍊笺��
+
+    #  @~english
+    #  @brief  Set Enum value
+    #  @param  handle                      [IN]            Device handle/Frame grabber handle
+    #  @param  strKey                      [IN]            Key value, for example, using "PixelFormat" to set pixel format
+    #  @param  nValue                      [IN]            Feature value to set
+    #  @return Success, return MV_OK. Failure, return error code
+    #  @remarks After the device is connected, call this interface to set specified Enum nodes. 
+    def MV_CC_SetEnumValue(self, strKey, nValue):
+        MvCamCtrldll.MV_CC_SetEnumValue.argtype = (c_void_p, c_void_p, c_uint32)
+        MvCamCtrldll.MV_CC_SetEnumValue.restype = c_uint
+        return MvCamCtrldll.MV_CC_SetEnumValue(self.handle, strKey.encode('ascii'), c_uint32(nValue))
+
+    ##
+    #  @~chinese
+    #  @brief  鑾峰彇Enum鍨嬭妭鐐规寚瀹氬�肩殑绗﹀彿
+    #  @param  handle                      [IN]            璁惧鍙ユ焺/閲囬泦鍗″彞鏌�
+    #  @param  strKey                      [IN]            灞炴�ч敭鍊硷紝濡傝幏鍙栧儚绱犳牸寮忎俊鎭垯涓�"PixelFormat"
+    #  @param  pstEnumEntry                [IN][OUT]           鎯宠鑾峰彇鐨勮澶囩殑灞炴�х鍙�
+    #  @return 鎴愬姛,杩斿洖MV_OK,澶辫触,杩斿洖閿欒鐮�
+    #  @remarks 杩炴帴璁惧涔嬪悗璋冪敤璇ユ帴鍙e彲浠ヨ幏鍙朎num绫诲瀷鐨勬寚瀹氳妭鐐圭殑鍊兼墍瀵瑰簲鐨勭鍙枫��
+
+    #  @~english
+    #  @brief  Get the symbolic of the specified value of the Enum type node
+    #  @param  handle                      [IN]            Device handle/Frame grabber handle
+    #  @param  strKey                      [IN]            Key value, for example, using "PixelFormat" to set pixel format
+    #  @param  pstEnumEntry                [IN][OUT]           Symbolic to get
+    #  @return Success, return MV_OK. Failure, return error code
+    #  @remarks Call this interface after connecting the device to obtain the symbol corresponding to the value of the specified node of Enum type.
+    def MV_CC_GetEnumEntrySymbolic(self, strKey, stEnumEntry):
+        MvCamCtrldll.MV_CC_GetEnumEntrySymbolic.argtype = (c_void_p, c_void_p, c_void_p)
+        MvCamCtrldll.MV_CC_GetEnumEntrySymbolic.restype = c_uint
+        return MvCamCtrldll.MV_CC_GetEnumEntrySymbolic(self.handle, strKey.encode('ascii'), byref(stEnumEntry))
+
+    ##
+    #  @~chinese
+    #  @brief  璁剧疆Enum鍨嬪睘鎬у��
+    #  @param  handle                      [IN]            璁惧鍙ユ焺/閲囬泦鍗″彞鏌�
+    #  @param  strKey                      [IN]            灞炴�ч敭鍊硷紝濡傝幏鍙栧儚绱犳牸寮忎俊鎭垯涓�"PixelFormat"
+    #  @param  strValue                    [IN]            鎯宠璁剧疆鐨勮澶囩殑灞炴�у瓧绗︿覆
+    #  @return 鎴愬姛,杩斿洖MV_OK,澶辫触,杩斿洖閿欒鐮�
+    #  @remarks 杩炴帴璁惧涔嬪悗璋冪敤璇ユ帴鍙e彲浠ヨ缃瓻num绫诲瀷鐨勬寚瀹氳妭鐐圭殑鍊笺��
+           
+    #  @~english
+    #  @brief  Set Enum value
+    #  @param  handle                      [IN]            Device handle/Frame grabber handle
+    #  @param  strKey                      [IN]            Key value, for example, using "PixelFormat" to set pixel format
+    #  @param  strValue                    [IN]            Feature String to set
+    #  @return Success, return MV_OK. Failure, return error code
+    #  @remarks After the device is connected, call this interface to set specified Enum nodes. 
+    def MV_CC_SetEnumValueByString(self, strKey, sValue):
+        MvCamCtrldll.MV_CC_SetEnumValueByString.argtype = (c_void_p, c_void_p, c_void_p)
+        MvCamCtrldll.MV_CC_SetEnumValueByString.restype = c_uint
+        return MvCamCtrldll.MV_CC_SetEnumValueByString(self.handle, strKey.encode('ascii'), sValue.encode('ascii'))
+
+
+    ##
+    #  @~chinese
+    #  @brief  鑾峰彇Float灞炴�у��
+    #  @param  handle                      [IN]            璁惧鍙ユ焺/閲囬泦鍗″彞鏌�
+    #  @param  strKey                      [IN]            灞炴�ч敭鍊�
+    #  @param  pstFloatValue               [IN][OUT]       杩斿洖缁欒皟鐢ㄨ�呮湁鍏宠澶囧睘鎬х粨鏋勪綋鎸囬拡
+    #  @return 鎴愬姛,杩斿洖MV_OK,澶辫触,杩斿洖閿欒鐮�
+    #  @remarks 杩炴帴璁惧涔嬪悗璋冪敤璇ユ帴鍙e彲浠ヨ幏鍙杅loat绫诲瀷鐨勬寚瀹氳妭鐐圭殑鍊笺��
+
+    #  @~english
+    #  @brief  Get Float value
+    #  @param  handle                      [IN]            Device handle/Frame grabber handle
+    #  @param  strKey                      [IN]            Key value
+    #  @param  pstFloatValue               [IN][OUT]       Structure pointer of camera features
+    #  @return Success, return MV_OK. Failure, return error code
+    #  @remarks After the device is connected, call this interface to get specified float node. 
+    def MV_CC_GetFloatValue(self, strKey, stFloatValue):
+        MvCamCtrldll.MV_CC_GetFloatValue.argtype = (c_void_p, c_void_p, c_void_p)
+        MvCamCtrldll.MV_CC_GetFloatValue.restype = c_uint
+        return MvCamCtrldll.MV_CC_GetFloatValue(self.handle, strKey.encode('ascii'), byref(stFloatValue))
+
+    ##
+    #  @~chinese
+    #  @brief  璁剧疆float鍨嬪睘鎬у��
+    #  @param  handle                      [IN]            璁惧鍙ユ焺/閲囬泦鍗″彞鏌�
+    #  @param  strKey                      [IN]            灞炴�ч敭鍊�
+    #  @param  fValue                      [IN]            鎯宠璁剧疆鐨勮澶囩殑灞炴�у��
+    #  @return 鎴愬姛,杩斿洖MV_OK,澶辫触,杩斿洖閿欒鐮�
+    #  @remarks 杩炴帴璁惧涔嬪悗璋冪敤璇ユ帴鍙e彲浠ヨ缃甪loat绫诲瀷鐨勬寚瀹氳妭鐐圭殑鍊笺��
+
+    #  @~english
+    #  @brief  Set float value
+    #  @param  handle                      [IN]            Device handle/Frame grabber handle
+    #  @param  strKey                      [IN]            Key value
+    #  @param  fValue                      [IN]            Feature value to set
+    #  @return Success, return MV_OK. Failure, return error code
+    #  @remarks After the device is connected, call this interface to set specified float node. 
+    def MV_CC_SetFloatValue(self, strKey, fValue):
+        MvCamCtrldll.MV_CC_SetFloatValue.argtype = (c_void_p, c_void_p, c_float)
+        MvCamCtrldll.MV_CC_SetFloatValue.restype = c_uint
+        return MvCamCtrldll.MV_CC_SetFloatValue(self.handle, strKey.encode('ascii'), c_float(fValue))
+
+    ##
+    #  @~chinese
+    #  @brief  鑾峰彇Boolean灞炴�у��
+    #  @param  handle                      [IN]            璁惧鍙ユ焺/閲囬泦鍗″彞鏌�
+    #  @param  strKey                      [IN]            灞炴�ч敭鍊�
+    #  @param  pbValue                     [IN][OUT]       杩斿洖缁欒皟鐢ㄨ�呮湁鍏宠澶囧睘鎬у��
+    #  @return 鎴愬姛,杩斿洖MV_OK,澶辫触,杩斿洖閿欒鐮�
+    #  @remarks 杩炴帴璁惧涔嬪悗璋冪敤璇ユ帴鍙e彲浠ヨ幏鍙朾ool绫诲瀷鐨勬寚瀹氳妭鐐圭殑鍊笺��
+
+    #  @~english
+    #  @brief  Get Boolean value
+    #  @param  handle                      [IN]            Device handle/Frame grabber handle
+    #  @param  strKey                      [IN]            Key value
+    #  @param  pbValue                     [IN][OUT]       Structure pointer of camera features
+    #  @return Success, return MV_OK. Failure, return error code
+    #  @remarks After the device is connected, call this interface to get specified bool nodes. 
+    def MV_CC_GetBoolValue(self, strKey, BoolValue):
+        MvCamCtrldll.MV_CC_GetBoolValue.argtype = (c_void_p, c_void_p, c_void_p)
+        MvCamCtrldll.MV_CC_GetBoolValue.restype = c_uint
+        return MvCamCtrldll.MV_CC_GetBoolValue(self.handle, strKey.encode('ascii'), byref(BoolValue))
+
+    ##
+    #  @~chinese
+    #  @brief  璁剧疆Boolean鍨嬪睘鎬у��
+    #  @param  handle                      [IN]            璁惧鍙ユ焺/閲囬泦鍗″彞鏌�
+    #  @param  strKey                      [IN]            灞炴�ч敭鍊�
+    #  @param  bValue                      [IN]            鎯宠璁剧疆鐨勮澶囩殑灞炴�у��
+    #  @return 鎴愬姛,杩斿洖MV_OK,澶辫触,杩斿洖閿欒鐮�
+    #  @remarks 杩炴帴璁惧涔嬪悗璋冪敤璇ユ帴鍙e彲浠ヨ缃産ool绫诲瀷鐨勬寚瀹氳妭鐐圭殑鍊笺��
+
+    #  @~english
+    #  @brief  Set Boolean value
+    #  @param  handle                      [IN]            Device handle/Frame grabber handle
+    #  @param  strKey                      [IN]            Key value
+    #  @param  bValue                      [IN]            Feature value to set
+    #  @return Success, return MV_OK. Failure, return error code
+    #  @remarks After the device is connected, call this interface to set specified bool nodes. 
+    def MV_CC_SetBoolValue(self, strKey, bValue):
+        MvCamCtrldll.MV_CC_SetBoolValue.argtype = (c_void_p, c_void_p, c_bool)
+        MvCamCtrldll.MV_CC_SetBoolValue.restype = c_uint
+        return MvCamCtrldll.MV_CC_SetBoolValue(self.handle, strKey.encode('ascii'), bValue)
+
+    ##
+    #  @~chinese
+    #  @brief  鑾峰彇String灞炴�у��
+    #  @param  handle                      [IN]            璁惧鍙ユ焺/閲囬泦鍗″彞鏌�
+    #  @param  strKey                      [IN]            灞炴�ч敭鍊�
+    #  @param  pstStringValue              [IN][OUT]       杩斿洖缁欒皟鐢ㄨ�呮湁鍏宠澶囧睘鎬х粨鏋勪綋鎸囬拡
+    #  @return 鎴愬姛,杩斿洖MV_OK,澶辫触,杩斿洖閿欒鐮�
+    #  @remarks 杩炴帴璁惧涔嬪悗璋冪敤璇ユ帴鍙e彲浠ヨ幏鍙杝tring绫诲瀷鐨勬寚瀹氳妭鐐圭殑鍊笺��
+
+    #  @~english
+    #  @brief  Get String value
+    #  @param  handle                      [IN]            Device handle/Frame grabber handle
+    #  @param  strKey                      [IN]            Key value
+    #  @param  pstStringValue              [IN][OUT]       Structure pointer of camera features
+    #  @return Success, return MV_OK. Failure, return error code
+    #  @remarks After the device is connected, call this interface to get specified string nodes. 
+    def MV_CC_GetStringValue(self, strKey, StringValue):
+        MvCamCtrldll.MV_CC_GetStringValue.argtype = (c_void_p, c_void_p, c_void_p)
+        MvCamCtrldll.MV_CC_GetStringValue.restype = c_uint
+        return MvCamCtrldll.MV_CC_GetStringValue(self.handle, strKey.encode('ascii'), byref(StringValue))
+
+    ##
+    #  @~chinese
+    #  @brief  璁剧疆String鍨嬪睘鎬у��
+    #  @param  handle                      [IN]            璁惧鍙ユ焺/閲囬泦鍗″彞鏌�
+    #  @param  strKey                      [IN]            灞炴�ч敭鍊�
+    #  @param  strValue                    [IN]            鎯宠璁剧疆鐨勮澶囩殑灞炴�у��
+    #  @return 鎴愬姛,杩斿洖MV_OK,澶辫触,杩斿洖閿欒鐮�
+    #  @remarks 杩炴帴璁惧涔嬪悗璋冪敤璇ユ帴鍙e彲浠ヨ缃畇tring绫诲瀷鐨勬寚瀹氳妭鐐圭殑鍊笺��
+
+    #  @~english
+    #  @brief  Set String value
+    #  @param  handle                      [IN]            Device handle/Frame grabber handle
+    #  @param  strKey                      [IN]            Key value
+    #  @param  strValue                    [IN]            Feature value to set
+    #  @return Success, return MV_OK. Failure, return error code
+    #  @remarks After the device is connected, call this interface to set specified string nodes. 
+    def MV_CC_SetStringValue(self, strKey, sValue):
+        MvCamCtrldll.MV_CC_SetStringValue.argtype = (c_void_p, c_void_p, c_void_p)
+        MvCamCtrldll.MV_CC_SetStringValue.restype = c_uint
+        return MvCamCtrldll.MV_CC_SetStringValue(self.handle, strKey.encode('ascii'), sValue.encode('ascii'))
+
+    ##
+    #  @~chinese
+    #  @brief  璁剧疆Command鍨嬪睘鎬у��
+    #  @param  handle                      [IN]            璁惧鍙ユ焺/閲囬泦鍗″彞鏌�
+    #  @param  strKey                      [IN]            灞炴�ч敭鍊�
+    #  @return 鎴愬姛,杩斿洖MV_OK,澶辫触,杩斿洖閿欒鐮�
+    #  @remarks 杩炴帴璁惧涔嬪悗璋冪敤璇ユ帴鍙e彲浠ヨ缃寚瀹氱殑Command绫诲瀷鑺傜偣銆�
+
+    #  @~english
+    #  @brief  Send Command
+    #  @param  handle                      [IN]            Device handle/Frame grabber handle
+    #  @param  strKey                      [IN]            Key value
+    #  @return Success, return MV_OK. Failure, return error code
+    #  @remarks After the device is connected, call this interface to set specified Command nodes. 
+    def MV_CC_SetCommandValue(self, strKey):
+        MvCamCtrldll.MV_CC_SetCommandValue.argtype = (c_void_p, c_void_p)
+        MvCamCtrldll.MV_CC_SetCommandValue.restype = c_uint
+        return MvCamCtrldll.MV_CC_SetCommandValue(self.handle, strKey.encode('ascii'))
+
+    ##
+    #  @~chinese
+    #  @brief  璇诲唴瀛�
+    #  @param  handle                      [IN]            璁惧鍙ユ焺/閲囬泦鍗″彞鏌�
+    #  @param  pBuffer                     [IN][OUT]       浣滀负杩斿洖鍊间娇鐢紝淇濆瓨璇诲埌鐨勫唴瀛樺�硷紙GEV璁惧鍐呭瓨鍊兼槸鎸夌収澶х妯″紡瀛樺偍鐨勶紝閲囬泦鍗¤澶囧拰閲囬泦鍗′笅鐩告満鎸夌収澶х瀛樺偍锛屽叾瀹冨崗璁澶囨寜鐓у皬绔瓨鍌級
+    #  @param  nAddress                    [IN]            寰呰鍙栫殑鍐呭瓨鍦板潃锛岃鍦板潃鍙互浠庤澶囩殑Camera.xml鏂囦欢涓幏鍙栵紝褰㈠xxx_RegAddr鐨剎ml鑺傜偣鍊�
+    #  @param  nLength                     [IN]            寰呰鍙栫殑鍐呭瓨闀垮害
+    #  @return 鎴愬姛,杩斿洖MV_OK,澶辫触,杩斿洖閿欒鐮�
+    #  @remarks 璇诲彇璁惧鏌愭瀵勫瓨鍣ㄧ殑鏁版嵁
+
+    #  @~english
+    #  @brief  Read Memory
+    #  @param  handle                      [IN]            Device Handle/Frame grabber handle
+    #  @param  pBuffer                     [IN][OUT]       Used as a return value, save the read-in memory value ( The memory value of GEV devices is stored in the big end mode, with the capture card device and the camera under the capture card stored in the big end mode, and other protocol devices stored in the small end mode)
+    #  @param  nAddress                    [IN]            Memory address to be read, which can be obtained from the Camera.xml file of the device, the form xml node value of xxx_RegAddr
+    #  @param  nLength                     [IN]            Length of the memory to be read
+    #  @return Success, return MV_OK. Failure, return error code 
+    #  @remarks Read the data of a certain segment of the device's registers.
+    def MV_CC_ReadMemory(self, pBuffer, nAddress, nLength):
+        MvCamCtrldll.MV_CC_ReadMemory.argtype = (c_void_p, c_void_p, c_int64, c_int64)
+        MvCamCtrldll.MV_CC_ReadMemory.restype = c_uint
+        return MvCamCtrldll.MV_CC_ReadMemory(self.handle, pBuffer, c_int64(nAddress), c_int64(nLength))
+
+    ##
+    #  @~chinese
+    #  @brief  鍐欏唴瀛�
+    #  @param  handle                      [IN]            璁惧鍙ユ焺/閲囬泦鍗″彞鏌�
+    #  @param  pBuffer                     [IN]            寰呭啓鍏ョ殑鍐呭瓨鍊硷紙娉ㄦ剰GEV璁惧鍐呭瓨鍊艰鎸夌収澶х妯″紡瀛樺偍锛岄噰闆嗗崱璁惧鍜岄噰闆嗗崱涓嬬浉鏈烘寜鐓уぇ绔瓨鍌紝鍏跺畠鍗忚璁惧鎸夌収灏忕瀛樺偍锛�
+    #  @param  nAddress                    [IN]            寰呭啓鍏ョ殑鍐呭瓨鍦板潃锛岃鍦板潃鍙互浠庤澶囩殑Camera.xml鏂囦欢涓幏鍙栵紝褰㈠xxx_RegAddr鐨剎ml鑺傜偣鍊�
+    #  @param  nLength                     [IN]            寰呭啓鍏ョ殑鍐呭瓨闀垮害
+    #  @return 鎴愬姛,杩斿洖MV_OK,澶辫触,杩斿洖閿欒鐮�
+    #  @remarks 璁块棶璁惧锛屾妸涓�娈垫暟鎹啓鍏ユ煇娈靛瘎瀛樺櫒銆�
+
+    #  @~english
+    #  @brief  Write Memory
+    #  @param  handle                      [IN]            Device Handle/Frame grabber handle
+    #  @param  pBuffer                     [IN]            Memory value to be written ( Note The memory value of GEV devices is stored in the big end mode, with the capture card device and the camera under the capture card stored in the big end mode, and other protocol devices stored in the small end mode)
+    #  @param  nAddress                    [IN]            Memory address to be written, which can be obtained from the Camera.xml file of the device, the form xml node value of xxx_RegAddr
+    #  @param  nLength                     [IN]            Length of the memory to be written
+    #  @return Success, return MV_OK. Failure, return error code 
+    #  @remarks Access device, write a piece of data into a certain segment of register.
+    def MV_CC_WriteMemory(self, pBuffer, nAddress, nLength):
+        MvCamCtrldll.MV_CC_WriteMemory.argtype = (c_void_p, c_void_p, c_int64, c_int64)
+        MvCamCtrldll.MV_CC_WriteMemory.restype = c_uint
+        return MvCamCtrldll.MV_CC_WriteMemory(self.handle, pBuffer, c_int64(nAddress), c_int64(nLength))
+
+    ##
+    #  @~chinese
+    #  @brief  娓呴櫎GenICam鑺傜偣缂撳瓨
+    #  @param  handle                      [IN]            璁惧鍙ユ焺/閲囬泦鍗″彞鏌�
+    #  @return 鎴愬姛锛岃繑鍥濵V_OK锛涢敊璇紝杩斿洖閿欒鐮�
+
+    #  @~english
+    #  @brief  Invalidate GenICam Nodes
+    #  @param  handle                      [IN]            Device handle/Frame grabber handle
+    #  @return Success, return MV_OK. Failure, return error code
+    def MV_CC_InvalidateNodes(self):
+        MvCamCtrldll.MV_CC_InvalidateNodes.argtype = (c_void_p)
+        MvCamCtrldll.MV_CC_InvalidateNodes.restype = c_uint
+        return MvCamCtrldll.MV_CC_InvalidateNodes(self.handle)
+
+    ##
+    #  @~chinese
+    #  @brief  鑾峰彇璁惧灞炴�ф爲XML
+    #  @param  handle                      [IN]            璁惧鍙ユ焺/閲囬泦鍗″彞鏌�
+    #  @param  pData                       [IN][OUT]       XML鏁版嵁鎺ユ敹缂撳瓨
+    #  @param  nDataSize                   [IN]            鎺ユ敹缂撳瓨澶у皬
+    #  @param  pnDataLen                   [IN][OUT]       瀹為檯鏁版嵁澶у皬
+    #  @return 鎴愬姛锛岃繑鍥濵V_OK锛涢敊璇紝杩斿洖閿欒鐮�
+    #  @remarks 褰損Data涓篘ULL鎴杗DataSize姣斿疄闄呯殑xml鏂囦欢灏忔椂锛屼笉鎷疯礉鏁版嵁锛岀敱pnDataLen杩斿洖xml鏂囦欢澶у皬
+    #        褰損Data涓烘湁鏁堢紦瀛樺湴鍧�锛屼笖缂撳瓨瓒冲澶ф椂锛屾嫹璐濆畬鏁存暟鎹繚瀛樺湪璇ョ紦瀛橀噷闈紝骞剁敱pnDataLen杩斿洖xml鏂囦欢瀹為檯澶у皬銆�
+
+    #  @~english
+    #  @brief  Get camera feature tree XML
+    #  @param  handle                      [IN]            Device handle/Frame grabber handle
+    #  @param  pData                       [IN][OUT]       XML data receiving buffer
+    #  @param  nDataSize                   [IN]            Buffer size
+    #  @param  pnDataLen                   [IN][OUT]       Actual data length
+    #  @return Success, return MV_OK. Failure, return error code
+    #  @remarks When pData is NULL or nDataSize than the actual XML file hours, do not copy the data, returned by pnDataLen XML file size.
+    #        When pData is a valid cache address and the cache is large enough, copy the full data into the cache, and pnDataLen returns the actual size of the XML file.
+    def MV_XML_GetGenICamXML(self, pData, nDataSize, pnDataLen):
+        MvCamCtrldll.MV_XML_GetGenICamXML.argtype = (c_void_p, c_void_p, c_uint, c_void_p)
+        MvCamCtrldll.MV_XML_GetGenICamXML.restype = c_uint
+        return MvCamCtrldll.MV_XML_GetGenICamXML(self.handle, pData, c_uint(nDataSize), byref(pnDataLen))
+
+    ##
+    #  @~chinese
+    #  @brief  鑾峰緱褰撳墠鑺傜偣鐨勮闂ā寮�
+    #  @param  handle                      [IN]            璁惧鍙ユ焺/閲囬泦鍗″彞鏌�
+    #  @param  strName                     [IN]            鑺傜偣鍚嶇О
+    #  @param  penAccessMode               [IN][OUT]       鑺傜偣鐨勮闂ā寮�
+    #  @return 鎴愬姛锛岃繑鍥濵V_OK锛涢敊璇紝杩斿洖閿欒鐮�
+
+    #  @~english
+    #  @brief  Get Access mode of cur node
+    #  @param  handle                      [IN]            Device handle/Frame grabber handle
+    #  @param  strName                     [IN]            Name of node
+    #  @param  penAccessMode               [IN][OUT]       Access mode of the node
+    #  @return Success, return MV_OK. Failure, return error code
+    def MV_XML_GetNodeAccessMode(self, strName, penAccessMode):
+        MvCamCtrldll.MV_XML_GetNodeAccessMode.argtype = (c_void_p, c_void_p, c_void_p)
+        MvCamCtrldll.MV_XML_GetNodeAccessMode.restype = c_uint
+        return MvCamCtrldll.MV_XML_GetNodeAccessMode(self.handle, strName.encode('ascii'), byref(penAccessMode))
+
+    ##
+    #  @~chinese
+    #  @brief  鑾峰緱褰撳墠鑺傜偣鐨勭被鍨�
+    #  @param  handle                      [IN]            璁惧鍙ユ焺/閲囬泦鍗″彞鏌�
+    #  @param  strName                     [IN]            鑺傜偣鍚嶇О
+    #  @param  penInterfaceType            [IN][OUT]       鑺傜偣鐨勭被鍨�
+    #  @return 鎴愬姛锛岃繑鍥濵V_OK锛涢敊璇紝杩斿洖閿欒鐮�
+    #  @remarks 璇ユ帴鍙e彲浠ュ湪璋冪敤MV_CC_GetIntValueEx銆丮V_CC_SetIntValueEx 绛変竾鑳芥帴鍙d箣鍓嶏紝鎻愬墠鐭ラ亾鑺傜偣绫诲瀷锛屾柟渚跨敤鎴烽�夋嫨鍚堥�傜殑涓囪兘鎺ュ彛杩涜鑺傜偣鍊肩殑璁剧疆鍜岃幏鍙栥��
+
+    #  @~english
+    #  @brief  Get Interface Type of cur node
+    #  @param  handle                      [IN]            Device handle/Frame grabber handle
+    #  @param  strName                     [IN]            Name of node
+    #  @param  penInterfaceType            [IN][OUT]       Interface Type of the node
+    #  @return Success, return MV_OK. Failure, return error code
+    #  @remarks  This interface can allow users to know the node type in advance before calling universal interfaces such as MV_CC_GetIntValueEx and MV_CC_SetIntValueEx, facilitating the selection of appropriate interfaces for setting and obtaining node values.
+    def MV_XML_GetNodeInterfaceType(self, strName, penInterfaceType):
+        MvCamCtrldll.MV_XML_GetNodeInterfaceType.argtype = (c_void_p, c_void_p, c_void_p)
+        MvCamCtrldll.MV_XML_GetNodeInterfaceType.restype = c_uint
+        return MvCamCtrldll.MV_XML_GetNodeInterfaceType(self.handle, strName.encode('ascii'), byref(penInterfaceType))
+    ##
+    #  @~chinese
+    #  @brief  淇濆瓨璁惧灞炴��
+    #  @param  handle                      [IN]            璁惧鍙ユ焺/閲囬泦鍗″彞鏌�
+    #  @param  strFileName                 [IN]            灞炴�ф枃浠跺悕
+    #  @return 鎴愬姛锛岃繑鍥濵V_OK锛涢敊璇紝杩斿洖閿欒鐮� 
+
+    #  @~english
+    #  @brief  Save camera feature
+    #  @param  handle                      [IN]            Device handle/Frame grabber handle
+    #  @param  strFileName                 [IN]            File name
+    #  @return Success, return MV_OK. Failure, return error code
+    def MV_CC_FeatureSave(self, strFileName):
+        MvCamCtrldll.MV_CC_FeatureSave.argtype = (c_void_p, c_void_p)
+        MvCamCtrldll.MV_CC_FeatureSave.restype = c_uint
+        return MvCamCtrldll.MV_CC_FeatureSave(self.handle, strFileName.encode('ascii'))
+
+    ##
+    #  @~chinese
+    #  @brief  瀵煎叆璁惧灞炴��
+    #  @param  handle                      [IN]            璁惧鍙ユ焺/閲囬泦鍗″彞鏌�
+    #  @param  strFileName                 [IN]            灞炴�ф枃浠跺悕
+    #  @return 鎴愬姛锛岃繑鍥濵V_OK锛涢敊璇紝杩斿洖閿欒鐮� 
+
+    #  @~english
+    #  @brief  Load camera feature
+    #  @param  handle                      [IN]            Device handle/Frame grabber handle
+    #  @param  strFileName                 [IN]            File name
+    #  @return Success, return MV_OK. Failure, return error code
+    def MV_CC_FeatureLoad(self, strFileName):
+        MvCamCtrldll.MV_CC_FeatureLoad.argtype = (c_void_p, c_void_p)
+        MvCamCtrldll.MV_CC_FeatureLoad.restype = c_uint
+        return MvCamCtrldll.MV_CC_FeatureLoad(self.handle, strFileName.encode('ascii'))
+
+
+    ##
+    #  @~chinese
+    #  @brief  瀵煎叆璁惧灞炴�у苟淇濆瓨閿欒淇℃伅鍒楄〃
+    #  @param  handle                      [IN]            璁惧鍙ユ焺/閲囬泦鍗″彞鏌�
+    #  @param  strFileName                 [IN]            灞炴�ф枃浠跺悕
+    #  @param  stNodeErrorList             [IN OUT]        閿欒淇℃伅鍒楄〃锛岀敱鐢ㄦ埛鍦ㄥ閮ㄧ敵璇峰苟鐢卞唴閮ㄥ~鍏呮暟鎹紝璇ュ弬鏁板厑璁稿~null浠h〃鐢ㄦ埛涓嶅叧蹇冨鍏ユ椂鐨勯敊璇俊鎭�
+    #  @return 鎴愬姛锛岃繑鍥濵V_OK锛涢敊璇紝杩斿洖閿欒鐮� 
+    #  @remarks 閮ㄥ垎鑺傜偣瀵煎叆澶辫触鏃讹紝鎺ュ彛杩斿洖MV_OK锛岄�氳繃閿欒淇℃伅鍒楄〃涓璼tNodeError鑾峰彇鍑洪敊鑺傜偣鍙婂け璐ュ師鍥�
+
+    #  @~english
+    #  @brief  Load camera feature with error message list
+    #  @param  handle                      [IN]            Device handle/Frame grabber handle
+    #  @param  strFileName                 [IN]            File name
+    #  @param  pstNodeErrorList            [IN OUT]        Error message list, requested by the user externally and filled with data internally, \n
+    #                                                      this parameter allows null to indicate that the user is not concerned about error information during import.
+    #  @return Success, return MV_OK. Failure, return error code
+    #  @remarks When some nodes fail to load, the interface returns MV_OK. \n
+    #           The error node and the reason for the failure are obtained through stNodeError in the error message list.
+    def MV_CC_FeatureLoadEx(self, strFileName, pstNodeErrorList):
+        MvCamCtrldll.MV_CC_FeatureLoadEx.argtype = (c_void_p, c_void_p, c_void_p)
+        MvCamCtrldll.MV_CC_FeatureLoadEx.restype = c_uint
+        return MvCamCtrldll.MV_CC_FeatureLoadEx(self.handle, strFileName.encode('ascii'), byref(pstNodeErrorList))
+
+    ##
+    #  @~chinese
+    #  @brief  浠庤澶囪鍙栨枃浠�
+    #  @param  handle                      [IN]            璁惧鍙ユ焺/閲囬泦鍗″彞鏌�
+    #  @param  pstFileAccess               [IN]            鏂囦欢瀛樺彇缁撴瀯浣�
+    #  @return 鎴愬姛锛岃繑鍥濵V_OK锛涢敊璇紝杩斿洖閿欒鐮� 
+
+    #  @~english
+    #  @brief  Read the file from the camera
+    #  @param  handle                      [IN]            Device handle/Frame grabber handle
+    #  @param  pstFileAccess               [IN]            File access structure
+    #  @return Success, return MV_OK. Failure, return error code
+    def MV_CC_FileAccessRead(self, stFileAccess):
+        MvCamCtrldll.MV_CC_FileAccessRead.argtype = (c_void_p, c_void_p)
+        MvCamCtrldll.MV_CC_FileAccessRead.restype = c_uint
+        return MvCamCtrldll.MV_CC_FileAccessRead(self.handle, byref(stFileAccess))
+
+    ##
+    #  @~chinese
+    #  @brief  浠庤澶囪鍙栨枃浠�,鏂囦欢鏄疍ata鏁版嵁
+    #  @param  handle                      [IN]            璁惧鍙ユ焺/閲囬泦鍗″彞鏌�
+    #  @param  pstFileAccessEx             [IN]            鏂囦欢瀛樺彇缁撴瀯浣�
+    #  @return 鎴愬姛锛岃繑鍥濵V_OK锛涢敊璇紝杩斿洖閿欒鐮� 閬垮厤鏂囦欢鎿嶄綔鏉冮檺闂璇诲け璐� 
+
+    #  @~english
+    #  @brief  Read the file data from the camera
+    #  @param  handle                      [IN]            Device handle/Frame grabber handle
+    #  @param  pstFileAccessEx             [IN]            File access structure
+    #  @return Success, return MV_OK. Failure, return error code
+    def MV_CC_FileAccessReadEx(self, pstFileAccessEx):
+        MvCamCtrldll.MV_CC_FileAccessReadEx.argtype = (c_void_p, c_void_p)
+        MvCamCtrldll.MV_CC_FileAccessReadEx.restype = c_uint
+        return MvCamCtrldll.MV_CC_FileAccessReadEx(self.handle, byref(pstFileAccessEx))
+
+    ##
+    #  @~chinese
+    #  @brief  灏嗘枃浠跺啓鍏ヨ澶�
+    #  @param  handle                      [IN]            璁惧鍙ユ焺/閲囬泦鍗″彞鏌�
+    #  @param  pstFileAccess               [IN]            鏂囦欢瀛樺彇缁撴瀯浣�
+    #  @return 鎴愬姛锛岃繑鍥濵V_OK锛涢敊璇紝杩斿洖閿欒鐮�
+
+    #  @~english
+    #  @brief  Write the file to camera
+    #  @param  handle                      [IN]            Device handle/Frame grabber handle
+    #  @param  pstFileAccess               [IN]            File access structure
+    #  @return Success, return MV_OK. Failure, return error code
+    def MV_CC_FileAccessWrite(self, stFileAccess):
+        MvCamCtrldll.MV_CC_FileAccessWrite.argtype = (c_void_p, c_void_p)
+        MvCamCtrldll.MV_CC_FileAccessWrite.restype = c_uint
+        return MvCamCtrldll.MV_CC_FileAccessWrite(self.handle, byref(stFileAccess))
+
+    ##
+    #  @~chinese
+    #  @brief  灏嗙紦瀛�(buffer)鍐欏叆璁惧
+    #  @param  handle                        [IN]            璁惧鍙ユ焺/閲囬泦鍗″彞鏌�
+    #  @param  pstFileAccessEx               [IN][OUT]       鏂囦欢瀛樺彇缁撴瀯浣�
+    #  @return 鎴愬姛锛岃繑鍥濵V_OK锛涢敊璇紝杩斿洖閿欒鐮�
+    #  @remarks 璇ユ帴鍙g洿鎺ヤ娇鐢ㄧ紦瀛樻暟鎹紝杩涜璇诲啓鎿嶄綔锛岄伩鍏嶇洿鎺ユ搷浣滄枃浠跺嚭鐜版棤鏉冮檺鐨勯棶棰�,鏄疢V_CC_FileAccessWrite鐨勬墿灞曟帴鍙�
+
+    #  @~english
+    #  @brief  Write the data(buffer) to camera
+    #  @param  handle                        [IN]            Device handle/Frame grabber handle
+    #  @param  pstFileAccessEx               [IN][OUT]       File access structure
+    #  @return Success, return MV_OK. Failure, return error code
+    #  @remarks This interface uses cached data for read and write,solve the problem of no permissions in direct operation files, it's an extended interface of MV_CC_FileAccessWrite.
+    def MV_CC_FileAccessWriteEx(self, pstFileAccessEx):
+        MvCamCtrldll.MV_CC_FileAccessWriteEx.argtype = (c_void_p, c_void_p)
+        MvCamCtrldll.MV_CC_FileAccessWriteEx.restype = c_uint
+        return MvCamCtrldll.MV_CC_FileAccessWriteEx(self.handle, byref(pstFileAccessEx))
+
+    ##
+    #  @~chinese
+    #  @brief  鑾峰彇鏂囦欢瀛樺彇鐨勮繘搴�
+    #  @param  handle                      [IN]            璁惧鍙ユ焺/閲囬泦鍗″彞鏌�
+    #  @param  pstFileAccessProgress       [IN][OUT]       杩涘害鍐呭
+    #  @return 鎴愬姛锛岃繑鍥濵V_OK锛涢敊璇紝杩斿洖閿欒鐮� 锛堝綋鍓嶆枃浠跺瓨鍙栫殑鐘舵�侊級
+
+    #  @~english
+    #  @brief  Get File Access Progress 
+    #  @param  handle                      [IN]            Device handle/Frame grabber handle
+    #  @param  pstFileAccessProgress       [IN][OUT]       File access Progress
+    #  @return Success, return MV_OK. Failure, return error code
+    def MV_CC_GetFileAccessProgress(self, pstFileAccessProgress):
+        MvCamCtrldll.MV_CC_GetFileAccessProgress.argtype = (c_void_p, c_void_p)
+        MvCamCtrldll.MV_CC_GetFileAccessProgress.restype = c_uint
+        return MvCamCtrldll.MV_CC_GetFileAccessProgress(self.handle, byref(pstFileAccessProgress))
+    ## @}
+    
+    
+    ## @addtogroup  ch: 鐩告満鍜岄噰闆嗗崱 鍗囩骇 | en:  Camera /Frame grabber  upgrade 
+    ## @{
+
+    ##
+    #  @~chinese
+    #  @brief  璁惧鏈湴鍗囩骇
+    #  @param  handle                      [IN]            璁惧鍙ユ焺
+    #  @param  strFilePathName             [IN]            鏂囦欢鍚�
+    #  @return 鎴愬姛,杩斿洖MV_OK,澶辫触,杩斿洖閿欒鐮�
+    #  @remarks 閫氳繃璇ユ帴鍙e彲浠ュ皢鍗囩骇鍥轰欢鏂囦欢鍙戦�佺粰璁惧杩涜鍗囩骇銆�
+    #        璇ユ帴鍙i渶瑕佺瓑寰呭崌绾у浐浠舵枃浠舵垚鍔熶紶缁欒澶囩涔嬪悗鍐嶈繑鍥烇紝鍝嶅簲鏃堕棿鍙兘杈冮暱銆�
+
+    #  @~english
+    #  @brief  Device Local Upgrade
+    #  @param  handle                      [IN]            Device handle
+    #  @param  strFilePathName             [IN]            File name
+    #  @return Success, return MV_OK. Failure, return error code
+    #  @remarks Call this API to send the upgrade firmware to the device for upgrade.
+    #        This API will wait for return until the upgrade firmware is sent to the device, this response may take a long time.
+    #        For CameraLink device, it keeps sending upgrade firmware continuously. 
+    def MV_CC_LocalUpgrade(self, strFilePathName):
+        MvCamCtrldll.MV_CC_LocalUpgrade.argtype = (c_void_p, c_void_p)
+        MvCamCtrldll.MV_CC_LocalUpgrade.restype = c_uint
+        return MvCamCtrldll.MV_CC_LocalUpgrade(self.handle, strFilePathName.encode('ascii'))
+
+    ##
+    #  @~chinese
+    #  @brief  鑾峰彇鍗囩骇杩涘害
+    #  @param  handle                      [IN]            璁惧鍙ユ焺
+    #  @param  pnProcess                   [IN][OUT]       杩涘害鎺ユ敹鍦板潃
+    #  @return 鎴愬姛,杩斿洖MV_OK,澶辫触,杩斿洖閿欒鐮�
+
+    #  @~english
+    #  @brief  Get Upgrade Progress
+    #  @param  handle                      [IN]            Device handle
+    #  @param  pnProcess                   [IN][OUT]       Progress receiving address
+    #  @return Success, return MV_OK. Failure, return error code
+    def MV_CC_GetUpgradeProcess(self, nProcess):
+        MvCamCtrldll.MV_CC_GetUpgradeProcess.argtype = (c_void_p, c_void_p)
+        MvCamCtrldll.MV_CC_GetUpgradeProcess.restype = c_uint
+        return MvCamCtrldll.MV_CC_GetUpgradeProcess(self.handle, byref(nProcess))
+    ## @}
+    
+    
+
+    ## @addtogroup  ch: 鐩告満鍜岄噰闆嗗崱 娉ㄥ唽寮傚父鍥炶皟鍜屼簨浠舵帴鍙� | en:  Camera /Frame  Enrol abnormal callbacks and event interface 
+    ## @{
+    
+        
+    ##
+    #  @~chinese
+    #  @brief  娉ㄥ唽寮傚父娑堟伅鍥炶皟锛屽湪鎵撳紑璁惧涔嬪悗璋冪敤
+    #  @param  handle                      [IN]            璁惧鍙ユ焺
+    #  @param  cbException                 [IN]            寮傚父鍥炶皟鍑芥暟鎸囬拡
+    #  @param  pUser                       [IN]            鐢ㄦ埛鑷畾涔夊彉閲�
+    #  @return 鎴愬姛,杩斿洖MV_OK,澶辫触,杩斿洖閿欒鐮�
+    #  @remarks 璇ユ帴鍙i渶瑕佸湪MV_CC_OpenDevice鎵撳紑璁惧涔嬪悗璋冪敤銆�
+    #           璁惧寮傚父鏂紑杩炴帴鍚庡彲浠ュ湪鍥炶皟閲岄潰鑾峰彇鍒板紓甯告秷鎭紝GigE璁惧鎺夌嚎涔嬪悗闇�瑕佸厛璋冪敤MV_CC_CloseDevice鎺ュ彛鍏抽棴璁惧锛屽啀璋冪敤MV_CC_OpenDevice鎺ュ彛閲嶆柊鎵撳紑璁惧銆�
+
+    #  @~english
+    #  @brief  Register Exception Message CallBack, call after open device
+    #  @param  handle                      [IN]            Device handle
+    #  @param  cbException                 [IN]            Exception Message CallBack Function Pointer
+    #  @param  pUser                       [IN]            User defined variable
+    #  @return Success, return MV_OK. Failure, return error code 
+    #  @remarks Call this interface after the device is opened by MV_CC_OpenDevice. 
+    #        When device is exceptionally disconnected, the exception message can be obtained from callback function. For Disconnected GigE device,
+    #        first call MV_CC_CloseDevice to shut device, and then call MV_CC_OpenDevice to reopen the device. 
+    def MV_CC_RegisterExceptionCallBack(self, ExceptionCallBackFun, pUser):
+        MvCamCtrldll.MV_CC_RegisterExceptionCallBack.argtype = (c_void_p, c_void_p, c_void_p)
+        MvCamCtrldll.MV_CC_RegisterExceptionCallBack.restype = c_uint
+        return MvCamCtrldll.MV_CC_RegisterExceptionCallBack(self.handle, ExceptionCallBackFun, pUser)
+
+    ##
+    #  @~chinese
+    #  @brief  娉ㄥ唽鍏ㄩ儴浜嬩欢鍥炶皟锛屽湪鎵撳紑璁惧涔嬪悗璋冪敤
+    #  @param  handle                      [IN]            璁惧鍙ユ焺
+    #  @param  cbEvent                     [IN]            浜嬩欢鍥炶皟鍑芥暟鎸囬拡
+    #  @param  pUser                       [IN]            鐢ㄦ埛鑷畾涔夊彉閲�
+    #  @return 鎴愬姛,杩斿洖MV_OK,澶辫触,杩斿洖閿欒鐮�
+    #  @remarks 閫氳繃璇ユ帴鍙h缃簨浠跺洖璋冿紝鍙互鍦ㄥ洖璋冨嚱鏁伴噷闈㈣幏鍙栭噰闆嗐�佹洕鍏夌瓑浜嬩欢淇℃伅
+    #        璇ユ帴鍙d笉鏀寔CameraLink璁惧銆�
+
+    #  @~english
+    #  @brief  Register event callback, which is called after the device is opened
+    #  @param  handle                      [IN]            Device handle
+    #  @param  cbEvent                     [IN]            Event CallBack Function Pointer
+    #  @param  pUser                       [IN]            User defined variable
+    #  @return Success, return MV_OK. Failure, return error code 
+    #  @remarks Call this API to set the event callback function to get the event information, e.g., acquisition, exposure, and so on
+    #        This API is not supported by CameraLink device.
+    def MV_CC_RegisterAllEventCallBack(self, EventCallBackFun, pUser):
+        MvCamCtrldll.MV_CC_RegisterAllEventCallBack.argtype = (c_void_p, c_void_p, c_void_p)
+        MvCamCtrldll.MV_CC_RegisterAllEventCallBack.restype = c_uint
+        return MvCamCtrldll.MV_CC_RegisterAllEventCallBack(self.handle, EventCallBackFun, pUser)
+
+    ##
+    #  @~chinese
+    #  @brief  娉ㄥ唽鍗曚釜浜嬩欢鍥炶皟锛屽湪鎵撳紑璁惧涔嬪悗璋冪敤
+    #  @param  handle                      [IN]            璁惧鍙ユ焺
+    #  @param  strEventName                [IN]            浜嬩欢鍚嶇О
+    #  @param  cbEvent                     [IN]            浜嬩欢鍥炶皟鍑芥暟鎸囬拡
+    #  @param  pUser                       [IN]            鐢ㄦ埛鑷畾涔夊彉閲�
+    #  @return 鎴愬姛,杩斿洖MV_OK,澶辫触,杩斿洖閿欒鐮�
+    #  @remarks 閫氳繃璇ユ帴鍙h缃簨浠跺洖璋冿紝鍙互鍦ㄥ洖璋冨嚱鏁伴噷闈㈣幏鍙栭噰闆嗐�佹洕鍏夌瓑浜嬩欢淇℃伅銆�
+    #        璇ユ帴鍙d笉鏀寔CameraLink璁惧銆�
+
+    #  @~english
+    #  @brief  Register single event callback, which is called after the device is opened
+    #  @param  handle                      [IN]            Device handle
+    #  @param  strEventName                [IN]            Event name
+    #  @param  cbEvent                     [IN]            Event CallBack Function Pointer
+    #  @param  pUser                       [IN]            User defined variable
+    #  @return Success, return MV_OK. Failure, return error code 
+    #  @remarks Call this API to set the event callback function to get the event information, e.g., acquisition, exposure, and so on.
+    #        This API is not supported by CameraLink device .
+    def MV_CC_RegisterEventCallBackEx(self, pEventName, EventCallBackFun, pUser):
+        MvCamCtrldll.MV_CC_RegisterEventCallBackEx.argtype = (c_void_p, c_void_p, c_void_p, c_void_p)
+        MvCamCtrldll.MV_CC_RegisterEventCallBackEx.restype = c_uint
+        return MvCamCtrldll.MV_CC_RegisterEventCallBackEx(self.handle, pEventName.encode('ascii'), EventCallBackFun,
+                                                          pUser)
+
+    ##
+    #  @~chinese
+    #  @brief  寮�鍚澶囨寚瀹氫簨浠�
+    #  @param  handle                      [IN]            璁惧鍙ユ焺
+    #  @param  strEventName                [IN]            浜嬩欢鍚嶇О
+    #  @return 鎴愬姛,杩斿洖MV_OK,澶辫触,杩斿洖閿欒鐮�
+
+    #  @~english
+    #  @brief  Enable specified event of device
+    #  @param  handle                      [IN]            Device handle
+    #  @param  strEventName                [IN]            Event name
+    #  @return Success, return MV_OK. Failure, return error code 
+    def MV_CC_EventNotificationOn(self, strEventName):
+        MvCamCtrldll.MV_CC_EventNotificationOn.argtype = (c_void_p, c_void_p)
+        MvCamCtrldll.MV_CC_EventNotificationOn.restype = c_uint
+        return MvCamCtrldll.MV_CC_EventNotificationOn(self.handle, strEventName.encode('ascii'))
+
+    ##
+    #  @~chinese
+    #  @brief  鍏抽棴璁惧鎸囧畾浜嬩欢
+    #  @param  handle                      [IN]            璁惧鍙ユ焺
+    #  @param  strEventName                [IN]            浜嬩欢鍚嶇О
+    #  @return 鎴愬姛,杩斿洖MV_OK,澶辫触,杩斿洖閿欒鐮�
+
+    #  @~english
+    #  @brief  Disable specified event of device
+    #  @param  handle                      [IN]            Device handle
+    #  @param  strEventName                [IN]            Event name
+    #  @return Success, return MV_OK. Failure, return error code 
+    def MV_CC_EventNotificationOff(self, strEventName):
+        MvCamCtrldll.MV_CC_EventNotificationOff.argtype = (c_void_p, c_void_p)
+        MvCamCtrldll.MV_CC_EventNotificationOff.restype = c_uint
+        return MvCamCtrldll.MV_CC_EventNotificationOff(self.handle, strEventName.encode('ascii'))
+    ## @}
+    
+    
+    ## @addtogroup  ch: 浠匞igE璁惧鏀寔鐨勬帴鍙� | en: Only support GigE interface
+    ## @{
+    
+    ##
+    #  @~chinese
+    #  @brief  璁剧疆鏋氫妇瓒呮椂鏃堕棿锛屼粎鏀寔GigE鍗忚锛岃寖鍥�:[1, UINT_MAX)
+    #  @param  nMilTimeout                 [IN]            瓒呮椂鏃堕棿锛屽簲涓烘棤绗﹀彿鏁存暟,榛樿100ms
+    #  @return 鎴愬姛锛岃繑鍥濵V_OK锛涢敊璇紝杩斿洖閿欒鐮� 
+    #  @remarks 鍦ㄨ皟鐢∕V_CC_EnumDevices绛夋灇涓炬帴鍙e墠浣跨敤璇ユ帴鍙o紝鍙缃灇涓綠IGE璁惧鐨勭綉鍗℃渶澶ц秴鏃舵椂闂达紙榛樿100ms锛�,鍙互鍑忓皯鏈�澶ц秴鏃舵椂闂达紝鏉ュ姞蹇灇涓綠IGE璁惧鐨勯�熷害
+    #  @remarks 浠呮敮鎸丟igEVision璁惧銆�
+
+    #  @~english
+    #  @brief  Set enumerate device timeout,only support GigE,range:[1, UINT_MAX)
+    #  @param  nMilTimeout                 [IN]            time out,input of unsigned int,default 100ms
+    #  @return Success, return MV_OK. Failure, return error code 
+    #  @remarks Before calling enum device interfaces,call MV_GIGE_SetEnumDevTimeout to set max timeout,can reduce the maximum timeout to speed up the enumeration of GigE devices.
+    #  @remarks This API only support GigE Vision Device.
+    def MV_GIGE_SetEnumDevTimeout(nMilTimeout):
+        MvCamCtrldll.MV_GIGE_SetEnumDevTimeout.argtype = (c_uint)
+        MvCamCtrldll.MV_GIGE_SetEnumDevTimeout.restype = c_uint
+        return MvCamCtrldll.MV_GIGE_SetEnumDevTimeout(c_uint(nMilTimeout))
+
+    ##
+    #  @~chinese
+    #  @brief  寮哄埗IP
+    #  @param  handle                      [IN]            璁惧鍙ユ焺
+    #  @param  nIP                         [IN]            璁剧疆鐨処P
+    #  @param  nSubNetMask                 [IN]            瀛愮綉鎺╃爜
+    #  @param  nDefaultGateWay             [IN]            榛樿缃戝叧
+    #  @return 鎴愬姛,杩斿洖MV_OK,澶辫触,杩斿洖閿欒鐮�
+    #  @remarks 寮哄埗璁剧疆璁惧缃戠粶鍙傛暟锛堝寘鎷琁P銆佸瓙缃戞帺鐮併�侀粯璁ょ綉鍏筹級锛屽己鍒惰缃箣鍚庡皢闇�瑕侀噸鏂板垱寤鸿澶囧彞鏌勶紝鏀寔GigEVision(MV_GIGE_DEVICE)璁惧鍜孏enTL(MV_GENTL_GIGE_DEVICE)璁惧
+    #        濡傛灉璁惧涓篋HCP鐨勭姸鎬侊紝璋冪敤璇ユ帴鍙e己鍒惰缃澶囩綉缁滃弬鏁颁箣鍚庤澶囧皢浼氶噸鍚��
+
+    #  @~english
+    #  @brief  Force IP
+    #  @param  handle                      [IN]            Device handle
+    #  @param  nIP                         [IN]            IP to set
+    #  @param  nSubNetMask                 [IN]            Subnet mask
+    #  @param  nDefaultGateWay             [IN]            Default gateway
+    #  @return Success, return MV_OK. Failure, return error code 
+    #  @remarks Force setting camera network parameter (including IP address, subnet mask, default gateway). After forced setting, device handle should be created again. 
+    #        This API support GigEVision(MV_GIGE_DEVICE) and GenTL(MV_GENTL_GIGE_DEVICE) device.
+    #        If device is in DHCP status, after calling this API to force setting camera network parameter, the device will restart.
+    def MV_GIGE_ForceIpEx(self, nIP, nSubNetMask, nDefaultGateWay):
+        MvCamCtrldll.MV_GIGE_ForceIpEx.argtype = (c_void_p, c_uint, c_uint, c_uint)
+        MvCamCtrldll.MV_GIGE_ForceIpEx.restype = c_uint
+        return MvCamCtrldll.MV_GIGE_ForceIpEx(self.handle, c_uint(nIP), c_uint(nSubNetMask), c_uint(nDefaultGateWay))
+
+    ##
+    #  @~chinese
+    #  @brief  閰嶇疆IP鏂瑰紡
+    #  @param  handle                      [IN]            璁惧鍙ユ焺
+    #  @param  nType                       [IN]            IP绫诲瀷锛岃MV_IP_CFG_x
+    #  @return 鎴愬姛,杩斿洖MV_OK,澶辫触,杩斿洖閿欒鐮�
+    #  @remarks 鍙戦�佸懡浠よ缃澶囩殑IP鏂瑰紡锛屽DHCP銆丩LA绛夛紝浠呮敮鎸丟igEVision(MV_GIGE_DEVICE)鍜孏enTl(MV_GENTL_GIGE_DEVICE)鐨勮澶囥��
+
+    #  @~english
+    #  @brief  IP configuration method
+    #  @param  handle                      [IN]            Device handle
+    #  @param  nType                       [IN]            IP type, refer to MV_IP_CFG_x
+    #  @return Success, return MV_OK. Failure, return error code 
+    #  @remarks Send command to set camera IP mode, such as DHCP and LLA, only supported by GigEVision(MV_GIGE_DEVICE) and GenTL(MV_GENTL_GIGE_DEVICE) Device.
+    def MV_GIGE_SetIpConfig(self, nType):
+        MvCamCtrldll.MV_GIGE_SetIpConfig.argtype = (c_void_p, c_uint)
+        MvCamCtrldll.MV_GIGE_SetIpConfig.restype = c_uint
+        return MvCamCtrldll.MV_GIGE_SetIpConfig(self.handle, c_uint(nType))
+
+    ##
+    #  @~chinese
+    #  @brief  璁剧疆浠呬娇鐢ㄦ煇绉嶆ā寮�,type: MV_NET_TRANS_x锛屼笉璁剧疆鏃讹紝榛樿浼樺厛浣跨敤driver
+    #  @param  handle                      [IN]            璁惧鍙ユ焺
+    #  @param  nType                       [IN]            缃戠粶浼犺緭妯″紡锛岃MV_NET_TRANS_x
+    #  @return 鎴愬姛,杩斿洖MV_OK,澶辫触,杩斿洖閿欒鐮�
+    #  @remarks 閫氳繃璇ユ帴鍙e彲浠ヨ缃甋DK鍐呴儴浼樺厛浣跨敤鐨勭綉缁滄ā寮忥紝榛樿浼樺厛浣跨敤椹卞姩妯″紡锛屼粎GigEVision璁惧鏀寔銆�
+
+    #  @~english
+    #  @brief  Set to use only one mode,type: MV_NET_TRANS_x. When do not set, priority is to use driver by default
+    #  @param  handle                      [IN]            Device handle
+    #  @param  nType                       [IN]            Net transmission mode, refer to MV_NET_TRANS_x
+    #  @return Success, return MV_OK. Failure, return error code 
+    #  @remarksSet SDK internal priority network mode through this interface, drive mode by default, only supported by GigEVision camera.
+    def MV_GIGE_SetNetTransMode(self, nType):
+        MvCamCtrldll.MV_GIGE_SetNetTransMode.argtype = (c_void_p, c_uint)
+        MvCamCtrldll.MV_GIGE_SetNetTransMode.restype = c_uint
+        return MvCamCtrldll.MV_GIGE_SetNetTransMode(self.handle, c_uint(nType))
+
+    ##
+    #  @~chinese
+    #  @brief  鑾峰彇缃戠粶浼犺緭淇℃伅
+    #  @param  handle                      [IN]            璁惧鍙ユ焺
+    #  @param  pstInfo                     [IN][OUT]       淇℃伅缁撴瀯浣�
+    #  @return 鎴愬姛,杩斿洖MV_OK,澶辫触,杩斿洖閿欒鐮�
+    #  @remarks 閫氳繃璇ユ帴鍙e彲浠ヨ幏鍙栫綉缁滀紶杈撶浉鍏充俊鎭紝鍖呮嫭宸叉帴鏀舵暟鎹ぇ灏忋�佷涪甯ф暟閲忕瓑锛屽湪MV_CC_StartGrabbing寮�鍚噰闆嗕箣鍚庤皟鐢ㄣ�備粎GigEVision璁惧鏀寔銆�
+
+    #  @~english
+    #  @brief  Get net transmission information
+    #  @param  handle                      [IN]            Device handle
+    #  @param  pstInfo                     [IN][OUT]       Information Structure
+    #  @return Success, return MV_OK. Failure, return error code
+    #  @remarks Get network transmission information through this API, including received data size, number of lost frames.
+    #        Call this API after starting image acquiring through MV_CC_StartGrabbing. This API is supported only by GigEVision Camera.
+    def MV_GIGE_GetNetTransInfo(self, pstInfo):
+        MvCamCtrldll.MV_GIGE_GetNetTransInfo.argtype = (c_void_p, c_void_p)
+        MvCamCtrldll.MV_GIGE_GetNetTransInfo.restype = c_uint
+        return MvCamCtrldll.MV_GIGE_GetNetTransInfo(self.handle, byref(pstInfo))
+
+    ##
+    #  @~chinese
+    #  @brief  璁剧疆鏋氫妇鍛戒护鐨勫洖澶嶅寘绫诲瀷
+    #  @param  nMode                       [IN]            鍥炲鍖呯被鍨嬶紙榛樿骞挎挱锛夛紝0-鍗曟挱锛�1-骞挎挱
+    #  @return 鎴愬姛锛岃繑鍥濵V_OK锛涢敊璇紝杩斿洖閿欒鐮� 
+    #  @remarks 璇ユ帴鍙e彧瀵笹igE鐩告満鏈夋晥銆�
+
+    #  @~english
+    #  @brief  Setting the ACK mode of devices Discovery.
+    #  @param  nMode                       [IN]            ACK mode锛圖efault-Broadcast锛�,0-Unicast,1-Broadcast.
+    #  @return Success, return MV_OK. Failure, return error code 
+    #  @remarks This interface is ONLY effective on GigE cameras.
+    def MV_GIGE_SetDiscoveryMode(nMode):
+        MvCamCtrldll.MV_GIGE_SetDiscoveryMode.argtype = (c_uint)
+        MvCamCtrldll.MV_GIGE_SetDiscoveryMode.restype = c_uint
+        return MvCamCtrldll.MV_GIGE_SetDiscoveryMode(c_uint(nMode))
+
+    ##
+    #  @~chinese
+    #  @brief  璁剧疆GVSP鍙栨祦瓒呮椂鏃堕棿
+    #  @param  handle                      [IN]            璁惧鍙ユ焺
+    #  @param  nMillisec                   [IN]            瓒呮椂鏃堕棿锛岄粯璁�300ms锛岃寖鍥达細>10ms
+    #  @return 鎴愬姛锛岃繑鍥濵V_OK锛涢敊璇紝杩斿洖閿欒鐮� 
+    #  @remarks 杩炴帴璁惧涔嬪悗锛屽彇娴佸姩浣滃彂鐢熷墠锛岃皟鐢ㄨ鎺ュ彛鍙互璁剧疆GVSP鍙栨祦瓒呮椂鏃堕棿銆侴VSP鍙栨祦瓒呮椂璁剧疆杩囩煭鍙兘閫犳垚鍥惧儚寮傚父锛岃缃繃闀垮彲鑳介�犳垚鍙栨祦鏃堕棿鍙橀暱銆�
+
+    #  @~english
+    #  @brief  Set GVSP streaming timeout
+    #  @param  handle                      [IN]            Device handle
+    #  @param  nMillisec                   [IN]            It refers to timeout duration (unit:millisecond), range:>10ms. The default value is 300 ms.
+    #  @return Success, return MV_OK. Failure, return error code
+    #  @remarks After the device is connected, and just before start streaming, 
+    #           call this interface to set GVSP streaming timeout value.
+    def MV_GIGE_SetGvspTimeout(self, nMillisec):
+        MvCamCtrldll.MV_GIGE_SetGvspTimeout.argtype = (c_void_p, c_uint)
+        MvCamCtrldll.MV_GIGE_SetGvspTimeout.restype = c_uint
+        return MvCamCtrldll.MV_GIGE_SetGvspTimeout(self.handle, c_uint(nMillisec))
+
+    ##
+    #  @~chinese
+    #  @brief  鑾峰彇GVSP鍙栨祦瓒呮椂鏃堕棿
+    #  @param  handle                      [IN]            璁惧鍙ユ焺
+    #  @param  pnMillisec                  [IN][OUT]       瓒呮椂鏃堕棿鎸囬拡锛屼互姣涓哄崟浣�
+    #  @return 鎴愬姛锛岃繑鍥濵V_OK锛涢敊璇紝杩斿洖閿欒鐮� 
+    #  @remarks 璇ユ帴鍙g敤浜庤幏鍙栧綋鍓嶇殑GVSP鍙栨祦瓒呮椂鏃堕棿
+
+    #  @~english
+    #  @brief  Get GVSP streaming timeout
+    #  @param  handle                      [IN]            Device handle
+    #  @param  pnMillisec                  [IN][OUT]       Timeout, ms as unit
+    #  @return Success, return MV_OK. Failure, return error code
+    #  @remarks This interface is used to get the current GVSP streaming timeout.
+    def MV_GIGE_GetGvspTimeout(self, pnMillisec):
+        MvCamCtrldll.MV_GIGE_GetGvspTimeout.argtype = (c_void_p, c_void_p)
+        MvCamCtrldll.MV_GIGE_GetGvspTimeout.restype = c_uint
+        return MvCamCtrldll.MV_GIGE_GetGvspTimeout(self.handle, byref(pnMillisec))
+
+    ##
+    #  @~chinese
+    #  @brief  璁剧疆GVCP鍛戒护瓒呮椂鏃堕棿
+    #  @param  handle                      [IN]            璁惧鍙ユ焺
+    #  @param  nMillisec                   [IN]            瓒呮椂鏃堕棿(ms)锛岄粯璁�500ms锛岃寖鍥达細[0,10000]
+    #  @return 鎴愬姛锛岃繑鍥濵V_OK锛涢敊璇紝杩斿洖閿欒鐮� 
+    #  @remarks 杩炴帴璁惧涔嬪悗璋冪敤璇ユ帴鍙e彲浠ヨ缃瓽VCP鍛戒护瓒呮椂鏃堕棿銆�
+
+    #  @~english
+    #  @brief  Set GVCP cammand timeout
+    #  @param  handle                      [IN]            Device handle
+    #  @param  nMillisec                   [IN]            Timeout(ms), default 500ms, range: [0,10000]
+    #  @return Success, return MV_OK. Failure, return error code
+    #  @remarks The API can set GVCP command timeout(ms) after device is connected .
+    def MV_GIGE_SetGvcpTimeout(self, nMillisec):
+        MvCamCtrldll.MV_GIGE_SetGvcpTimeout.argtype = (c_void_p, c_uint)
+        MvCamCtrldll.MV_GIGE_SetGvcpTimeout.restype = c_uint
+        return MvCamCtrldll.MV_GIGE_SetGvcpTimeout(self.handle, c_uint(nMillisec))
+
+    ##
+    #  @~chinese
+    #  @brief  鑾峰彇GVCP鍛戒护瓒呮椂鏃堕棿
+    #  @param  handle                      [IN]            璁惧鍙ユ焺
+    #  @param  pnMillisec                  [IN][OUT]       瓒呮椂鏃堕棿鎸囬拡锛屼互姣涓哄崟浣�
+    #  @return 鎴愬姛锛岃繑鍥濵V_OK锛涢敊璇紝杩斿洖閿欒鐮� 
+    #  @remarks 璇ユ帴鍙g敤浜庤幏鍙栧綋鍓嶇殑GVCP瓒呮椂鏃堕棿銆�
+
+    #  @~english
+    #  @brief  Get GVCP cammand timeout
+    #  @param  handle                      [IN]            Device handle
+    #  @param  pnMillisec                  [IN][OUT]       Timeout, ms as unit
+    #  @return Success, return MV_OK. Failure, return error code
+    #  @remarks This interface is used to get the current GVCP timeout.
+    def MV_GIGE_GetGvcpTimeout(self, pnMillisec):
+        MvCamCtrldll.MV_GIGE_GetGvcpTimeout.argtype = (c_void_p, c_void_p)
+        MvCamCtrldll.MV_GIGE_GetGvcpTimeout.restype = c_uint
+        return MvCamCtrldll.MV_GIGE_GetGvcpTimeout(self.handle, byref(pnMillisec))
+
+    ##
+    #  @~chinese
+    #  @brief  璁剧疆閲嶄紶GVCP鍛戒护娆℃暟
+    #  @param  handle                      [IN]            璁惧鍙ユ焺
+    #  @param  nRetryGvcpTimes             [IN]            閲嶄紶娆℃暟锛岃寖鍥达細0-100
+    #  @return 鎴愬姛锛岃繑鍥濵V_OK锛涢敊璇紝杩斿洖閿欒鐮� 
+    #  @remarks 璇ユ帴鍙g敤浜庡湪GVCP鍖呬紶杈撳紓甯告椂锛屽鍔犻噸浼犵殑娆℃暟锛屽湪涓�瀹氱▼搴︿笂鍙互閬垮厤璁惧鎺夌嚎锛岃寖鍥翠负0-100銆�
+
+    #  @~english
+    #  @brief  Set the number of retry GVCP cammand
+    #  @param  handle                      [IN]            Device handle
+    #  @param  nRetryGvcpTimes             [IN]            The number of retries锛宺ang锛�0-100
+    #  @return Success, return MV_OK. Failure, return error code
+    #  @remarks This interface is used to increase The Times of retransmission when GVCP packet transmission is abnormal,and to some extent,
+    #        it can avoid dropping the camera, with a range of 0-100.
+    def MV_GIGE_SetRetryGvcpTimes(self, nRetryGvcpTimes):
+        MvCamCtrldll.MV_GIGE_SetRetryGvcpTimes.argtype = (c_void_p, c_uint)
+        MvCamCtrldll.MV_GIGE_SetRetryGvcpTimes.restype = c_uint
+        return MvCamCtrldll.MV_GIGE_SetRetryGvcpTimes(self.handle, c_uint(nRetryGvcpTimes))
+
+    ##
+    #  @~chinese
+    #  @brief  鑾峰彇閲嶄紶GVCP鍛戒护娆℃暟
+    #  @param  handle                      [IN]            璁惧鍙ユ焺
+    #  @param  pnRetryGvcpTimes            [IN][OUT]       閲嶄紶娆℃暟鎸囬拡
+    #  @return 鎴愬姛锛岃繑鍥濵V_OK锛涢敊璇紝杩斿洖閿欒鐮� 
+    #  @remarks 璇ユ帴鍙g敤浜庤幏鍙栧綋鍓嶇殑GVCP閲嶄紶娆℃暟锛岄粯璁�3娆°��
+
+    #  @~english
+    #  @brief  Get the number of retry GVCP cammand
+    #  @param  handle                      [IN]            Device handle
+    #  @param  pnRetryGvcpTimes            [IN][OUT]       The number of retries
+    #  @return Success, return MV_OK. Failure, return error code
+    #  @remarks This interface is used to get the current number of GVCP retransmissions, which defaults to 3.
+    def MV_GIGE_GetRetryGvcpTimes(self, pnRetryGvcpTimes):
+        MvCamCtrldll.MV_GIGE_GetRetryGvcpTimes.argtype = (c_void_p, c_void_p)
+        MvCamCtrldll.MV_GIGE_GetRetryGvcpTimes.restype = c_uint
+        return MvCamCtrldll.MV_GIGE_GetRetryGvcpTimes(self.handle, byref(pnRetryGvcpTimes))
+
+    ##
+    #  @~chinese
+    #  @brief  鑾峰彇鏈�浣崇殑packet size锛岃鎺ュ彛鐩墠鍙敮鎸丟igE璁惧
+    #  @param  handle                      [IN]            璁惧鍙ユ焺
+    #  @return 鏈�浣硃acketsize
+    #  @remarks 鑾峰彇鏈�浣崇殑packet size锛屽搴擥igEVision璁惧鏄疭CPS銆�
+    #        璇ユ帴鍙i渶瑕佸湪MV_CC_OpenDevice涔嬪悗銆丮V_CC_StartGrabbing涔嬪墠璋冪敤銆�
+    #        璇ユ帴鍙d笉鏀寔CameraLink璁惧銆乁3V璁惧銆�
+    #        璇ユ帴鍙d笉鏀寔GenTL璁惧锛堝崗璁笉鏀寔锛�,濡傛灉鏄疓enTL鏂瑰紡娣诲姞鐨勭綉鍙g浉鏈猴紝寤鸿鏍规嵁缃戠粶瀹為檯鎯呭喌閰嶇疆GevSCPSPacketSize锛屾垨鑰呴厤缃�1500銆�
+
+    #  @~english
+    #  @brief  Get the optimal Packet Size, Only support GigE Camera
+    #  @param  handle                      [IN]            Device handle
+    #  @return Optimal packetsize
+    #  @remarks To get optimized packet size, for GigEVision device is SCPS
+    #        and it is the size of a packet transported on the network. The interface should be called after MV_CC_OpenDevice and before MV_CC_StartGrabbing.
+    #        This API is not supported by CameraLink device and U3V device. 
+    #        This interface does not support GenTL devices (protocol not supported). If a network camera is added in GenTL mode, it is recommended to configure GevSCPSPacketSize according to the actual network situation,or 1500.
+    def MV_CC_GetOptimalPacketSize(self):
+        MvCamCtrldll.MV_CC_GetOptimalPacketSize.argtype = (c_void_p)
+        MvCamCtrldll.MV_CC_GetOptimalPacketSize.restype = c_uint
+        return MvCamCtrldll.MV_CC_GetOptimalPacketSize(self.handle)
+
+    ##
+    #  @~chinese
+    #  @brief  璁剧疆鏄惁鎵撳紑閲嶅彂鍖呮敮鎸侊紝鍙婇噸鍙戝寘璁剧疆
+    #  @param  handle                      [IN]            璁惧鍙ユ焺
+    #  @param  bEnable                     [IN]            鏄惁鏀寔閲嶅彂鍖�
+    #  @param  nMaxResendPercent           [IN]            鏈�澶ч噸鍙戞瘮
+    #  @param  nResendTimeout              [IN]            閲嶅彂瓒呮椂鏃堕棿锛岃寖鍥达細0-10000ms
+    #  @return 鎴愬姛锛岃繑鍥濵V_OK锛涢敊璇紝杩斿洖閿欒鐮� 
+    #  @remarks 杩炴帴璁惧涔嬪悗璋冪敤璇ユ帴鍙e彲浠ヨ缃噸鍙戝寘灞炴�э紝浠匞igEVision璁惧鏀寔銆�
+
+    #  @~english
+    #  @brief  Set whethe to enable resend, and set resend
+    #  @param  handle                      [IN]            Device handle
+    #  @param  bEnable                     [IN]            enable resend
+    #  @param  nMaxResendPercent           [IN]            Max resend persent
+    #  @param  nResendTimeout              [IN]            Resend timeout, rang锛�0-10000ms
+    #  @return Success, return MV_OK. Failure, return error code
+    #  @remarks After the device is connected, call this interface to set resend packet properties, only supported by GigEVision camera.
+    def MV_GIGE_SetResend(self, bEnable, nMaxResendPercent=100, nResendTimeout=50):
+        MvCamCtrldll.MV_GIGE_SetResend.argtype = (c_void_p, c_uint, c_uint, c_uint)
+        MvCamCtrldll.MV_GIGE_SetResend.restype = c_uint
+        return MvCamCtrldll.MV_GIGE_SetResend(self.handle, c_uint(bEnable), c_uint(nMaxResendPercent),
+                                              c_uint(nResendTimeout))
+
+    ##
+    #  @~chinese
+    #  @brief  璁剧疆閲嶄紶鍛戒护鏈�澶у皾璇曟鏁�
+    #  @param  handle                      [IN]            璁惧鍙ユ焺
+    #  @param  nRetryTimes                 [IN]            閲嶄紶鍛戒护鏈�澶у皾璇曟鏁帮紝榛樿20
+    #  @return 鎴愬姛锛岃繑鍥濵V_OK锛涢敊璇紝杩斿洖閿欒鐮� 
+    #  @remarks 璇ユ帴鍙e繀椤诲湪璋冪敤MV_GIGE_SetResend寮�鍚噸浼犲寘鍔熻兘涔嬪悗璋冪敤锛屽惁鍒欏け璐ヤ笖杩斿洖MV_E_CALLORDER
+
+    #  @~english
+    #  @brief  set the max resend retry times
+    #  @param  handle                      [IN]            Device handle
+    #  @param  nRetryTimes                 [IN]            The max times to retry resending lost packets锛宒efault 20
+    #  @return Success, return MV_OK. Failure, return error code
+    #  @remarks This interface MUST be called after enabling resending lost packets by calling MV_GIGE_SetResend,
+    #           otherwise would fail and return MV_E_CALLORDER.
+    def MV_GIGE_SetResendMaxRetryTimes(self, nRetryTimes):
+        MvCamCtrldll.MV_GIGE_SetResendMaxRetryTimes.argtype = (c_void_p, c_uint)
+        MvCamCtrldll.MV_GIGE_SetResendMaxRetryTimes.restype = c_uint
+        return MvCamCtrldll.MV_GIGE_SetResendMaxRetryTimes(self.handle, c_uint(nRetryTimes))
+
+    ##
+    #  @~chinese
+    #  @brief  鑾峰彇閲嶄紶鍛戒护鏈�澶у皾璇曟鏁�
+    #  @param  handle                      [IN]            璁惧鍙ユ焺
+    #  @param  pnRetryTimes                [IN][OUT]       閲嶄紶鍛戒护鏈�澶у皾璇曟鏁�
+    #  @return 鎴愬姛锛岃繑鍥濵V_OK锛涢敊璇紝杩斿洖閿欒鐮� 
+    #  @remarks 璇ユ帴鍙e繀椤诲湪璋冪敤MV_GIGE_SetResend寮�鍚噸浼犲寘鍔熻兘涔嬪悗璋冪敤锛屽惁鍒欏け璐ヤ笖杩斿洖MV_E_CALLORDER
+
+    #  @~english
+    #  @brief  get the max resend retry times
+    #  @param  handle                      [IN]            Device handle
+    #  @param  pnRetryTimes                [IN][OUT]       The max times to retry resending lost packets
+    #  @return Success, return MV_OK. Failure, return error code
+    #  @remarks This interface MUST be called after enabling resending lost packets by calling MV_GIGE_SetResend,
+    #           otherwise would fail and return MV_E_CALLORDER. 
+    def MV_GIGE_GetResendMaxRetryTimes(self, nRetryTimes):
+        MvCamCtrldll.MV_GIGE_GetResendMaxRetryTimes.argtype = (c_void_p, c_void_p)
+        MvCamCtrldll.MV_GIGE_GetResendMaxRetryTimes.restype = c_uint
+        return MvCamCtrldll.MV_GIGE_GetResendMaxRetryTimes(self.handle, byref(nRetryTimes))
+
+
+    ##
+    #  @~chinese
+    #  @brief  璁剧疆鍚屼竴閲嶄紶鍖呭娆¤姹備箣闂寸殑鏃堕棿闂撮殧
+    #  @param  handle                      [IN]            璁惧鍙ユ焺
+    #  @param  nMillisec                   [IN]            鍚屼竴閲嶄紶鍖呭娆¤姹備箣闂寸殑鏃堕棿闂撮殧锛岄粯璁�10ms
+    #  @return 鎴愬姛锛岃繑鍥濵V_OK锛涢敊璇紝杩斿洖閿欒鐮� 
+    #  @remarks 璇ユ帴鍙e繀椤诲湪璋冪敤MV_GIGE_SetResend寮�鍚噸浼犲寘鍔熻兘涔嬪悗璋冪敤锛屽惁鍒欏け璐ヤ笖杩斿洖MV_E_CALLORDER
+
+    #  @~english
+    #  @brief  set time interval between same resend requests
+    #  @param  handle                      [IN]            Device handle
+    #  @param  nMillisec                   [IN]            The time interval between same resend requests,default 10ms
+    #  @return Success, return MV_OK. Failure, return error code
+    #  @remarks This interface MUST be called after enabling resending lost packets by calling MV_GIGE_SetResend,
+    #           otherwise would fail and return MV_E_CALLORDER. 
+    def MV_GIGE_SetResendTimeInterval(self, nMillisec):
+        MvCamCtrldll.MV_GIGE_SetResendTimeInterval.argtype = (c_void_p, c_uint)
+        MvCamCtrldll.MV_GIGE_SetResendTimeInterval.restype = c_uint
+        return MvCamCtrldll.MV_GIGE_SetResendTimeInterval(self.handle, c_uint(nMillisec))
+
+
+    ##
+    #  @~chinese
+    #  @brief  鑾峰彇鍚屼竴閲嶄紶鍖呭娆¤姹備箣闂寸殑鏃堕棿闂撮殧
+    #  @param  handle                      [IN]            璁惧鍙ユ焺
+    #  @param  pnMillisec                  [IN][OUT]       鍚屼竴閲嶄紶鍖呭娆¤姹備箣闂寸殑鏃堕棿闂撮殧
+    #  @return 鎴愬姛锛岃繑鍥濵V_OK锛涢敊璇紝杩斿洖閿欒鐮� 
+    #  @remarks 璇ユ帴鍙e繀椤诲湪璋冪敤MV_GIGE_SetResend寮�鍚噸浼犲寘鍔熻兘涔嬪悗璋冪敤锛屽惁鍒欏け璐ヤ笖杩斿洖MV_E_CALLORDER
+
+    #  @~english
+    #  @brief  get time interval between same resend requests
+    #  @param  handle                      [IN]            Device handle
+    #  @param  pnMillisec                  [IN][OUT]       The time interval between same resend requests
+    #  @return Success, return MV_OK. Failure, return error code
+    #  @remarks This interface MUST be called after enabling resending lost packets by calling MV_GIGE_SetResend,
+    #           otherwise would fail and return MV_E_CALLORDER. 
+    def MV_GIGE_GetResendTimeInterval(self, nMillisec):
+        MvCamCtrldll.MV_GIGE_GetResendTimeInterval.argtype = (c_void_p, c_void_p)
+        MvCamCtrldll.MV_GIGE_GetResendTimeInterval.restype = c_uint
+        return MvCamCtrldll.MV_GIGE_GetResendTimeInterval(self.handle, byref(nMillisec))
+
+    ##
+    #  @~chinese
+    #  @brief  璁剧疆浼犺緭妯″紡锛屽彲浠ヤ负鍗曟挱妯″紡銆佺粍鎾ā寮忕瓑
+    #  @param  handle                      [IN]            璁惧鍙ユ焺
+    #  @param  stTransmissionType          [IN]            浼犺緭妯″紡缁撴瀯浣�
+    #  @return 鎴愬姛锛岃繑鍥濵V_OK锛涢敊璇紝杩斿洖閿欒鐮� 
+    #  @remarks 閫氳繃璇ユ帴鍙e彲浠ヨ缃紶杈撴ā寮忎负鍗曟挱銆佺粍鎾瓑妯″紡锛屼粎GigEVision璁惧鏀寔銆�
+
+    #  @~english
+    #  @brief  Set transmission type,Unicast or Multicast
+    #  @param  handle                      [IN]            Device handle
+    #  @param  stTransmissionType          [IN]            Struct of transmission type
+    #  @return Success, return MV_OK. Failure, return error code
+    #  @remarks Call this API to set the transmission mode as single cast mode and multicast mode. And this API is only valid for GigEVision camera. 
+    def MV_GIGE_SetTransmissionType(self, stTransmissionType):
+        MvCamCtrldll.MV_GIGE_SetTransmissionType.argtype = (c_void_p, c_void_p)
+        MvCamCtrldll.MV_GIGE_SetTransmissionType.restype = c_uint
+        return MvCamCtrldll.MV_GIGE_SetTransmissionType(self.handle, byref(stTransmissionType))
+
+
+    ##
+    #  @~chinese
+    #  @brief   鍙戝嚭鍔ㄤ綔鍛戒护
+    #  @param   pstActionCmdInfo           [IN]            鍔ㄤ綔鍛戒护淇℃伅
+    #  @param   pstActionCmdResults        [IN][OUT]       鍔ㄤ綔鍛戒护杩斿洖淇℃伅鍒楄〃
+    #  @return 鎴愬姛锛岃繑鍥濵V_OK锛涢敊璇紝杩斿洖閿欒鐮� 
+    #  @remarks 浠匞igEVision璁惧鏀寔銆�
+
+    #  @~english
+    #  @brief  Issue Action Command
+    #  @param   pstActionCmdInfo           [IN]            Action Command
+    #  @param   pstActionCmdResults        [IN][OUT]       Action Command Result List
+    #  @return Success, return MV_OK. Failure, return error code
+    #  @remarks This API is supported only by GigEVision camera.
+    def MV_GIGE_IssueActionCommand(pstActionCmdInfo, pstActionCmdResults):
+        MvCamCtrldll.MV_GIGE_IssueActionCommand.argtype = (c_void_p, c_void_p)
+        MvCamCtrldll.MV_GIGE_IssueActionCommand.restype = c_uint
+        return MvCamCtrldll.MV_GIGE_IssueActionCommand(byref(pstActionCmdInfo), byref(pstActionCmdResults))
+
+    ##
+    #  @~chinese
+    #  @brief  鑾峰彇缁勬挱鐘舵��
+    #  @param  pstDevInfo                  [IN]            璁惧淇℃伅缁撴瀯浣�
+    #  @param  pbStatus                    [IN][OUT]       缁勬挱鐘舵��,true:缁勬挱鐘舵�侊紝false:闈炵粍鎾�
+    #  @return 鎴愬姛锛岃繑鍥濵V_OK锛涢敊璇紝杩斿洖閿欒鐮� 
+    #  @remarks 璇ユ帴鍙g敤浜庡垽鏂澶囧綋鍓嶆槸鍚﹀浜庣粍鎾姸鎬侊紝瑙e喅瀹㈡埛绔灇涓炬椂闇�瑕佹墦寮�璁惧鍒ゆ柇缁勬挱鐨勯棶棰樸��
+    #        浠呮敮鎸佹爣鍑咷igE Vision璁惧銆�
+
+    #  @~english
+    #  @brief  Get Multicast Status
+    #  @param  pstDevInfo                  [IN]            Device Information Structure
+    #  @param  pbStatus                    [IN][OUT]       Status of Multicast
+    #  @return Success, return MV_OK. Failure, return error code
+    #  @remarks This interface is used to determine whether the camera is currently in multicast state, 
+    #        and to solve the problem that the client needs to turn on the camera to determine multicast when enumerating.
+    #        This API only support GigE Vision Device.
+    def MV_GIGE_GetMulticastStatus(pstDevInfo, pbStatus):
+        MvCamCtrldll.MV_GIGE_GetMulticastStatus.argtype = (c_void_p, c_void_p)
+        MvCamCtrldll.MV_GIGE_GetMulticastStatus.restype = c_uint
+        return MvCamCtrldll.MV_GIGE_GetMulticastStatus(byref(pstDevInfo), byref(pbStatus))
+    ## @}
+    
+    ## @addtogroup  ch: 浠匔ameraLink 璁惧鏀寔鐨勬帴鍙� | en: Only support camlink device interface
+    ## @{
+
+    ##
+    #  @~chinese
+    #  @brief  鑾峰彇涓插彛淇℃伅鍒楄〃
+    #  @param  pstSerialPortList           [IN][OUT]       涓插彛淇℃伅鍒楄〃
+    #  @return 鎴愬姛锛岃繑鍥濵V_OK锛涢敊璇紝杩斿洖閿欒鐮� 
+    #  @remarks 璇ユ帴鍙g敤浜庤幏鍙栨湰鍦扮殑涓插彛淇℃伅銆�
+
+    #  @~english
+    #  @brief  Get serial port information list
+    #  @param  pstSerialPortList           [IN][OUT]       serial port information list
+    #  @return Success, return MV_OK. Failure, return error code
+    #  @remarks This interface is used to get local serial port information.
+    def MV_CAML_GetSerialPortList(stSerialPortList):
+        MvCamCtrldll.MV_CAML_GetSerialPortList.argtype = c_void_p
+        MvCamCtrldll.MV_CAML_GetSerialPortList.restype = c_uint
+        return MvCamCtrldll.MV_CAML_GetSerialPortList(byref(stSerialPortList))
+
+    ##
+    #  @~chinese
+    #  @brief  璁剧疆鍙栨寚瀹氭灇涓句覆鍙�
+    #  @param  pstSerialPortList           [IN][OUT]       涓插彛淇℃伅鍒楄〃
+    #  @return 鎴愬姛锛岃繑鍥濵V_OK锛涢敊璇紝杩斿洖閿欒鐮� 
+    #  @remarks 璇ユ帴鍙g敤浜庤缃灇涓綜ameraLink 璁惧鐨勬寚瀹氫覆鍙c��
+
+    #  @~english
+    #  @brief  Set the specified enumeration serial port
+    #  @param  pstSerialPortList           [IN]       serial port information list
+    #  @return Success, return MV_OK. Failure, return error code
+    #  @remarks This interface is used to set the specified enumeration serial port. 
+    def MV_CAML_SetEnumSerialPorts(stSerialPortList):
+        MvCamCtrldll.MV_CAML_SetEnumSerialPorts.argtype = c_void_p
+        MvCamCtrldll.MV_CAML_SetEnumSerialPorts.restype = c_uint
+        return MvCamCtrldll.MV_CAML_SetEnumSerialPorts(byref(stSerialPortList))
+
+    ##
+    #  @~chinese
+    #  @brief  璁剧疆璁惧娉㈢壒鐜�
+    #  @param  handle                      [IN]            璁惧鍙ユ焺
+    #  @param  nBaudrate                   [IN]            璁剧疆鐨勬尝鐗圭巼鍊硷紝鏁板�煎弬鑰僀ameraParams.h涓畯瀹氫箟锛屽#define MV_CAML_BAUDRATE_9600  0x00000001
+    #  @return 鎴愬姛,杩斿洖MV_OK,澶辫触,杩斿洖閿欒鐮�
+    #  @remarks 璇ユ帴鍙f敮鎸佸湪璁惧鏈繛鎺ユ椂璋冪敤. 閫氳繃GenTL鍗忚璁块棶璁惧鏃讹紝闇�瑕佸厛杩炴帴璁惧锛屾墠鑳借皟鐢ㄨ鎺ュ彛
+    #        鍥犵‖浠�/绯荤粺/澶栭儴骞叉壈绛夊洜绱�,閰嶇疆楂樻尝鐗圭巼鍙兘瀵艰嚧閫氫俊寮傚父锛屽缓璁厤缃尝鐗圭巼鏈�澶у皬浜�115200
+
+    #  @~english
+    #  @brief  Set device baudrate using one of the CL_BAUDRATE_XXXX value   
+    #  @param  handle                      [IN]            Device handle
+    #  @param  nBaudrate                   [IN]            baud rate to set. Refer to the 'CameraParams.h' for parameter definitions, for example, #define MV_CAML_BAUDRATE_9600  0x00000001
+    #  @return Success, return MV_OK. Failure, return error code 
+    #  @remarks This API is supported only by CameraLink device.
+    #        This API support calls when devices are not connected. But it is necessary to connect to the device first when accessing a CameraLink Device through the GenTL protocol.
+    #        Due to hardware/system/external interference and other factors, configuring a high baud rate may cause abnormal communication. 
+    #        It is recommended to configure a baud rate of less than 115200
+
+    def MV_CAML_SetDeviceBaudrate(self, nBaudrate):
+        MvCamCtrldll.MV_CAML_SetDeviceBaudrate.argtype = (c_void_p, c_uint)
+        MvCamCtrldll.MV_CAML_SetDeviceBaudrate.restype = c_uint
+        return MvCamCtrldll.MV_CAML_SetDeviceBaudrate(self.handle, c_uint(nBaudrate))
+
+    ##
+    #  @~chinese
+    #  @brief  鑾峰彇璁惧娉㈢壒鐜�
+    #  @param  handle                      [IN]            璁惧鍙ユ焺
+    #  @param  pnCurrentBaudrate           [IN][OUT]       娉㈢壒鐜囦俊鎭寚閽堬紝鏁板�煎弬鑰僀ameraParams.h涓畯瀹氫箟锛屽#define MV_CAML_BAUDRATE_9600  0x00000001
+    #  @return 鎴愬姛,杩斿洖MV_OK,澶辫触,杩斿洖閿欒鐮�
+    #  @remarks 璇ユ帴鍙f敮鎸佸湪璁惧鏈繛鎺ユ椂璋冪敤銆�
+
+    #  @~english
+    #  @brief  Returns the current device baudrate, using one of the CL_BAUDRATE_XXXX value
+    #  @param  handle                      [IN]            Device handle
+    #  @param  pnCurrentBaudrate           [IN][OUT]       Return pointer of baud rate to user. Refer to the 'CameraParams.h' for parameter definitions, for example, #define MV_CAML_BAUDRATE_9600  0x00000001
+    #  @return Success, return MV_OK. Failure, return error code 
+    #  @remarks This API is supported only by CameraLink device.
+    #        This API support calls when devices are not connected.
+    def MV_CAML_GetDeviceBaudrate(self, pnCurrentBaudrate):
+        MvCamCtrldll.MV_CAML_GetDeviceBaudrate.argtype = (c_void_p, c_void_p)
+        MvCamCtrldll.MV_CAML_GetDeviceBaudrate.restype = c_uint
+        return MvCamCtrldll.MV_CAML_GetDeviceBaudrate(self.handle, byref(pnCurrentBaudrate))
+
+    ##
+    #  @~chinese
+    #  @brief  鑾峰彇璁惧涓庝富鏈洪棿杩炴帴鏀寔鐨勬尝鐗圭巼
+    #  @param  handle                      [IN]            璁惧鍙ユ焺
+    #  @param  pnBaudrateAblity            [IN][OUT]       鏀寔鐨勬尝鐗圭巼淇℃伅鐨勬寚閽堛�傛墍鏈夋敮鎸佺殑娉㈢壒鐜囩殑"鎴栬繍绠�"缁撴灉锛屽崟涓暟鍊煎弬鑰僀ameraParams.h涓畯瀹氫箟锛屽MV_CAML_BAUDRATE_9600  0x00000001
+    #  @return 鎴愬姛,杩斿洖MV_OK,澶辫触,杩斿洖閿欒鐮�
+    #  @remarks 璇ユ帴鍙f敮鎸佸湪璁惧鏈繛鎺ユ椂璋冪敤銆�
+
+    #  @~english
+    #  @brief  Returns supported baudrates of the combined device and host interface
+    #  @param  handle                      [IN]            Device handle
+    #  @param  pnBaudrateAblity            [IN][OUT]       Return pointer of the supported baudrates to user. 'OR' operation results of the supported baudrates. Refer to the 'CameraParams.h' for single value definitions, for example, MV_CAML_BAUDRATE_9600  0x00000001
+    #  @return Success, return MV_OK. Failure, return error code 
+    #  @remarks This API is supported only by CameraLink device.
+    #        This API support calls when devices are not connected.
+    def MV_CAML_GetSupportBaudrates(self, pnBaudrateAblity):
+        MvCamCtrldll.MV_CAML_GetSupportBaudrates.argtype = (c_void_p, c_void_p)
+        MvCamCtrldll.MV_CAML_GetSupportBaudrates.restype = c_uint
+        return MvCamCtrldll.MV_CAML_GetSupportBaudrates(self.handle, byref(pnBaudrateAblity))
+
+    ##
+    #  @~chinese
+    #  @brief  璁剧疆涓插彛鎿嶄綔绛夊緟鏃堕暱
+    #  @param  handle                      [IN]            璁惧鍙ユ焺
+    #  @param  nMillisec                   [IN]            涓插彛鎿嶄綔鐨勭瓑寰呮椂闀�, 鍗曚綅涓簃s
+    #  @return 鎴愬姛,杩斿洖MV_OK,澶辫触,杩斿洖閿欒鐮�
+
+    #  @~english
+    #  @brief  Sets the timeout for operations on the serial port
+    #  @param  handle                      [IN]            Device handle
+    #  @param  nMillisec                   [IN]            Timeout in [ms] for operations on the serial port.
+    #  @return Success, return MV_OK. Failure, return error code 
+    def MV_CAML_SetGenCPTimeOut(self, nMillisec):
+        MvCamCtrldll.MV_CAML_SetGenCPTimeOut.argtype = (c_void_p, c_uint)
+        MvCamCtrldll.MV_CAML_SetGenCPTimeOut.restype = c_uint
+        return MvCamCtrldll.MV_CAML_SetGenCPTimeOut(self.handle, c_uint(nMillisec))
+    ## @}
+    
+    
+    ## @addtogroup  ch: 浠匲3V璁惧鏀寔鐨勬帴鍙� | en: Only support U3V device interface
+    ## @{
+
+    ##
+    #  @~chinese
+    #  @brief  璁剧疆U3V鐨勪紶杈撳寘澶у皬
+    #  @param  handle                      [IN]            璁惧鍙ユ焺
+    #  @param  nTransferSize               [IN]            浼犺緭鐨勫寘澶у皬, Byte锛岄粯璁や负1M锛宺ang锛�>=0x400锛屽缓璁渶澶у�硷細[windows] rang <= 0x400000锛沎Linux] rang <= 0x200000
+    #  @return 鎴愬姛,杩斿洖MV_OK,澶辫触,杩斿洖閿欒鐮�
+    #  @remarks 澧炲姞浼犺緭鍖呭ぇ灏忓彲浠ラ�傚綋闄嶄綆鍙栨祦鏃剁殑CPU鍗犵敤鐜囥�備絾涓嶅悓鐨凱C鍜屼笉鍚孶SB鎵╁睍鍗″瓨鍦ㄤ笉鍚岀殑鍏煎鎬э紝濡傛灉璇ュ弬鏁拌缃繃澶у彲鑳戒細鍑虹幇鍙栦笉鍒板浘鍍忕殑椋庨櫓銆�
+
+    #  @~english
+    #  @brief  Set transfer size of U3V device
+    #  @param  handle                      [IN]            Device handle
+    #  @param  nTransferSize               [IN]            Transfer size锛孊yte锛宒efault锛�1M锛宺ang锛�>=0x400锛孯ecommended maximum: [windows] rang <= 0x400000; [Linux] rang <= 0x200000
+    #  @return Success, return MV_OK. Failure, return error code 
+    #  @remarks Increasing the transmission packet size can reduce the CPU utilization at the time of fetching. However, different PCS and different USB extension CARDS have different compatibility, and if this parameter is set too large, there may be the risk of not getting the image.
+    def MV_USB_SetTransferSize(self, nTransferSize):
+        MvCamCtrldll.MV_USB_SetTransferSize.argtype = (c_void_p, c_uint)
+        MvCamCtrldll.MV_USB_SetTransferSize.restype = c_uint
+        return MvCamCtrldll.MV_USB_SetTransferSize(self.handle, c_uint(nTransferSize))
+
+    ##
+    #  @~chinese
+    #  @brief  鑾峰彇U3V鐨勪紶杈撳寘澶у皬
+    #  @param  handle                      [IN]            璁惧鍙ユ焺
+    #  @param  pnTransferSize              [IN][OUT]           浼犺緭鐨勫寘澶у皬鎸囬拡, Byte
+    #  @return 鎴愬姛,杩斿洖MV_OK,澶辫触,杩斿洖閿欒鐮�
+    #  @remarks 璇ユ帴鍙g敤浜庤幏鍙栧綋鍓嶇殑U3V浼犺緭鍖呭ぇ灏忥紝榛樿1M銆�
+
+    #  @~english
+    #  @brief  Get transfer size of U3V device
+    #  @param  handle                      [IN]            Device handle
+    #  @param  pnTransferSize              [IN][OUT]           Transfer size锛孊yte
+    #  @return Success, return MV_OK. Failure, return error code 
+    #  @remarks This interface is used to get the current U3V transfer packet size, default 1M.
+    def MV_USB_GetTransferSize(self, pnTransferSize):
+        MvCamCtrldll.MV_USB_GetTransferSize.argtype = (c_void_p, c_void_p)
+        MvCamCtrldll.MV_USB_GetTransferSize.restype = c_uint
+        return MvCamCtrldll.MV_USB_GetTransferSize(self.handle, byref(pnTransferSize))
+
+    ##
+    #  @~chinese
+    #  @brief  璁剧疆U3V鐨勪紶杈撻�氶亾涓暟
+    #  @param  handle                      [IN]            璁惧鍙ユ焺
+    #  @param  nTransferWays               [IN]            浼犺緭閫氶亾涓暟锛岃寖鍥达細1-10
+    #  @return 鎴愬姛,杩斿洖MV_OK,澶辫触,杩斿洖閿欒鐮�
+    #  @remarks 鐢ㄦ埛鍙互鏍规嵁PC鐨勬�ц兘銆佽澶囧嚭鍥惧抚鐜囥�佸浘鍍忓ぇ灏忓拰鍐呭瓨浣跨敤鐜囩瓑鍥犵礌瀵硅鍙傛暟杩涜璋冭妭銆備絾涓嶅悓鐨凱C鍜屼笉鍚岀殑USB鎵╁睍鍗″瓨鍦ㄤ笉鍚岀殑鍏煎鎬с��
+
+    #  @~english
+    #  @brief  Set transfer ways of U3V device
+    #  @param  handle                      [IN]            Device handle
+    #  @param  nTransferWays               [IN]            Transfer ways锛宺ang锛�1-10
+    #  @return Success, return MV_OK. Failure, return error code 
+    #  @remarks Users can adjust this parameter according to PC performance, camera image frame rate, image size, memory utilization and other factors. But different PCS and different USB expansion CARDS have different compatibility.
+    def MV_USB_SetTransferWays(self, nTransferWays):
+        MvCamCtrldll.MV_USB_SetTransferWays.argtype = (c_void_p, c_uint)
+        MvCamCtrldll.MV_USB_SetTransferWays.restype = c_uint
+        return MvCamCtrldll.MV_USB_SetTransferWays(self.handle, c_uint(nTransferWays))
+
+
+    ##
+    #  @~chinese
+    #  @brief  鑾峰彇U3V鐨勪紶杈撻�氶亾涓暟
+    #  @param  handle                      [IN]            璁惧鍙ユ焺
+    #  @param  pnTransferWays              [IN][OUT]       浼犺緭閫氶亾涓暟鎸囬拡
+    #  @return 鎴愬姛,杩斿洖MV_OK,澶辫触,杩斿洖閿欒鐮�
+    #  @remarks 璇ユ帴鍙g敤浜庤幏鍙栧綋鍓嶇殑U3V寮傛鍙栨祦鑺傜偣涓暟锛孶鍙g浉鏈轰紶杈撻�氶亾涓暟鍜屽儚绱犳牸寮忓搴旂殑璐熻浇鍖呭ぇ灏忕浉鍏筹紝閫氳繃鏈�澶у紓姝ユ敞鍐岄暱搴� / 鍍忕礌鏍煎紡瀵瑰簲鐨勮礋杞藉寘澶у皬 璁$畻寰楀嚭銆�
+
+    #  @~english
+    #  @brief  Get transfer ways of U3V device
+    #  @param  handle                      [IN]            Device handle
+    #  @param  pnTransferWays              [IN][OUT]       Transfer ways
+    #  @return Success, return MV_OK. Failure, return error code 
+    #  @remarks This interface is used to get the current number of U3V asynchronous feed nodes.
+    #    For U3V camera, The number of transmission channels is related to the size of the payload size corresponding to the pixel format, which is calculated by the maximum asynchronous registration length / the payload size corresponding to pixel format.
+    def MV_USB_GetTransferWays(self, pnTransferWays):
+        MvCamCtrldll.MV_USB_GetTransferWays.argtype = (c_void_p, c_void_p)
+        MvCamCtrldll.MV_USB_GetTransferWays.restype = c_uint
+        return MvCamCtrldll.MV_USB_GetTransferWays(self.handle, byref(pnTransferWays))
+
+
+    ##
+    #  @~chinese
+    #  @brief  璁剧疆U3V鐨勪簨浠剁紦瀛樿妭鐐逛釜鏁�
+    #  @param  handle                      [IN]            璁惧鍙ユ焺
+    #  @param  nEventNodeNum               [IN]            浜嬩欢缂撳瓨鑺傜偣涓暟锛岃寖鍥达細1-64
+    #  @return 鎴愬姛,杩斿洖MV_OK,澶辫触,杩斿洖閿欒鐮�
+    #  @remarks 璇ユ帴鍙g敤浜庤缃綋鍓嶇殑U3V浜嬩欢缂撳瓨鑺傜偣涓暟锛岄粯璁ゆ儏鍐典笅涓�5涓��
+
+    #  @~english
+    #  @brief  Set the number of U3V device event cache nodes
+    #  @param  handle                      [IN]            Device handle
+    #  @param  nEventNodeNum               [IN]            Event Node Number
+    #  @return Success, return MV_OK. Failure, return error code 
+    #  @remarks This interface is used to set the current number of U3V event nodes. default to 5 nodes.
+    def MV_USB_SetEventNodeNum(self, nEventNodeNum):
+        MvCamCtrldll.MV_USB_SetEventNodeNum.argtype = (c_void_p, c_uint)
+        MvCamCtrldll.MV_USB_SetEventNodeNum.restype = c_uint
+        return MvCamCtrldll.MV_USB_SetEventNodeNum(self.handle, c_uint(nEventNodeNum))
+
+
+    ##
+    #  @~chinese
+    #  @brief  璁剧疆U3V鐨勫悓姝ヨ鍐欒秴鏃舵椂闂达紝鑼冨洿涓�:[1000, INT_MAX]
+    #  @param  handle                      [IN]            璁惧鍙ユ焺
+    #  @param  nMills                      [IN]            璁剧疆鍚屾璇诲啓瓒呮椂鏃堕棿,榛樿鏃堕棿涓�1000ms
+    #  @return 鎴愬姛,杩斿洖MV_OK,澶辫触,杩斿洖閿欒鐮�
+    #  @remarks 澧炲姞璁剧疆鍚屾璇诲彇鏃堕棿鎺ュ彛锛屽吋瀹归儴鍒嗙浉鏈洪厤缃弬鏁板緢鎱紝瓒呰繃1000ms鐨勬儏鍐�
+
+    #  @~english
+    #  @brief  Set U3V Synchronisation timeout,range:[1000, INT_MAX]
+    #  @param  handle               [IN]            Device handle
+    #  @param  nMills               [IN]            set synchronisation timeout(ms),default 1000ms
+    #  @return Success, return MV_OK. Failure, return error code 
+    #  @remarks Increasing the SetSyncTimeOut can compatible with some camera configuretion parameters very slow,more than 1000ms 
+    def MV_USB_SetSyncTimeOut(self, nMills):
+        MvCamCtrldll.MV_USB_SetSyncTimeOut.argtype = (c_void_p, c_uint)
+        MvCamCtrldll.MV_USB_SetSyncTimeOut.restype = c_uint
+        return MvCamCtrldll.MV_USB_SetSyncTimeOut(self.handle, c_uint(nMills))
+
+    ##
+    #  @~chinese
+    #  @brief  鑾峰彇U3V鐩告満鍚屾璇诲啓瓒呮椂鏃堕棿
+    #  @param  handle                      [IN]            璁惧鍙ユ焺
+    #  @param  pnMills                     [IN][OUT]       鑾峰彇鐨勮秴鏃舵椂闂�(ms)
+    #  @return 鎴愬姛,杩斿洖MV_OK,澶辫触,杩斿洖閿欒鐮�
+    #  @remarks 璇ユ帴鍙g敤浜庤幏鍙栧綋鍓嶇殑U3V鍚屾璇诲啓瓒呮椂鏃堕棿澶у皬锛岄粯璁�1000ms銆�
+
+    #  @~english
+    #  @brief  Get U3V Camera Synchronisation timeout
+    #  @param  handle                      [IN]            Device handle
+    #  @param  pnMills                     [IN][OUT]       Get Synchronisation time(ms)
+    #  @return Success, return MV_OK. Failure, return error code 
+    #  @remarks This interface is used to get the current U3V timeout, default 1000ms.
+    def MV_USB_GetSyncTimeOut(self, nMills):
+        MvCamCtrldll.MV_USB_GetSyncTimeOut.argtype = (c_void_p, c_void_p)
+        MvCamCtrldll.MV_USB_GetSyncTimeOut.restype = c_uint
+        return MvCamCtrldll.MV_USB_GetSyncTimeOut(self.handle, byref(nMills))
+    ## @}
+    
+    ## @addtogroup  ch: GenTL鐩稿叧鎺ュ彛 | en: GenTL related interface
+    ## @{
+
+    ##
+    #  @~chinese
+    #  @brief  閫氳繃GenTL鏋氫妇Interfaces
+    #  @param  pstIFList                   [IN][OUT]       Interfaces鍒楄〃
+    #  @param  strGenTLPath                [IN]            GenTL鐨刢ti鏂囦欢璺緞
+    #  @return 鎴愬姛锛岃繑鍥濵V_OK锛涢敊璇紝杩斿洖閿欒鐮� 
+    #  @remarks Interfaces鍒楄〃鐨勫唴瀛樻槸鍦⊿DK鍐呴儴鍒嗛厤鐨勶紝澶氱嚎绋嬭皟鐢ㄨ鎺ュ彛鏃朵細杩涜璁惧鍒楄〃鍐呭瓨鐨勯噴鏀惧拰鐢宠
+    #    寤鸿灏介噺閬垮厤澶氱嚎绋嬫灇涓炬搷浣溿��
+    #    鏆備笉鏀寔宸ヤ笟鐩告満SDK鐩存帴璋冪敤MvProducerU3V.cti鍜孧vProducerGEV.cti锛� 鏀寔璋冪敤鍏朵粬.cti
+         
+    #  @~english
+    #  @brief  Enumerate Interfaces with GenTL
+    #  @param  pstIFList                   [IN][OUT]       Interfaces List
+    #  @param  strGenTLPath                [IN]            GenTL cti file path
+    #  @return Success, return MV_OK. Failure, return error code 
+    #  @remarks The memory of the Interfaces list is allocated within the SDK. When the interface is invoked by multiple threads, the memory of the device list will be released and applied.\n
+    #    It is recommended to avoid multithreaded enumeration operations as much as possible.
+    #    Currently not supported for SDK to directly call MvProducerU3V. cti and MvProducerGEV. cti. supports calling other. cti
+    def MV_CC_EnumInterfacesByGenTL(stIFList, strGenTLPath):
+        MvCamCtrldll.MV_CC_EnumInterfacesByGenTL.argtype = (c_void_p, c_void_p)
+        MvCamCtrldll.MV_CC_EnumInterfacesByGenTL.restype = c_uint
+        return MvCamCtrldll.MV_CC_EnumInterfacesByGenTL(byref(stIFList), strGenTLPath.encode('ascii'))
+
+    ##
+    #  @~chinese
+    #  @brief  閫氳繃GenTL Interface鏋氫妇璁惧
+    #  @param  pstIFInfo                   [IN]            Interface淇℃伅
+    #  @param  pstDevList                  [IN][OUT]           璁惧鍒楄〃
+    #  @return 鎴愬姛锛岃繑鍥濵V_OK锛涢敊璇紝杩斿洖閿欒鐮� 
+    #  @remarks 璁惧鍒楄〃鐨勫唴瀛樻槸鍦⊿DK鍐呴儴鍒嗛厤鐨勶紝澶氱嚎绋嬭皟鐢ㄨ鎺ュ彛鏃朵細杩涜璁惧鍒楄〃鍐呭瓨鐨勯噴鏀惧拰鐢宠
+    #        寤鸿灏介噺閬垮厤澶氱嚎绋嬫灇涓炬搷浣溿��
+
+    #  @~english
+    #  @brief  Enumerate Devices with GenTL interface
+    #  @param  pstIFInfo                   [IN]            Interface information
+    #  @param  pstDevList                  [IN][OUT]           Device List
+    #  @return Success, return MV_OK. Failure, return error code 
+    #  @remarks The memory of the list is allocated within the SDK. When the interface is invoked by multiple threads, the memory of the device list will be released and applied.\n
+    #        It is recommended to avoid multithreaded enumeration operations as much as possible.
+    def MV_CC_EnumDevicesByGenTL(stIFInfo, stDevList):
+        MvCamCtrldll.MV_CC_EnumDevicesByGenTL.argtype = (c_void_p, c_void_p)
+        MvCamCtrldll.MV_CC_EnumDevicesByGenTL.restype = c_uint
+        return MvCamCtrldll.MV_CC_EnumDevicesByGenTL(stIFInfo, byref(stDevList))
+
+    ##
+    #  @~chinese
+    #  @brief  鍗歌浇cti搴�
+    #  @param  pGenTLPath                [IN]            鏋氫妇鍗℃椂鍔犺浇鐨刢ti鏂囦欢璺緞
+    #  @return 鎴愬姛锛岃繑鍥濵V_OK锛涢敊璇紝杩斿洖閿欒鐮� 
+    #  @remarks 鍗歌浇鍓嶉渶瑕佷繚璇侀�氳繃璇ti鏋氫妇鍑虹殑鐩告満宸插叏閮ㄥ叧闂紝鍚﹀垯鎶ラ敊鍓嶇疆鏉′欢閿欒銆�
+
+    #  @~english
+    #  @brief  Unload cti library
+    #  @param  pGenTLPath                [IN]            GenTL cti file path
+    #  @return Success, return MV_OK. Failure, return error code 
+    #  @remarks Make sure that all devices enumerated by this cti are already closed.
+    @staticmethod
+    def MV_CC_UnloadGenTLLibrary(GenTLPath):
+        MvCamCtrldll.MV_CC_UnloadGenTLLibrary.argtype = (c_void_p)
+        MvCamCtrldll.MV_CC_UnloadGenTLLibrary.restype = c_uint
+        return MvCamCtrldll.MV_CC_UnloadGenTLLibrary(GenTLPath.encode('ascii'))
+
+    ##
+    #  @~chinese
+    #  @brief  閫氳繃GenTL璁惧淇℃伅鍒涘缓璁惧鍙ユ焺
+    #  @param  handle                      [IN][OUT]       璁惧鍙ユ焺
+    #  @param  pstDevInfo                  [IN]            璁惧淇℃伅缁撴瀯浣撴寚閽�
+    #  @return 鎴愬姛锛岃繑鍥濵V_OK锛涢敊璇紝杩斿洖閿欒鐮� 
+    #  @remarks 鏍规嵁杈撳叆鐨勮澶囦俊鎭紝鍒涘缓搴撳唴閮ㄥ繀椤荤殑璧勬簮鍜屽垵濮嬪寲鍐呴儴妯″潡銆�
+
+    #  @~english
+    #  @brief  Create Device Handle with GenTL Device Info
+    #  @param  handle                      [IN][OUT]       Device handle
+    #  @param  pstDevInfo                  [IN]            Device Information
+    #  @return Success, return MV_OK. Failure, return error code
+    #  @remarks Create required resources within library and initialize internal module according to input device information.
+    def MV_CC_CreateHandleByGenTL(self, stDevInfo):
+        MvCamCtrldll.MV_CC_CreateHandleByGenTL.argtype = (c_void_p, c_void_p)
+        MvCamCtrldll.MV_CC_CreateHandleByGenTL.restype = c_uint
+        return MvCamCtrldll.MV_CC_CreateHandleByGenTL(byref(self.handle), byref(stDevInfo))
+    ## @}
+    
+    
+    ## @addtogroup  ch: 鍥惧儚淇濆瓨銆佹牸寮忚浆鎹㈢瓑鐩稿叧鎺ュ彛 | en: Related image save and format convert interface 
+    ## @{
+
+    ##
+    #  @~chinese
+    #  @brief  淇濆瓨鍥剧墖锛屾敮鎸丅mp鍜孞peg.
+    #  @param  handle                      [IN]            璁惧鍙ユ焺
+    #  @param  pstSaveParam                [IN][OUT]       淇濆瓨鍥剧墖鍙傛暟缁撴瀯浣�
+    #  @return 鎴愬姛锛岃繑鍥濵V_OK锛涢敊璇紝杩斿洖閿欒鐮� 
+    #  @remarks 閫氳繃璇ユ帴鍙e彲浠ュ皢浠庤澶囬噰闆嗗埌鐨勫師濮嬪浘鍍忔暟鎹浆鎹㈡垚JPEG鎴栬�匓MP绛夋牸寮忓苟瀛樻斁鍦ㄦ寚瀹氬唴瀛樹腑锛岀劧鍚庣敤鎴峰彲浠ュ皢杞崲涔嬪悗鐨勬暟鎹洿鎺ヤ繚瀛樻垚鍥剧墖鏂囦欢銆�
+    #        璇ユ帴鍙h皟鐢ㄦ棤鎺ュ彛椤哄簭瑕佹眰锛屾湁鍥惧儚婧愭暟鎹氨鍙互杩涜杞崲锛屽彲浠ュ厛璋冪敤MV_CC_GetOneFrameTimeout鎴栬�匨V_CC_RegisterImageCallBackEx璁剧疆鍥炶皟鍑芥暟锛岃幏鍙栦竴甯у浘鍍忔暟鎹紝鐒跺悗鍐嶉�氳繃璇ユ帴鍙h浆鎹㈡牸寮忋��
+    #        璇ユ帴鍙f敮鎸佸浘鍍� 瀹姐�侀珮銆佹�婚暱鏈�澶ц嚦 UINT_MAX, 鍏朵腑MV_CC_SaveImageEx2鏀寔 瀹姐�侀珮銆佹�婚暱鏈�澶ц嚦 USHRT_MAX
+    #        JPEG鏍煎紡鏈�澶ф敮鎸佸楂樹负65500
+
+    #  @~english
+    #  @brief  Save image, support Bmp and Jpeg.
+    #  @param  handle                      [IN]            Device handle
+    #  @param  pstSaveParam                [IN][OUT]       Save image parameters structure
+    #  @return Success, return MV_OK. Failure, return error code
+    #  @remarks Once there is image data, you can call this API to convert the data.
+    #        You can also call MV_CC_GetOneFrameTimeout or MV_CC_RegisterImageCallBackEx or MV_CC_GetImageBuffer to get one image frame and set the callback function, and then call this API to convert the format.
+    #        Comparing with the API MV_CC_SaveImageEx2, this API support the parameter nWidth/nHeight/nDataLen to UINT_MAX. 
+    #        JPEG format supports a maximum width and height of 65500
+    def MV_CC_SaveImageEx3(self, stSaveParam):
+        MvCamCtrldll.MV_CC_SaveImageEx3.argtype = (c_void_p, c_void_p)
+        MvCamCtrldll.MV_CC_SaveImageEx3.restype = c_uint
+        return MvCamCtrldll.MV_CC_SaveImageEx3(self.handle, byref(stSaveParam))
+
+    ##
+    #  @~chinese
+    #  @brief  淇濆瓨鍥惧儚鍒版枃浠�
+    #  @param  handle                      [IN]            璁惧鍙ユ焺
+    #  @param  pstSaveFileParam            [IN][OUT]       淇濆瓨鍥剧墖鏂囦欢鍙傛暟缁撴瀯浣�
+    #  @return 鎴愬姛锛岃繑鍥濵V_OK锛涢敊璇紝杩斿洖閿欒鐮� 
+    #  @remarks 璇ユ帴鍙f敮鎸丅MP/JPEG/PNG/TIFF銆�
+    #        璇ユ帴鍙f敮鎸佸浘鍍� 瀹姐�侀珮銆佹�婚暱鏈�澶ц嚦 UINT_MAX
+    #        JPEG鏍煎紡鏈�澶ф敮鎸佸楂樹负65500
+    #        Windows骞冲彴鏂囦欢璺緞闀垮害涓嶈秴杩�260瀛楄妭锛孡inux骞冲彴涓嶈秴杩�255瀛楄妭
+    
+    #  @~english
+    #  @brief  Save the image file.
+    #  @param  handle                      [IN]            Device handle
+    #  @param  pstSaveFileParam            [IN][OUT]       Save the image file parameter structure
+    #  @return Success, return MV_OK. Failure, return error code
+    #  @remarks This API support BMP/JPEG/PNG/TIFF.
+    #        this API support the parameter nWidth/nHeight/nDataLen to UINT_MAX. 
+    #        JPEG format supports a maximum width and height of 65500
+    #        The file path length on the Windows platform does not exceed 260 bytes, and on the Linux platform, it does not exceed 255 bytes.
+    def MV_CC_SaveImageToFileEx(self, pstSaveFileParam):
+        MvCamCtrldll.MV_CC_SaveImageToFileEx.argtype = (c_void_p, c_void_p)
+        MvCamCtrldll.MV_CC_SaveImageToFileEx.restype = c_uint
+        return MvCamCtrldll.MV_CC_SaveImageToFileEx(self.handle, byref(pstSaveFileParam))
+
+    ##
+    #  @~chinese
+    #  @brief  淇濆瓨鍥惧儚鍒版枃浠�
+    #  @param  handle                      [IN]            璁惧鍙ユ焺
+    #  @param  pstImage                    [IN]            鍥惧儚淇℃伅
+    #  @param  pSaveImageParam             [IN]            瀛樺浘鍙傛暟
+    #  @param  pcImagePath                 [IN]            瀛樺浘璺緞
+    #  @return 鎴愬姛锛岃繑鍥濵V_OK锛涢敊璇紝杩斿洖閿欒鐮� 
+    #  @remarks 璇ユ帴鍙f敮鎸�4G浠ヤ笂瓒呭ぇ鍥剧殑PNG/TIFF瀛樺浘锛岄潪瓒呭ぇ鍥惧儚鏀寔BMP/JPEG/TIFF/PNG
+    #        JPEG鏍煎紡鏈�澶ф敮鎸佸楂樹负65500
+    #        Windows骞冲彴鏂囦欢璺緞闀垮害涓嶈秴杩�260瀛楄妭锛孡inux骞冲彴涓嶈秴杩�255瀛楄妭
+    
+    #  @~english
+    #  @brief  Save the image file.
+    #  @param  handle                      [IN]            Device handle
+    #  @param  pstImage                    [IN]            Image information
+    #  @param  pSaveImageParam             [IN]            Save the image file parameter structure
+    #  @param  pcImagePath                 [IN]            Image path
+    #  @return Success, return MV_OK. Failure, return error code
+    #  @remarks When the image size exceeds 4GB, only PNG and TIFF are supported. Otherwise, BMP,JPEG,TIFF and PNG are supported.
+    #        JPEG format supports a maximum width and height of 65500
+    #        The file path length on the Windows platform does not exceed 260 bytes, and on the Linux platform, it does not exceed 255 bytes.
+    def MV_CC_SaveImageToFileEx2(self, pstImage, pSaveImageParam, pcImagePath):
+        MvCamCtrldll.MV_CC_SaveImageToFileEx2.argtype = (c_void_p, c_void_p, c_void_p, c_void_p)
+        MvCamCtrldll.MV_CC_SaveImageToFileEx2.restype = c_uint
+        return MvCamCtrldll.MV_CC_SaveImageToFileEx2(self.handle, byref(pstImage), byref(pSaveImageParam), pcImagePath.encode('ascii'))
+
+    ##
+    #  @~chinese
+    #  @brief  鍥惧儚鏃嬭浆
+    #  @param  handle                      [IN]            璁惧鍙ユ焺
+    #  @param  pstRotateParam              [IN][OUT]       鍥惧儚鏃嬭浆鍙傛暟缁撴瀯浣�
+    #  @return 鎴愬姛锛岃繑鍥濵V_OK锛涢敊璇紝杩斿洖閿欒鐮� 
+    #  @remarks 璇ユ帴鍙e彧鏀寔MONO8/RGB24/BGR24鏍煎紡鏁版嵁鐨�90/180/270搴︽棆杞��
+
+    #  @~english
+    #  @brief  Rotate Image
+    #  @param  handle                      [IN]            Device handle
+    #  @param  pstRotateParam              [IN][OUT]       Rotate image parameter structure
+    #  @return Success, return MV_OK. Failure, return error code
+    #  @remarks This API only support 90/180/270 rotation of data in the MONO8/RGB24/BGR24 format.
+    def MV_CC_RotateImage(self, stRotateParam):
+        MvCamCtrldll.MV_CC_RotateImage.argtype = (c_void_p, c_void_p)
+        MvCamCtrldll.MV_CC_RotateImage.restype = c_uint
+        return MvCamCtrldll.MV_CC_RotateImage(self.handle, byref(stRotateParam))
+
+    ##
+    #  @~chinese
+    #  @brief  鍥惧儚缈昏浆
+    #  @param  handle                      [IN]            璁惧鍙ユ焺
+    #  @param  pstFlipParam                [IN][OUT]       鍥惧儚缈昏浆鍙傛暟缁撴瀯浣�
+    #  @return 鎴愬姛锛岃繑鍥濵V_OK锛涢敊璇紝杩斿洖閿欒鐮� 
+    #  @remarks 璇ユ帴鍙e彧鏀寔MONO8/RGB24/BGR24鏍煎紡鏁版嵁鐨勫瀭鐩村拰姘村钩缈昏浆銆�
+
+    #  @~english
+    #  @brief  Flip Image
+    #  @param  handle                      [IN]            Device handle
+    #  @param  pstFlipParam                [IN][OUT]       Flip image parameter structure
+    #  @return Success, return MV_OK. Failure, return error code
+    #  @remarks This API only support vertical and horizontal reverse of data in the MONO8/RGB24/BGR24 format.
+    def MV_CC_FlipImage(self, pstFlipParam):
+        MvCamCtrldll.MV_CC_FlipImage.argtype = (c_void_p, c_void_p)
+        MvCamCtrldll.MV_CC_FlipImage.restype = c_uint
+        return MvCamCtrldll.MV_CC_FlipImage(self.handle, byref(pstFlipParam))
+
+    ##
+    #  @~chinese
+    #  @brief  鍍忕礌鏍煎紡杞崲
+    #  @param  handle                      [IN]            璁惧鍙ユ焺
+    #  @param  pstCvtParam                 [IN][OUT]       鍍忕礌鏍煎紡杞崲鍙傛暟缁撴瀯浣�
+    #  @return 鎴愬姛锛岃繑鍥濵V_OK锛涢敊璇紝杩斿洖閿欒鐮� 
+    #  @remarks 閫氳繃灏嗘帴鍙e彲浠ュ皢浠庤澶囬噰闆嗗埌鐨勫師濮嬪浘鍍忔暟鎹浆鎹㈡垚鐢ㄦ埛鎵�闇�鐨勫儚绱犳牸寮忓苟瀛樻斁鍦ㄦ寚瀹氬唴瀛樹腑銆�
+    #        璇ユ帴鍙h皟鐢ㄦ棤鎺ュ彛椤哄簭瑕佹眰锛屾湁鍥惧儚婧愭暟鎹氨鍙互杩涜杞崲锛屽彲浠ュ厛璋冪敤MV_CC_GetOneFrameTimeout鎴栬�匨V_CC_RegisterImageCallBackEx璁剧疆鍥炶皟鍑芥暟锛�
+    #        鑾峰彇涓�甯у浘鍍忔暟鎹紝鐒跺悗鍐嶉�氳繃璇ユ帴鍙h浆鎹㈡牸寮忋�傚鏋滆澶囧綋鍓嶉噰闆嗗浘鍍忔槸JPEG鍘嬬缉鐨勬牸寮忥紝鍒欎笉鏀寔璋冪敤璇ユ帴鍙h繘琛岃浆鎹€��
+    #        璇ユ帴鍙f敮鎸佸浘鍍� 瀹姐�侀珮銆佹�婚暱鏈�澶ц嚦 UINT_MAX, 鍏朵腑MV_CC_ConvertPixelType鏀寔 瀹姐�侀珮銆佹�婚暱鏈�澶ц嚦 USHRT_MAX
+
+    #  @~english
+    #  @brief  Pixel format conversion
+    #  @param  handle                      [IN]            Device handle
+    #  @param  pstCvtParam                 [IN][OUT]       Convert Pixel Type parameter structure
+    #  @return Success, return MV_OK. Failure, return error code
+    #  @remarks This API is used to transform the collected original data to pixel format and save to specified memory. 
+    #        There is no order requirement to call this API, the transformation will execute when there is image data. 
+    #        First call MV_CC_GetOneFrameTimeout or MV_CC_RegisterImageCallBackEx to set callback function, and get a frame of image data,
+    #        then call this API to transform the format.
+    #        Comparing with the API MV_CC_ConvertPixelType, this API support the parameter nWidth/nHeight/nSrcDataLen to UINT_MAX. 
+    def MV_CC_ConvertPixelTypeEx(self, pstCvtParam):
+        MvCamCtrldll.MV_CC_ConvertPixelTypeEx.argtype = (c_void_p, c_void_p)
+        MvCamCtrldll.MV_CC_ConvertPixelTypeEx.restype = c_uint
+        return MvCamCtrldll.MV_CC_ConvertPixelTypeEx(self.handle, byref(pstCvtParam))
+
+    ##
+    #  @~chinese
+    #  @brief  璁剧疆鎻掑�肩畻娉曠被鍨�
+    #  @param  handle                      [IN]            璁惧鍙ユ焺
+    #  @param  nBayerCvtQuality            [IN]            Bayer鐨勬彃鍊兼柟娉�  0-蹇�� 1-鍧囪 锛堥粯璁や负鍧囪 锛� 2-鏈�浼� 3-鏈�浼�+
+    #  @return 鎴愬姛锛岃繑鍥濵V_OK锛涢敊璇紝杩斿洖閿欒鐮� 
+    #  @remarks 璁剧疆鍐呴儴鍥惧儚杞崲鎺ュ彛鐨凚ayer鎻掑�肩畻娉曠被鍨嬪弬鏁帮紝MV_CC_ConvertPixelTypeEx銆丮V_CC_GetImageForRGB/BGR鎺ュ彛鍐呴儴浣跨敤鐨勬彃鍊肩畻娉曟槸璇ユ帴鍙f墍璁惧畾鐨勩��
+
+    #  @~english
+    #  @brief  Interpolation algorithm type setting
+    #  @param  handle                      [IN]            Device handle
+    #  @param  nBayerCvtQuality            [IN]            Bayer interpolation method  0-Fast 1-Equilibrium 2-Optimal
+    #  @return Success, return MV_OK. Failure, return error code
+    #  @remarks Set the bell interpolation quality parameters of the internal image conversion interface, 
+    #           and the interpolation algorithm used in the MV_CC_ConvertPixelTypeEx and MV_CC_GetImageForRGB/BGR interfaces is set by this interface.
+    def MV_CC_SetBayerCvtQuality(self, nBayerCvtQuality):
+        MvCamCtrldll.MV_CC_SetBayerCvtQuality.argtype = (c_void_p, c_uint)
+        MvCamCtrldll.MV_CC_SetBayerCvtQuality.restype = c_uint
+        return MvCamCtrldll.MV_CC_SetBayerCvtQuality(self.handle, c_uint(nBayerCvtQuality))
+
+    ##
+    #  @~chinese
+    #  @brief  鎻掑�肩畻娉曞钩婊戜娇鑳借缃�
+    #  @param  handle                      [IN]            璁惧鍙ユ焺
+    #  @param  bFilterEnable               [IN]            骞虫粦浣胯兘(榛樿鍏抽棴)
+    #  @return 鎴愬姛锛岃繑鍥�#MV_OK锛涢敊璇紝杩斿洖閿欒鐮� 
+    #  @remarks 璁剧疆鍐呴儴鍥惧儚杞崲鎺ュ彛鐨凚ayer鎻掑�煎钩婊戜娇鑳藉弬鏁帮紝MV_CC_ConvertPixelTypeEx銆丮V_CC_SaveImageEx3銆丮V_CC_SaveImageToFileEx鎺ュ彛鍐呴儴浣跨敤鐨勬彃鍊肩畻娉曟槸璇ユ帴鍙f墍璁惧畾鐨勩��
+
+    #  @~english
+    #  @brief  Filter type of the bell interpolation quality algorithm setting
+    #  @param  handle                      [IN]            Device handle
+    #  @param  bFilterEnable               [IN]            Filter type enable
+    #  @return Success, return MV_OK. Failure, return error code
+    #  @remarks Set the Bayer interpolation filter type parameters of the internal image conversion interface, and the interpolation algorithm used in the MV_CC_ConvertPixelTypeEx \ MV_CC_SaveImageEx3 \ MV_CC_SaveImageToFileEx interfaces is set by this interface.
+    def MV_CC_SetBayerFilterEnable(self, bFilterEnable):
+        MvCamCtrldll.MV_CC_SetBayerFilterEnable.argtype = (c_void_p, c_bool)
+        MvCamCtrldll.MV_CC_SetBayerFilterEnable.restype = c_uint
+        return MvCamCtrldll.MV_CC_SetBayerFilterEnable(self.handle, c_bool(bFilterEnable))
+
+    ##
+    #  @~chinese
+    #  @brief  璁剧疆Bayer鏍煎紡鐨凣amma鍊�
+    #  @param  handle                      [IN]            璁惧鍙ユ焺
+    #  @param  fBayerGammaValue            [IN]            Gamma鍊�:0.1 ~ 4.0
+    #  @return 鎴愬姛锛岃繑鍥濵V_OK锛涢敊璇紝杩斿洖閿欒鐮� 
+    #  @remarks 璁剧疆璇ュ�煎悗锛屽湪Bayer鍥惧儚锛圔ayer8/10/12/16锛夎浆RGB/BGR鍥惧儚(RGB24/48銆丷GBA32/64銆丅GR24/48銆丅GRA32/64)鏃惰捣鏁堛�� 鐩稿叧鎺ュ彛锛� MV_CC_ConvertPixelTypeEx銆� MV_CC_SaveImageEx3銆丮V_CC_SaveImageToFileEx銆�
+
+    #  @~english
+    #  @brief  Set Gamma value
+    #  @param  handle                      [IN]            Device handle
+    #  @param  fBayerGammaValue            [IN]            Gamma value[0.1,4.0]
+    #  @return Success, return MV_OK. Failure, return error code
+    #  @remarks After setting this value, it takes effect when converting Bayer images (Bayer8/10/12/16) to RGB/BGR images (RGB24/48, RGBA32/64, BGR24/48, BGRA32/64). Related interfaces: MV_CC_ConvertPixelTypeEx, MV_CC_SaveImageEx3, MV_CC_SaveImageToFileEx.
+    def MV_CC_SetBayerGammaValue(self, fBayerGammaValue):
+        MvCamCtrldll.MV_CC_SetBayerGammaValue.argtype = (c_void_p, c_float)
+        MvCamCtrldll.MV_CC_SetBayerGammaValue.restype = c_uint
+        return MvCamCtrldll.MV_CC_SetBayerGammaValue(self.handle, c_float(fBayerGammaValue))
+
+    ##
+    #  @~chinese
+    #  @brief   璁剧疆Mono8/Bayer8/10/12/16鏍煎紡鐨凣amma鍊�
+    #  @param   handle                           [IN] 璁惧鍙ユ焺
+    #  @param   MvGvspPixelType enSrcPixelType   [IN] 鍍忕礌鏍煎紡,鏀寔PixelType_Gvsp_Mono8,Bayer8/10/12/16
+    #  @param   fGammaValue                      [IN] Gamma鍊�:0.1 ~ 4.0
+    #  @return  鎴愬姛锛岃繑鍥濵V_OK锛涢敊璇紝杩斿洖閿欒鐮� 
+    #  @remarks 璁剧疆Mono8鐨刧amma鍊煎悗锛屽湪璋冪敤MV_CC_ConvertPixelTypeEx鎺ュ彛灏哅ono8杞垚Mono8鏃秅amma鍊艰捣鏁堛��
+    #  @remarks 璁剧疆Bayer鐨刧amma鍊煎悗锛屽湪Bayer鍥惧儚锛圔ayer8/10/12/16锛夎浆RGB/BGR鍥惧儚(RGB24/48銆丷GBA32/64銆丅GR24/48銆丅GRA32/64)鏃惰捣鏁堛�傜浉鍏虫帴鍙o細 MV_CC_ConvertPixelTypeEx銆� MV_CC_SaveImageEx3銆丮V_CC_SaveImageToFileEx銆�
+    #  @remarks 璇ユ帴鍙e吋瀹筂V_CC_SetBayerGammaValue鎺ュ彛锛屾柊澧炴敮鎸丮ono8鍍忕礌鏍煎紡
+
+    #  @~english
+    #  @brief  Set Gamma value
+    #  @param  handle                           [IN]            Device handle
+    #  @param  MvGvspPixelType enSrcPixelType   [IN]            PixelType,support PixelType_Gvsp_Mono8,Bayer8/10/12/16
+    #  @param  fGammaValue                      [IN]            Gamma value:0.1~ 4.0
+    #  @remarks After setting the gamma of Mono8 锛宼he gamma value takes effect when calling MV_CC_ConvertPixelTypeEx converts Mono8 to Mono8.
+    #  @remarks After setting the gamma value for Bayer8/10/12/16, it takes effect when converting the Bayer image (Bayer8/10/12/16) to RGB/BGR images (RGB24/48, RGBA32/64, BGR24/48, BGRA32/64). Relevant interfaces: MV_CC_ConvertPixelTypeEx, MV_CC_SaveImageEx3, MV_CC_SaveImageToFileEx.
+    #  @remarks This API compatible with MV_CC_SetBayerGammaValue, adds Mono8 PixelType.
+    #  @return Success, return MV_OK. Failure, return error code
+    def MV_CC_SetGammaValue(self, enSrcPixelType, fGammaValue):
+        MvCamCtrldll.MV_CC_SetGammaValue.argtype = (c_void_p, c_int, c_float)
+        MvCamCtrldll.MV_CC_SetGammaValue.restype = c_uint
+        return MvCamCtrldll.MV_CC_SetGammaValue(self.handle, c_int(enSrcPixelType), c_float(fGammaValue))
+
+    ##
+    #  @~chinese
+    #  @brief  璁剧疆Bayer鏍煎紡鐨凣amma淇℃伅
+    #  @param  handle                      [IN]            璁惧鍙ユ焺
+    #  @param  pstGammaParam               [IN]            Gamma淇℃伅   
+    #  @return 鎴愬姛锛岃繑鍥濵V_OK锛涢敊璇紝杩斿洖閿欒鐮� 
+    #  @remarks 璁剧疆璇ュ�煎悗锛屽湪Bayer鍥惧儚锛圔ayer8/10/12/16锛夎浆RGB/BGR鍥惧儚(RGB24/48銆丷GBA32/64銆丅GR24/48銆丅GRA32/64)鏃惰捣鏁堛�� 鐩稿叧鎺ュ彛锛� MV_CC_ConvertPixelTypeEx銆� MV_CC_SaveImageEx3銆丮V_CC_SaveImageToFileEx銆�
+
+    #  @~english
+    #  @brief  Set Gamma param
+    #  @param  handle                      [IN]            Device handle
+    #  @param  pstGammaParam               [IN]            Gamma param
+    #  @return Success, return MV_OK. Failure, return error code
+    #  @remarks After setting this value, it takes effect when converting Bayer images (Bayer8/10/12/16) to RGB/BGR images (RGB24/48, RGBA32/64, BGR24/48, BGRA32/64). Related interfaces: MV_CC_ConvertPixelTypeEx, MV_CC_SaveImageEx3, MV_CC_SaveImageToFileEx.
+    def MV_CC_SetBayerGammaParam(self, stGammaParam):
+        MvCamCtrldll.MV_CC_SetBayerGammaParam.argtype = (c_void_p, c_void_p)
+        MvCamCtrldll.MV_CC_SetBayerGammaParam.restype = c_uint
+        return MvCamCtrldll.MV_CC_SetBayerGammaParam(self.handle, byref(stGammaParam))
+
+    ##
+    #  @~chinese
+    #  @brief  璁剧疆Bayer鏍煎紡鐨凜CM浣胯兘鍜岀煩闃碉紝閲忓寲绯绘暟榛樿1024
+    #  @param  handle                      [IN]            璁惧鍙ユ焺
+    #  @param  pstCCMParam                 [IN]            CCM鍙傛暟
+    #  @return 鎴愬姛锛岃繑鍥濵V_OK锛涢敊璇紝杩斿洖閿欒鐮� 
+    #  @remarks 寮�鍚疌CM骞惰缃瓹CM鐭╅樀鍚庯紝鍦˙ayer鍥惧儚锛圔ayer8/10/12/16锛夎浆RGB/BGR鍥惧儚(RGB24/48銆丷GBA32/64銆丅GR24/48銆丅GRA32/64)鏃惰捣鏁堛�� 鐩稿叧鎺ュ彛锛� MV_CC_ConvertPixelTypeEx銆� MV_CC_SaveImageEx3銆丮V_CC_SaveImageToFileEx銆� 
+
+    #  @~english
+    #  @brief  Set CCM param,Scale default 1024
+    #  @param  handle                      [IN]            Device handle
+    #  @param  pstCCMParam                 [IN]            CCM parameter structure
+    #  @return Success, return MV_OK. Failure, return error code
+    #  @remarks After enable the color correction and set the color correction matrix, it takes effect when converting Bayer images (Bayer8/10/12/16) to RGB/BGR images (RGB24/48, RGBA32/64, BGR24/48, BGRA32/64). Related interfaces: MV_CC_ConvertPixelTypeEx, MV_CC_SaveImageEx3, MV_CC_SaveImageToFileEx.
+    def MV_CC_SetBayerCCMParam(self, stCCMParam):
+        MvCamCtrldll.MV_CC_SetBayerCCMParam.argtype = (c_void_p, c_void_p)
+        MvCamCtrldll.MV_CC_SetBayerCCMParam.restype = c_uint
+        return MvCamCtrldll.MV_CC_SetBayerCCMParam(self.handle, byref(stCCMParam))
+
+    ##
+    #  @~chinese
+    #  @brief  璁剧疆Bayer鏍煎紡鐨凜CM浣胯兘鍜岀煩闃�
+    #  @param  handle                      [IN]            璁惧鍙ユ焺
+    #  @param  pstCCMParam                 [IN]            CCM鍙傛暟
+    #  @return 鎴愬姛锛岃繑鍥濵V_OK锛涢敊璇紝杩斿洖閿欒鐮� 
+    #  @remarks 寮�鍚疌CM骞惰缃瓹CM鐭╅樀鍚庯紝鍦˙ayer鍥惧儚锛圔ayer8/10/12/16锛夎浆RGB/BGR鍥惧儚(RGB24/48銆丷GBA32/64銆丅GR24/48銆丅GRA32/64)鏃惰捣鏁堛�� 鐩稿叧鎺ュ彛锛� MV_CC_ConvertPixelTypeEx銆� MV_CC_SaveImageEx3銆丮V_CC_SaveImageToFileEx銆�
+
+    #  @~english
+    #  @brief  Set CCM param
+    #  @param  handle                      [IN]            Device handle
+    #  @param  pstCCMParam                 [IN]            CCM parameter structure
+    #  @return Success, return MV_OK. Failure, return error code
+    #  @remarks After enable the color correction and set the color correction matrix, it takes effect when converting Bayer images (Bayer8/10/12/16) to RGB/BGR images (RGB24/48, RGBA32/64, BGR24/48, BGRA32/64). Related interfaces: MV_CC_ConvertPixelTypeEx, MV_CC_SaveImageEx3, MV_CC_SaveImageToFileEx.
+    def MV_CC_SetBayerCCMParamEx(self, stCCMParam):
+        MvCamCtrldll.MV_CC_SetBayerCCMParamEx.argtype = (c_void_p, c_void_p)
+        MvCamCtrldll.MV_CC_SetBayerCCMParamEx.restype = c_uint
+        return MvCamCtrldll.MV_CC_SetBayerCCMParamEx(self.handle, byref(stCCMParam))
+
+    ##
+    #  @~chinese
+    #  @brief  鍥惧儚瀵规瘮搴﹁皟鑺�
+    #  @param  handle                      [IN]            璁惧鍙ユ焺
+    #  @param  pstContrastParam            [IN][OUT]       瀵规瘮搴﹁皟鑺傚弬鏁�
+    #  @return 鎴愬姛锛岃繑鍥濵V_OK锛涢敊璇紝杩斿洖閿欒鐮� 
+    #  @remarks 
+
+    #  @~english
+    #  @brief  Adjust image contrast
+    #  @param  handle                      [IN]            Device handle
+    #  @param  pstContrastParam            [IN][OUT]       Contrast parameter structure
+    #  @return Success, return MV_OK. Failure, return error code
+    #  @remarks 
+    def MV_CC_ImageContrast(self, stConstrastParam):
+        MvCamCtrldll.MV_CC_ImageContrast.argtype = (c_void_p, c_void_p)
+        MvCamCtrldll.MV_CC_ImageContrast.restype = c_uint
+        return MvCamCtrldll.MV_CC_ImageContrast(self.handle, byref(stConstrastParam))
+
+    ##
+    #  @~chinese
+    #  @brief  鍥惧儚鍘荤传杈�
+    #  @param  handle                      [IN]            璁惧鍙ユ焺
+    #  @param  pstPurpleFringingParam      [IN][OUT]       鍘荤传杈瑰弬鏁�
+    #  @return 鎴愬姛锛岃繑鍥濵V_OK锛涢敊璇紝杩斿洖閿欒鐮� 
+    #  @remarks 鍍忕礌鏍煎紡浠呮敮鎸丳ixelType_Gvsp_RGB8_Packed鍜孭ixelType_Gvsp_BGR8_Packed
+
+    #  @~english
+    #  @brief  Remove the purple edge from the image.
+    #  @param  handle                      [IN]            Device handle
+    #  @param  pstPurpleFringingParam      [IN][OUT]       PurpleFringing parameter structure
+    #  @return Success, return MV_OK. Failure, return error code
+    #  @remarks Only supports PixelType_Gvsp_RGB8_Packed and PixelType_Gvsp_BGR8_Packed.
+    def MV_CC_PurpleFringing(self, pstPurpleFringingParam):
+        MvCamCtrldll.MV_CC_PurpleFringing.argtype = (c_void_p, c_void_p)
+        MvCamCtrldll.MV_CC_PurpleFringing.restype = c_uint
+        return MvCamCtrldll.MV_CC_PurpleFringing(self.handle, byref(pstPurpleFringingParam))
+
+    ##
+    #  @~chinese
+    #  @brief  璁剧疆ISP鍙傛暟
+    #  @param  handle                      [IN]            璁惧鍙ユ焺
+    #  @param  pstParam                    [IN]            ISP閰嶇疆鍙傛暟
+    #  @return 鎴愬姛锛岃繑鍥濵V_OK锛涢敊璇紝杩斿洖閿欒鐮�
+
+    #  @~english
+    #  @brief  Set ISP configuration.
+    #  @param  handle                      [IN]            Device handle
+    #  @param  pstParam                    [IN][OUT]       ISP parameter structure
+    #  @return Success, return MV_OK. Failure, return error code
+    def MV_CC_SetISPConfig(self, pstParam):
+        MvCamCtrldll.MV_CC_SetISPConfig.argtype = (c_void_p, c_void_p)
+        MvCamCtrldll.MV_CC_SetISPConfig.restype = c_uint
+        return MvCamCtrldll.MV_CC_SetISPConfig(self.handle, byref(pstParam))
+
+    ##
+    #  @~chinese
+    #  @brief  瀵瑰浘鍍忚繘琛孖SP绠楁硶澶勭悊
+    #  @param  handle                      [IN]            璁惧鍙ユ焺
+    #  @param  pstInputImage               [IN]            杈撳叆鍥惧儚缁撴瀯浣�
+    #  @param  pstOutputImage              [IN][OUT]       杈撳嚭鍥惧儚缁撴瀯浣�
+    #  @return 鎴愬姛锛岃繑鍥濵V_OK锛涢敊璇紝杩斿洖閿欒鐮�
+    #  @remarks 闇�瑕佸厛璋冪敤MV_CC_SetISPConfig浼犲叆閰嶇疆鏂囦欢, 閰嶇疆鏂囦欢鐢盜SP宸ュ叿鐢熸垚
+
+    #  @~english
+    #  @brief  ISP process.
+    #  @param  handle                      [IN]            Device handle
+    #  @param  pstInputImage               [IN]            Input image structure
+    #  @param  pstOutputImage              [IN][OUT]       Output image structure
+    #  @return Success, return MV_OK. Failure, return error code
+    #  @remarks The Interface should be called after MV_CC_SetISPConfig.
+    def MV_CC_ISPProcess(self, pstInputImage, pstOutputImage):
+        MvCamCtrldll.MV_CC_ISPProcess.argtype = (c_void_p, c_void_p, pstOutputImage)
+        MvCamCtrldll.MV_CC_ISPProcess.restype = c_uint
+        return MvCamCtrldll.MV_CC_ISPProcess(self.handle, byref(pstInputImage), byref(pstOutputImage))
+
+
+    ##
+    #  @~chinese
+    #  @brief  鏃犳崯瑙g爜
+    #  @param  handle                      [IN]            璁惧鍙ユ焺
+    #  @param  pstDecodeParam              [IN][OUT]       鏃犳崯瑙g爜鍙傛暟缁撴瀯浣�
+    #  @return 鎴愬姛锛岃繑鍥濵V_OK锛涢敊璇紝杩斿洖閿欒鐮� 
+    #  @remarks 灏嗕粠鐩告満涓彇鍒扮殑鏃犳崯鍘嬬缉鐮佹祦瑙g爜鎴愯8鏁版嵁锛屽悓鏃舵敮鎸佽В鏋愬綋鍓嶇浉鏈哄疄鏃跺浘鍍忕殑姘村嵃淇℃伅锛堝鏋滆緭鍏ョ殑鏃犳崯鐮佹祦涓嶆槸褰撳墠鐩告満鎴栬�呬笉鏄疄鏃跺彇娴佺殑锛屽垯姘村嵃瑙f瀽鍙兘寮傚父锛�;
+    #        鑻ヨВ鐮佸け璐ワ紝璇锋鏌ヤ互涓嬫儏鍐碉細锛�1锛夐渶瑕丆PU鏀寔 SSE AVX鎸囦护闆嗭紙2锛夎嫢褰撳墠甯у紓甯革紙涓㈠寘绛夛級,鍙兘瀵艰嚧瑙g爜寮傚父锛�3锛夌浉鏈哄嚭鍥惧紓甯革紝 鍗充娇涓嶄涪鍖呬篃浼氬紓甯�
+
+    #  @~english
+    #  @brief  High Bandwidth Decode
+    #  @param  handle                      [IN]            Device handle
+    #  @param  pstDecodeParam              [IN][OUT]       High Bandwidth Decode parameter structure
+    #  @return Success, return MV_OK. Failure, return error code
+    #  @remarks Decode the lossless compressed data from the camera into raw data锛孉t the same time, it supports parsing the watermark information of the real-time image of the current camera (if the input lossless code stream is not the current camera or is not real-time streaming, the watermark parsing may be abnormal);
+    #        If decoding fails, please check the following: (1) The CPU is required to support the SSE AVX instruction set. (2) If the current frame is abnormal (packet loss, etc.), it may cause decoding exceptions. (3) The camera plot is abnormal, even if there is no packet loss, it may cause exceptions
+    def MV_CC_HBDecode(self, stDecodeParam):
+        MvCamCtrldll.MV_CC_HB_Decode.argtype = (c_void_p, c_void_p)
+        MvCamCtrldll.MV_CC_HB_Decode.restype = c_uint
+        return MvCamCtrldll.MV_CC_HB_Decode(self.handle, byref(stDecodeParam))
+
+    ##
+    #  @~chinese
+    #  @brief  鍦ㄥ浘鍍忎笂缁樺埗鐭╁舰妗嗚緟鍔╃嚎
+    #  @param  handle                      [IN]            璁惧鍙ユ焺
+    #  @param  pRectInfo                   [IN]            鐭╁舰杈呭姪绾跨殑淇℃伅
+    #  @return 鎴愬姛锛岃繑鍥濵V_OK锛涢敊璇紝杩斿洖閿欒鐮�
+    #  @remarks  璇ユ帴鍙d粎鏀寔windows骞冲彴
+
+    #  @~english
+    #  @brief  Draw Rect Auxiliary Line
+    #  @param  handle                      [IN]            Device handle
+    #  @param  pRectInfo                   [IN]            Rect Auxiliary Line Info
+    #  @return Success, return MV_OK. Failure, return error code
+    #  @remarks This interface only supports windows platform.
+    def MV_CC_DrawRect(self, stRectInfo):
+        MvCamCtrldll.MV_CC_DrawRect.argtype = (c_void_p, c_void_p)
+        MvCamCtrldll.MV_CC_DrawRect.restype = c_uint
+        return MvCamCtrldll.MV_CC_DrawRect(self.handle, byref(stRectInfo))
+
+
+    ##
+    #  @~chinese
+    #  @brief  鍦ㄥ浘鍍忎笂缁樺埗鍦嗗舰杈呭姪绾�
+    #  @param  handle                      [IN]            璁惧鍙ユ焺
+    #  @param  pCircleInfo                 [IN]            鍦嗗舰杈呭姪绾跨殑淇℃伅
+    #  @return 鎴愬姛锛岃繑鍥濵V_OK锛涢敊璇紝杩斿洖閿欒鐮�
+    #  @remarks  璇ユ帴鍙d粎鏀寔windows骞冲彴
+
+    #  @~english
+    #  @brief  Draw Circle Auxiliary Line
+    #  @param  handle                      [IN]            Device Handle
+    #  @param  pCircleInfo                 [IN]            Circle Auxiliary Line Info
+    #  @return Success, return MV_OK. Failure, return error code
+    #  @remarks This interface only supports windows platform.
+    def MV_CC_DrawCircle(self, stCircleInfo):
+        MvCamCtrldll.MV_CC_DrawCircle.argtype = (c_void_p, c_void_p)
+        MvCamCtrldll.MV_CC_DrawCircle.restype = c_uint
+        return MvCamCtrldll.MV_CC_DrawCircle(self.handle, byref(stCircleInfo))
+
+    ##
+    #  @~chinese
+    #  @brief  鍦ㄥ浘鍍忎笂缁樺埗绾挎潯
+    #  @param  handle                      [IN]            璁惧鍙ユ焺
+    #  @param  pLinesInfo                  [IN]            绾挎潯杈呭姪绾夸俊鎭�
+    #  @return 鎴愬姛锛岃繑鍥濵V_OK锛涢敊璇紝杩斿洖閿欒鐮�
+    #  @remarks  璇ユ帴鍙d粎鏀寔windows骞冲彴
+
+    #  @~english
+    #  @brief  Draw Line Auxiliary Line
+    #  @param  handle                      [IN]            Device Handle
+    #  @param  pLinesInfo                  [IN]            Linear Auxiliary Line Info
+    #  @return Success, return MV_OK. Failure, return error code
+    #  @remarks  This interface only supports windows platform.
+    def MV_CC_DrawLines(self, stLineInfo):
+        MvCamCtrldll.MV_CC_DrawLines.argtype = (c_void_p, c_void_p)
+        MvCamCtrldll.MV_CC_DrawLines.restype = c_uint
+        return MvCamCtrldll.MV_CC_DrawLines(self.handle, byref(stLineInfo))
+
+    ##
+    #  @~chinese
+    #  @brief  寮�濮嬪綍鍍�
+    #  @param  handle                      [IN]            璁惧鍙ユ焺
+    #  @param  pstRecordParam              [IN]            褰曞儚鍙傛暟缁撴瀯浣�
+    #  @return 鎴愬姛锛岃繑鍥濵V_OK锛涢敊璇紝杩斿洖閿欒鐮� 
+    #       璇ユ帴鍙f渶澶ф敮鎸乄idth#Height涓�8000#8000澶у皬锛屽惁鍒欎細瀵艰嚧璋冪敤MV_CC_InputOneFrame鎺ュ彛閿欒銆�
+
+    #  @~english
+    #  @brief  Start Record
+    #  @param  handle                      [IN]            Device handle
+    #  @param  pstRecordParam              [IN]            Record param structure
+    #  @return Success, return MV_OK. Failure, return error code
+    #           The maximum supported width # height of this interface is 8000 # 8000, otherwise it will result in calling MV_ CC_ InputOneFrame interface error.
+    def MV_CC_StartRecord(self, stRecordParam):
+        MvCamCtrldll.MV_CC_StartRecord.argtype = (c_void_p, c_void_p)
+        MvCamCtrldll.MV_CC_StartRecord.restype = c_uint
+        return MvCamCtrldll.MV_CC_StartRecord(self.handle, byref(stRecordParam))
+
+    ##
+    #  @~chinese
+    #  @brief  杈撳叆褰曞儚鏁版嵁
+    #  @param  handle                      [IN]            璁惧鍙ユ焺
+    #  @param  pstInputFrameInfo           [IN]            褰曞儚鏁版嵁缁撴瀯浣�
+    #  @return 鎴愬姛锛岃繑鍥濵V_OK锛涢敊璇紝杩斿洖閿欒鐮� 
+
+    #  @~english
+    #  @brief  Input RAW data to Record
+    #  @param  handle                      [IN]            Device handle
+    #  @param  pstInputFrameInfo           [IN]            Record data structure
+    #  @return Success, return MV_OK. Failure, return error code
+    def MV_CC_InputOneFrame(self, stInputFrameInfo):
+        MvCamCtrldll.MV_CC_InputOneFrame.argtype = (c_void_p, c_void_p)
+        MvCamCtrldll.MV_CC_InputOneFrame.restype = c_uint
+        return MvCamCtrldll.MV_CC_InputOneFrame(self.handle, byref(stInputFrameInfo))
+
+    ##
+    #  @~chinese
+    #  @brief  鍋滄褰曞儚
+    #  @param  handle                      [IN]            璁惧鍙ユ焺
+    #  @return 鎴愬姛锛岃繑鍥濵V_OK锛涢敊璇紝杩斿洖閿欒鐮� 
+
+    #  @~english
+    #  @brief  Stop Record
+    #  @param  handle                      [IN]            Device handle
+    #  @return Success, return MV_OK. Failure, return error code
+    def MV_CC_StopRecord(self):
+        MvCamCtrldll.MV_CC_StopRecord.argtype = (c_void_p)
+        MvCamCtrldll.MV_CC_StopRecord.restype = c_uint
+        return MvCamCtrldll.MV_CC_StopRecord(self.handle)
+
+
+    ##
+    #  @~chinese
+    #  @brief  閲嶆瀯鍥惧儚(鐢ㄤ簬鍒嗘椂鏇濆厜鍔熻兘)
+    #  @param  handle                      [IN]            璁惧鍙ユ焺
+    #  @param  pstReconstructParam         [IN][OUT]       閲嶆瀯鍥惧儚鍙傛暟
+    #  @return 鎴愬姛锛岃繑鍥濵V_OK锛屽け璐ワ紝杩斿洖閿欒鐮併��
+    #  @remarks 鍥惧儚鍒嗗壊鏀寔浠绘剰鍍忕礌鏍煎紡锛屽浘鍍忓垎鍓插簲涓庣嚎闃电浉鏈虹殑鈥淢ultiLightControl鈥濊妭鐐规惌閰嶄娇鐢紝璇ヨ妭鐐瑰彲璁剧疆澶氫釜涓嶅悓鐨勬洕鍏夊�硷紝濡侻ultiLightControl=2,
+    #        鐩告満浼氬皢涓や釜涓嶅悓鏇濆厜鍊兼墍瀵瑰簲鐨勪袱寮犲浘鍍忎氦鍙犲悎骞朵负涓�寮犲浘鍍�(瀹為檯楂樺害涓轰袱寮犲浘鍍忕殑楂樺害)鍙戦�佺粰涓婂眰搴旂敤绋嬪簭锛�
+    #        璋冪敤璇ユ帴鍙e苟浼犲叆鍒嗘椂鏇濆厜鍊糿ExposureNum涓�2锛屽彲灏嗙浉鏈哄彂閫佺殑涓�寮犲浘鍍忓垎鍓蹭负2寮犲浘鍍忥紝杩欎袱寮犲浘鍍忓垎鍒搴斾竴涓洕鍏夊�笺��
+    #        鑻ヤ娇鐢ㄦ櫘閫氱浉鏈烘垨鏈墦寮�绾块樀鐩告満鐨勨�淢ultiLightControl鈥濊妭鐐癸紝鍒欏浘鍍忓垎鍓叉棤鎰忎箟锛屽彧鏄皢鍥惧儚鎸夎鍒嗗壊涓�2锛�3锛�4寮犲浘鍍忥紝
+    #        姣忓紶鍥惧儚鐨勯珮搴﹀彉涓哄師鍥惧儚鐨�1/2锛�1/3锛�1/4(鐢眓ExposureNum鍐冲畾)銆�
+
+    #  @~english
+    #  @brief  Reconstruct Image(For time-division exposure function)
+    #  @param  handle                      [IN]            Device handle
+    #  @param  pstReconstructParam         [IN][OUT]       Reconstruct image parameters
+    #  @return Success, return MV_OK, Failure, return error code.
+    #  @remarks Image segmentation supports any pixel format. Image segmentation should be used with the "MultiLightControl" node of the linear array camera. This node can set multiple different exposure values, such as MultiLightControl=2, 
+    #        The camera will overlap and merge two images corresponding to two different exposure values into one image (the actual height is the height of the two images) and send it to the upper application. 
+    #        Call the interface and pass in nExposureNum is two. One image sent by the camera can be divided into two images, each of which corresponds to an exposure value. 
+    #        If an ordinary camera is used or the "MultiLightControl" node of the linear array camera is not turned on, the image segmentation is meaningless, but the image is divided into 2, 3, and 4 images by line. 
+    #        The height of each image becomes 1/2, 1/3, 1/4 of the original image (determined by nExposureNum).
+    def MV_CC_ReconstructImage(self, stReconstructParam):
+        MvCamCtrldll.MV_CC_ReconstructImage.argtype = (c_void_p, c_void_p)
+        MvCamCtrldll.MV_CC_ReconstructImage.restype = c_uint
+        return MvCamCtrldll.MV_CC_ReconstructImage(self.handle, byref(stReconstructParam))
+    ## @}
+    
+    
+
+    ## @addtogroup  ch: 涓插彛閫氫俊鐨勮澶囨帴鍙� | en: Interface for serial communication devices
+    ## @{
+
+
+    ##
+    #  @~chinese
+    #  @brief  鎵撳紑涓插彛
+    #  @param  handle                      [IN]            璁惧鍙ユ焺
+    #  @return 鎴愬姛锛岃繑鍥濵V_OK锛涢敊璇紝杩斿洖閿欒鐮�
+    #  @remarks 姝ゆ帴鍙i�傜敤浜庢敮鎸佷覆鍙i�氫俊鐨勭浉鏈�
+
+    #  @~english
+    #  @brief  Open serial port.
+    #  @param  handle                      [IN]            Device handle
+    #  @return Success, return MV_OK. Failure, return error code
+    #  @remarks This interface is compatible with cameras supporting serial communication
+    def MV_CC_SerialPort_Open(self):
+        MvCamCtrldll.MV_CC_SerialPort_Open.argtype = (c_void_p)
+        MvCamCtrldll.MV_CC_SerialPort_Open.restype = c_uint
+        return MvCamCtrldll.MV_CC_SerialPort_Open(self.handle)
+
+
+    ##
+    #  @~chinese
+    #  @brief  鍚戜覆鍙e啓鏁版嵁锛屼竴娆℃渶澶у啓512瀛楄妭鐨勬暟鎹�
+    #  @param  handle                      [IN]            璁惧鍙ユ焺
+    #  @param  pBuffer                     [IN]            鏁版嵁
+    #  @param  nLength                     [IN]            鏁版嵁闀垮害
+    #  @param  pnWriteLen                  [OUT]           瀹為檯鍐欐垚鍔熺殑鏁版嵁闀垮害
+    #  @return 鎴愬姛,杩斿洖MV_OK,澶辫触,杩斿洖閿欒鐮�
+    #  @remarks 鎺ュ彛涓洪樆濉炴ā寮忥紝鏁版嵁鍏ㄩ儴鍙戦�佸畬鎴愭垨鑰呭彂閫佸け璐ユ椂杩斿洖
+
+    #  @~english
+    #  @brief  Writes data to serial port, maximum 512 bytes
+    #  @param  handle                      [IN]            Device handle
+    #  @param  pBuffer                     [IN]            data
+    #  @param  nLength                     [IN]            data length
+    #  @param  pnWriteLen                  [OUT]           written data length
+    #  @return Success, return MV_OK. Failure, return error code
+    #  @remarks Blocking-mode interface: returns after complete transmission or upon failure
+    def MV_CC_SerialPort_Write(self, pBuffer, nLength, pnWriteLen):
+        MvCamCtrldll.MV_CC_SerialPort_Write.argtype = (c_void_p, c_void_p, c_uint, c_void_p)
+        MvCamCtrldll.MV_CC_SerialPort_Write.restype = c_uint
+        return MvCamCtrldll.MV_CC_SerialPort_Write(self.handle, pBuffer, nLength, byref(pnWriteLen))
+    
+    ##
+    #  @~chinese
+    #  @brief  璇讳覆鍙f暟鎹�
+    #  @param  handle                      [IN]            璁惧鍙ユ焺
+    #  @param  pBuffer                     [IN]            鏁版嵁
+    #  @param  nLength                     [IN]            鏁版嵁闀垮害
+    #  @param  pnReadLen                   [IN]            瀹為檯璇诲埌鐨勬暟鎹暱搴�
+    #  @param  nMsec                       [IN]            瓒呮椂鏃堕棿锛屽崟浣嶏細ms
+    #  @return 鎴愬姛,杩斿洖MV_OK,澶辫触,杩斿洖閿欒鐮�
+    #  @remarks  鎺ュ彛涓洪樆濉炴ā寮忥紝褰撴湁鏀跺埌鏁版嵁銆佸埌杈捐秴鏃舵椂闂淬�佸嚭鐜板紓甯告椂锛岀珛鍗宠繑鍥�
+
+    #  @~english
+    #  @brief  Read Memory
+    #  @param  handle                      [IN]            Device Handle/Frame grabber handle
+    #  @param  pBuffer                     [IN]            data
+    #  @param  nLength                     [IN]            data length
+    #  @param  pnReadLen                   [IN]            Length of Data Read
+    #  @param  nMsec                       [IN]            timeout interval(ms)
+    #  @return Success, return MV_OK. Failure, return error code 
+    #  @remarks The interface operates in blocking mode and immediately returns when data is received, a timeout occurs, or an exception is encountered.
+    def MV_CC_SerialPort_Read(self, pBuffer, nLength, pnReadLen, nMsec):
+        MvCamCtrldll.MV_CC_SerialPort_Read.argtype = (c_void_p, c_void_p, c_uint, c_void_p, c_uint)
+        MvCamCtrldll.MV_CC_SerialPort_Read.restype = c_uint
+        return MvCamCtrldll.MV_CC_SerialPort_Read(self.handle, pBuffer, nLength, byref(pnReadLen), nMsec)
+
+
+    ##
+    #  @~chinese
+    #  @brief  娓呯┖宸叉帴鏀剁殑涓插彛鏁版嵁
+    #  @param  handle                      [IN]            璁惧鍙ユ焺
+    #  @return 鎴愬姛锛岃繑鍥濵V_OK锛涢敊璇紝杩斿洖閿欒鐮�
+    #  @remarks 姝ゆ帴鍙i�傜敤浜庢敮鎸佷覆鍙i�氫俊鐨勭浉鏈�
+
+    #  @~english
+    #  @brief  Clear all received serial port data.
+    #  @param  handle                      [IN]            Device handle
+    #  @return Success, return MV_OK. Failure, return error code
+    #  @remarks This interface is compatible with cameras supporting serial communication
+    def MV_CC_SerialPort_ClearBuffer(self):
+        MvCamCtrldll.MV_CC_SerialPort_ClearBuffer.argtype = c_void_p
+        MvCamCtrldll.MV_CC_SerialPort_ClearBuffer.restype = c_uint
+        return MvCamCtrldll.MV_CC_SerialPort_ClearBuffer(self.handle)
+        
+    
+    ##
+    #  @~chinese
+    #  @brief  鍏抽棴涓插彛
+    #  @param  handle                      [IN]            璁惧鍙ユ焺
+    #  @return 鎴愬姛锛岃繑鍥濵V_OK锛涢敊璇紝杩斿洖閿欒鐮�
+    #  @remarks 姝ゆ帴鍙i�傜敤浜庢敮鎸佷覆鍙i�氫俊鐨勭浉鏈�
+
+    #  @~english
+    #  @brief  Close serial port
+    #  @param  handle                      [IN]            Device handle
+    #  @return Success, return MV_OK. Failure, return error code
+    #  @remarks This interface is compatible with cameras supporting serial communication
+    def MV_CC_SerialPort_Close(self):
+        MvCamCtrldll.MV_CC_SerialPort_Close.argtype = c_void_p
+        MvCamCtrldll.MV_CC_SerialPort_Close.restype = c_uint
+        return MvCamCtrldll.MV_CC_SerialPort_Close(self.handle)
+    ## @}
+    
+    
+    
+    '''
+    1. 鏆備笉鎻愪緵澶栭儴娉ㄥ唽缂撳瓨鐩稿叧API
+    2. Part ch: 涓嬮潰涓轰笉鎺ㄨ崘浣跨敤鐨凙PI | en: Below are the APIs that are not recommended for use
+    '''
+    
+    # ch:鑾峰彇鏀寔鐨勪紶杈撳眰 | en:Get supported Transport Layer
+    @staticmethod
+    def MV_CC_EnumerateTls():
+        MvCamCtrldll.MV_CC_EnumerateTls.restype = c_uint
+        # C鍘熷瀷锛歩nt __stdcall MV_CC_EnumerateTls();
+        return MvCamCtrldll.MV_CC_EnumerateTls()
+        
+        
+    # ch: 璁剧疆SDK鏃ュ織璺緞 | en: Set SDK log path
+    def MV_CC_SetSDKLogPath(self, SDKLogPath):
+        MvCamCtrldll.MV_CC_SetSDKLogPath.argtype = c_void_p
+        MvCamCtrldll.MV_CC_SetSDKLogPath.restype = c_uint
+        # C鍘熷瀷:int MV_CC_SetSDKLogPath(IN const char * strSDKLogPath);
+        return MvCamCtrldll.MV_CC_SetSDKLogPath(SDKLogPath.encode('ascii'))
+
+
+    def MV_CC_GetIntValue(self, strKey, stIntValue):
+        MvCamCtrldll.MV_CC_GetIntValue.argtype = (c_void_p, c_void_p, c_void_p)
+        MvCamCtrldll.MV_CC_GetIntValue.restype = c_uint
+        # C鍘熷瀷:int MV_CC_GetIntValue(void* handle,char* strKey,MVCC_INTVALUE *pIntValue)
+        return MvCamCtrldll.MV_CC_GetIntValue(self.handle, strKey.encode('ascii'), byref(stIntValue))
+
+    # ch:璁剧疆Integer鍨嬪睘鎬у�� | en:Set Integer value
+    def MV_CC_SetIntValue(self, strKey, nValue):
+        MvCamCtrldll.MV_CC_SetIntValue.argtype = (c_void_p, c_void_p, c_uint32)
+        MvCamCtrldll.MV_CC_SetIntValue.restype = c_uint
+        # C鍘熷瀷:int MV_CC_SetIntValue(void* handle, char* strKey, unsigned int nValue)
+        return MvCamCtrldll.MV_CC_SetIntValue(self.handle, strKey.encode('ascii'), c_uint32(nValue))
+
+
+    # ch:鍒涘缓鍙ユ焺锛堜笉鐢熸垚鏃ュ織锛� | en:Create Device Handle without log
+    def MV_CC_CreateHandleWithoutLog(self, stDevInfo):
+        MvCamCtrldll.MV_CC_CreateHandleWithoutLog.argtype = (c_void_p, c_void_p)
+        MvCamCtrldll.MV_CC_CreateHandleWithoutLog.restype = c_uint
+        # C鍘熷瀷:int MV_CC_CreateHandleWithoutLog(void ** handle, MV_CC_DEVICE_INFO* pstDevInfo)
+        return MvCamCtrldll.MV_CC_CreateHandleWithoutLog(byref(self.handle), byref(stDevInfo))
+        
+        
+    # ch:娉ㄥ唽鍙栨祦鍥炶皟 | en:Register the image callback function
+    def MV_CC_RegisterImageCallBackForRGB(self, CallBackFun, pUser):
+        MvCamCtrldll.MV_CC_RegisterImageCallBackForRGB.argtype = (c_void_p, c_void_p, c_void_p)
+        MvCamCtrldll.MV_CC_RegisterImageCallBackForRGB.restype = c_uint
+        # C鍘熷瀷:int MV_CC_RegisterImageCallBackForRGB(void* handle,
+        #                        void(* cbOutput)(unsigned char * pData, MV_FRAME_OUT_INFO_EX* pFrameInfo, void* pUser),
+        #                        void* pUser);
+        return MvCamCtrldll.MV_CC_RegisterImageCallBackForRGB(self.handle, CallBackFun, pUser)
+
+    # ch:娉ㄥ唽鍙栨祦鍥炶皟 | en:Register the image callback function
+    def MV_CC_RegisterImageCallBackForBGR(self, CallBackFun, pUser):
+        MvCamCtrldll.MV_CC_RegisterImageCallBackForBGR.argtype = (c_void_p, c_void_p, c_void_p)
+        MvCamCtrldll.MV_CC_RegisterImageCallBackForBGR.restype = c_uint
+        # C鍘熷瀷:int MV_CC_RegisterImageCallBackForBGR(void* handle,
+        #                         void(* cbOutput)(unsigned char * pData,MV_FRAME_OUT_INFO_EX* pFrameInfo, void* pUser),
+        #                         void* pUser);
+        return MvCamCtrldll.MV_CC_RegisterImageCallBackForBGR(self.handle, CallBackFun, pUser)
+        
+    # ch:鑾峰彇涓�甯GB鏁版嵁锛屾鍑芥暟涓烘煡璇㈠紡鑾峰彇锛屾瘡娆¤皟鐢ㄦ煡璇㈠唴閮ㄧ紦瀛樻湁鏃犳暟鎹紝鏈夋暟鎹垯鑾峰彇鏁版嵁锛屾棤鏁版嵁杩斿洖閿欒鐮�
+    # en:Get one frame of RGB data, this function is using query to get data query whether the internal cache has data,
+    # get data if there has, return error code if no data
+    def MV_CC_GetImageForRGB(self, pData, nDataSize, stFrameInfo, nMsec):
+        MvCamCtrldll.MV_CC_GetImageForRGB.argtype = (c_void_p, c_void_p, c_uint, c_void_p, c_uint)
+        MvCamCtrldll.MV_CC_GetImageForRGB.restype = c_uint
+        # C鍘熷瀷:int MV_CC_GetImageForRGB(IN void* handle, IN OUT unsigned char * pData , IN unsigned int nDataSize,
+        #                               IN OUT MV_FRAME_OUT_INFO_EX* pstFrameInfo, int nMsec);
+        return MvCamCtrldll.MV_CC_GetImageForRGB(self.handle, pData, nDataSize, byref(stFrameInfo), nMsec)
+
+    # ch:鑾峰彇涓�甯GR鏁版嵁锛屾鍑芥暟涓烘煡璇㈠紡鑾峰彇锛屾瘡娆¤皟鐢ㄦ煡璇㈠唴閮ㄧ紦瀛樻湁鏃犳暟鎹紝鏈夋暟鎹垯鑾峰彇鏁版嵁锛屾棤鏁版嵁杩斿洖閿欒鐮�
+    # en:Get one frame of BGR data, this function is using query to get data query whether the internal cache has data,
+    # get data if there has, return error code if no data
+    def MV_CC_GetImageForBGR(self, pData, nDataSize, stFrameInfo, nMsec):
+        MvCamCtrldll.MV_CC_GetImageForBGR.argtype = (c_void_p, c_void_p, c_uint, c_void_p, c_uint)
+        MvCamCtrldll.MV_CC_GetImageForBGR.restype = c_uint
+        # C鍘熷瀷:int MV_CC_GetImageForBGR(IN void* handle, IN OUT unsigned char * pData , IN unsigned int nDataSize,
+        #                               IN OUT MV_FRAME_OUT_INFO_EX* pstFrameInfo, int nMsec);
+        return MvCamCtrldll.MV_CC_GetImageForBGR(self.handle, pData, nDataSize, byref(stFrameInfo), nMsec)
+
+    # ch:鏄剧ず涓�甯у浘鍍�
+    # en:Display one frame image,the maximum resolution supported is 16384 * 163840
+    def MV_CC_DisplayOneFrame(self, stDisplayInfo):
+        MvCamCtrldll.MV_CC_DisplayOneFrame.argtype = (c_void_p, c_void_p)
+        MvCamCtrldll.MV_CC_DisplayOneFrame.restype = c_uint
+        # C鍘熷瀷:int MV_CC_DisplayOneFrame(IN void* handle, IN MV_DISPLAY_FRAME_INFO* pstDisplayInfo);
+        return MvCamCtrldll.MV_CC_DisplayOneFrame(self.handle, byref(stDisplayInfo))
+
+    # ch:淇濆瓨鍥剧墖锛屾敮鎸丅mp鍜孞peg | en:Save image, support Bmp and Jpeg.
+    def MV_CC_SaveImageEx2(self, stSaveParam):
+        MvCamCtrldll.MV_CC_SaveImageEx2.argtype = (c_void_p, c_void_p)
+        MvCamCtrldll.MV_CC_SaveImageEx2.restype = c_uint
+        # C鍘熷瀷:int MV_CC_SaveImageEx2(void* handle, MV_SAVE_IMAGE_PARAM_EX* pSaveParam)
+        return MvCamCtrldll.MV_CC_SaveImageEx2(self.handle, byref(stSaveParam))
+
+
+    # ch:淇濆瓨鍥惧儚鍒版枃浠� | en:Save the image file
+    def MV_CC_SaveImageToFile(self, stSaveFileParam):
+        MvCamCtrldll.MV_CC_SaveImageToFile.argtype = (c_void_p, c_void_p)
+        MvCamCtrldll.MV_CC_SaveImageToFile.restype = c_uint
+        # C鍘熷瀷:int MV_CC_SaveImageToFile(IN void* handle, MV_SAVE_IMG_TO_FILE_PARAM* pstSaveFileParam);
+        return MvCamCtrldll.MV_CC_SaveImageToFile(self.handle, byref(stSaveFileParam))
+
+    # ch:淇濆瓨3D鐐逛簯鏁版嵁锛屾敮鎸丳LY銆丆SV鍜孫BJ涓夌鏍煎紡 | en:Save 3D point data, support PLY銆丆SV and OBJ
+    def MV_CC_SavePointCloudData(self, stPointDataParam):
+        MvCamCtrldll.MV_CC_SavePointCloudData.argtype = (c_void_p, c_void_p)
+        MvCamCtrldll.MV_CC_SavePointCloudData.restype = c_uint
+        # C鍘熷瀷:int MV_CC_SavePointCloudData(IN void* handle, MV_SAVE_POINT_CLOUD_PARAM* pstPointDataParam);
+        return MvCamCtrldll.MV_CC_SavePointCloudData(self.handle, byref(stPointDataParam))
+
+
+    # ch:鍍忕礌鏍煎紡杞崲 | en:Pixel format conversion
+    def MV_CC_ConvertPixelType(self, stConvertParam):
+        MvCamCtrldll.MV_CC_ConvertPixelType.argtype = (c_void_p, c_void_p)
+        MvCamCtrldll.MV_CC_ConvertPixelType.restype = c_uint
+        # C鍘熷瀷:int MV_CC_ConvertPixelType(void* handle, MV_CC_PIXEL_CONVERT_PARAM* pstCvtParam)
+        return MvCamCtrldll.MV_CC_ConvertPixelType(self.handle, byref(stConvertParam))
+
+    # ch:鎵撳紑鑾峰彇鎴栬缃浉鏈哄弬鏁扮殑GUI鐣岄潰 | en: Open the GUI interface for getting or setting camera parameters
+    def MV_CC_OpenParamsGUI(self):
+        MvCamCtrldll.MV_CC_OpenParamsGUI.argtype = (c_void_p)
+        MvCamCtrldll.MV_CC_OpenParamsGUI.restype = c_uint
+        # C鍘熷瀷: __stdcall MV_CC_OpenParamsGUI(IN void* handle);
+        return MvCamCtrldll.MV_CC_OpenParamsGUI(self.handle)
+
+    # ch: 娉ㄥ唽娴佸紓甯告秷鎭洖璋冿紝鍦ㄦ墦寮�璁惧涔嬪悗璋冪敤锛堝彧鏀寔U3V鐩告満锛屼笉鏀寔GenTL璁惧锛� | en:Register exception stream callBack, call after open device (only support U3V Camera, don't support GenTL Device)
+    def MV_USB_RegisterStreamExceptionCallBack(self, CallBackFun, pUser):
+        MvCamCtrldll.MV_USB_RegisterStreamExceptionCallBack.argtype = (c_void_p, c_void_p, c_void_p)
+        MvCamCtrldll.MV_USB_RegisterStreamExceptionCallBack.restype = c_uint
+        return MvCamCtrldll.MV_USB_RegisterStreamExceptionCallBack(self.handle, CallBackFun, pUser)
+
diff --git a/MvImport/MvErrorDefine_const.py b/MvImport/MvErrorDefine_const.py
new file mode 100644
index 0000000..0de69be
--- /dev/null
+++ b/MvImport/MvErrorDefine_const.py
@@ -0,0 +1,73 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+
+MV_OK                                        = 0x00000000  ## @~chinese 鎴愬姛锛屾棤閿欒             @~english Successed, no error
+
+## @~chinese 閫氱敤閿欒鐮佸畾涔�:鑼冨洿0x80000000-0x800000FF
+MV_E_HANDLE                                  = 0x80000000  ## @~chinese 閿欒鎴栨棤鏁堢殑鍙ユ焺         @~english Error or invalid handle
+MV_E_SUPPORT                                 = 0x80000001  ## @~chinese 涓嶆敮鎸佺殑鍔熻兘             @~english Not supported function
+MV_E_BUFOVER                                 = 0x80000002  ## @~chinese 缂撳瓨宸叉弧                 @~english Buffer overflow
+MV_E_CALLORDER                               = 0x80000003  ## @~chinese 鍑芥暟璋冪敤椤哄簭閿欒         @~english Function calling order error
+MV_E_PARAMETER                               = 0x80000004  ## @~chinese 閿欒鐨勫弬鏁�               @~english Incorrect parameter
+MV_E_RESOURCE                                = 0x80000006  ## @~chinese 璧勬簮鐢宠澶辫触             @~english Applying resource failed
+MV_E_NODATA                                  = 0x80000007  ## @~chinese 鏃犳暟鎹�                   @~english No data
+MV_E_PRECONDITION                            = 0x80000008  ## @~chinese 鍓嶇疆鏉′欢鏈夎锛屾垨杩愯鐜宸插彂鐢熷彉鍖�       @~english Precondition error, or running environment changed
+MV_E_VERSION                                 = 0x80000009  ## @~chinese 鐗堟湰涓嶅尮閰�               @~english Version mismatches
+MV_E_NOENOUGH_BUF                            = 0x8000000A  ## @~chinese 浼犲叆鐨勫唴瀛樼┖闂翠笉瓒�       @~english Insufficient memory
+MV_E_ABNORMAL_IMAGE                          = 0x8000000B  ## @~chinese 寮傚父鍥惧儚锛屽彲鑳芥槸涓㈠寘瀵艰嚧鍥惧儚涓嶅畬鏁�       @~english Abnormal image, maybe incomplete image because of lost packet
+MV_E_LOAD_LIBRARY                            = 0x8000000C  ## @~chinese 鍔ㄦ�佸鍏LL澶辫触          @~english Load library failed
+MV_E_NOOUTBUF                                = 0x8000000D  ## @~chinese 娌℃湁鍙緭鍑虹殑缂撳瓨         @~english No Avaliable Buffer
+MV_E_ENCRYPT                                 = 0x8000000E  ## @~chinese 鍔犲瘑閿欒                 @~english Encryption error
+MV_E_OPENFILE                                = 0x8000000F  ## @~chinese 鎵撳紑鏂囦欢鍑虹幇閿欒         @~english open file error
+MV_E_BUF_IN_USE                              = 0x80000010  ## @~chinese 缂撳瓨鍦板潃宸蹭娇鐢�           @~english Buffer already in use
+MV_E_BUF_INVALID                             = 0x80000011  ## @~chinese 鏃犳晥鐨勭紦瀛樺湴鍧�           @~english Buffer address invalid
+MV_E_NOALIGN_BUF                             = 0x80000012  ## @~chinese 缂撳瓨瀵归綈寮傚父             @~english Buffer alignmenterror error
+MV_E_NOENOUGH_BUF_NUM                        = 0x80000013  ## @~chinese 缂撳瓨涓暟涓嶈冻             @~english Insufficient cache count
+MV_E_PORT_IN_USE                             = 0x80000014  ## @~chinese 涓插彛琚崰鐢�               @~english Port is in use
+MV_E_IMAGE_DECODEC                           = 0x80000015  ## @~chinese 瑙g爜閿欒(SDK鏍¢獙鍥惧儚寮傚父)@~english Decoding error (SDK verification image exception)
+MV_E_UINT32_LIMIT                            = 0x80000016  ## @~chinese 鍥惧儚澶у皬瓒呰繃unsigned int杩斿洖锛屾帴鍙d笉鏀寔   @~english Image size exceeds unsigned int range - interface unsupported
+MV_E_IMAGE_HEIGHT                            = 0x80000017  ## @~chinese 鍥惧儚楂樺害寮傚父锛堟畫甯т涪寮冿級 @~english image height anomaly (discard incomplete images)
+MV_E_NOENOUGH_DDR                            = 0x80000018  ## @~chinese DDR缂撳瓨涓嶈冻              @~english The DDR cache is Insufficient
+MV_E_NOENOUGH_STREAM                         = 0x80000019  ## @~chinese 娴侀�氶亾涓嶈冻               @~english The stream channel is Insufficient
+MV_E_NORESPONSE                              = 0x8000001A  ## @~chinese 璁惧鏃犲搷搴�               @~english No response from device
+MV_E_UNKNOW                                  = 0x800000FF  ## @~chinese 鏈煡鐨勯敊璇�               @~english Unknown error
+
+## @~chinese GenICam绯诲垪閿欒:鑼冨洿0x80000100-0x800001FF
+MV_E_GC_GENERIC                              = 0x80000100  ## @~chinese 閫氱敤閿欒                 @~english General error
+MV_E_GC_ARGUMENT                             = 0x80000101  ## @~chinese 鍙傛暟闈炴硶                 @~english Illegal parameters
+MV_E_GC_RANGE                                = 0x80000102  ## @~chinese 鍊艰秴鍑鸿寖鍥�               @~english The value is out of range
+MV_E_GC_PROPERTY                             = 0x80000103  ## @~chinese 灞炴��                     @~english Property
+MV_E_GC_RUNTIME                              = 0x80000104  ## @~chinese 杩愯鐜鏈夐棶棰�           @~english Running environment error
+MV_E_GC_LOGICAL                              = 0x80000105  ## @~chinese 閫昏緫閿欒                 @~english Logical error
+MV_E_GC_ACCESS                               = 0x80000106  ## @~chinese 鑺傜偣璁块棶鏉′欢鏈夎         @~english Node accessing condition error
+MV_E_GC_TIMEOUT                              = 0x80000107  ## @~chinese 瓒呮椂                     @~english Timeout
+MV_E_GC_DYNAMICCAST                          = 0x80000108  ## @~chinese 杞崲寮傚父                 @~english Transformation exception
+MV_E_GC_UNKNOW                               = 0x800001FF  ## @~chinese GenICam鏈煡閿欒          @~english GenICam unknown error
+
+## @~chinese GigE_STATUS瀵瑰簲鐨勯敊璇爜:鑼冨洿0x80000200-0x800002FF
+MV_E_NOT_IMPLEMENTED                         = 0x80000200  ## @~chinese 鍛戒护涓嶈璁惧鏀寔         @~english The command is not supported by device
+MV_E_INVALID_ADDRESS                         = 0x80000201  ## @~chinese 璁块棶鐨勭洰鏍囧湴鍧�涓嶅瓨鍦�     @~english The target address being accessed does not exist
+MV_E_WRITE_PROTECT                           = 0x80000202  ## @~chinese 鐩爣鍦板潃涓嶅彲鍐�           @~english The target address is not writable
+MV_E_ACCESS_DENIED                           = 0x80000203  ## @~chinese 璁惧鏃犺闂潈闄�           @~english No permission
+MV_E_BUSY                                    = 0x80000204  ## @~chinese 璁惧蹇欙紝鎴栫綉缁滄柇寮�       @~english Device is busy, or network disconnected
+MV_E_PACKET                                  = 0x80000205  ## @~chinese 缃戠粶鍖呮暟鎹敊璇�           @~english Network data packet error
+MV_E_NETER                                   = 0x80000206  ## @~chinese 缃戠粶鐩稿叧閿欒             @~english Network error
+MV_E_SUPPORT_MODIFY_DEVICE_IP                = 0x8000020E  # < 鍦ㄥ浐瀹欼P妯″紡涓嬩笉鏀寔淇敼璁惧IP妯″紡  @~english Current Mode Not Support Modify Ip
+MV_E_KEY_VERIFICATION                        = 0x8000020F  ## @~chinese 绉橀挜鏍¢獙閿欒              @~english SwitchKey error
+MV_E_IP_CONFLICT                             = 0x80000221  ## @~chinese 璁惧IP鍐茬獊               @~english Device IP conflict
+
+## @~chinese USB_STATUS瀵瑰簲鐨勯敊璇爜:鑼冨洿0x80000300-0x800003FF
+MV_E_USB_READ                                = 0x80000300  ## @~chinese 璇籾sb鍑洪敊               @~english Reading USB error
+MV_E_USB_WRITE                               = 0x80000301  ## @~chinese 鍐檜sb鍑洪敊               @~english Writing USB error
+MV_E_USB_DEVICE                              = 0x80000302  ## @~chinese 璁惧寮傚父                @~english Device exception
+MV_E_USB_GENICAM                             = 0x80000303  ## @~chinese GenICam鐩稿叧閿欒         @~english GenICam error
+MV_E_USB_BANDWIDTH                           = 0x80000304  ## @~chinese 甯﹀涓嶈冻                @~english Insufficient bandwidth
+MV_E_USB_DRIVER                              = 0x80000305  ## @~chinese 椹卞姩涓嶅尮閰嶆垨鑰呮湭瑁呴┍鍔�   @~english Driver mismatch or unmounted drive
+MV_E_USB_UNKNOW                              = 0x800003FF  ## @~chinese USB鏈煡鐨勯敊璇�           @~english USB unknown error
+
+## @~chinese 鍗囩骇鏃跺搴旂殑閿欒鐮�:鑼冨洿0x80000400-0x800004FF
+MV_E_UPG_FILE_MISMATCH                       = 0x80000400  ## @~chinese 鍗囩骇鍥轰欢涓嶅尮閰�           @~english Firmware mismatches
+MV_E_UPG_LANGUSGE_MISMATCH                   = 0x80000401  ## @~chinese 鍗囩骇鍥轰欢璇█涓嶅尮閰�       @~english Firmware language mismatches
+MV_E_UPG_CONFLICT                            = 0x80000402  ## @~chinese 鍗囩骇鍐茬獊锛堣澶囧凡缁忓湪鍗囩骇浜嗗啀娆¤姹傚崌绾у嵆杩斿洖姝ら敊璇級   @~english Upgrading conflicted (repeated upgrading requests during device upgrade)
+MV_E_UPG_INNER_ERR                           = 0x80000403  ## @~chinese 鍗囩骇鏃惰澶囧唴閮ㄥ嚭鐜伴敊璇�   @~english Camera internal error during upgrade
+MV_E_UPG_UNKNOW                              = 0x800004FF  ## @~chinese 鍗囩骇鏃舵湭鐭ラ敊璇�          @~english Unknown error during upgrade
diff --git a/MvImport/MvISPErrorDefine_const.py b/MvImport/MvISPErrorDefine_const.py
new file mode 100644
index 0000000..effbf64
--- /dev/null
+++ b/MvImport/MvISPErrorDefine_const.py
@@ -0,0 +1,94 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+
+
+## @~chinese 閫氱敤绫诲瀷
+MV_ALG_OK                    = 0x00000000  ## @~chinese澶勭悊姝g‘
+MV_ALG_ERR                   = 0x10000000  ## @~chinese涓嶇‘瀹氱被鍨嬮敊璇�
+
+## @~chinese 鑳藉姏妫�鏌�
+MV_ALG_E_ABILITY_ARG         = 0x10000001  ## @~chinese鑳藉姏闆嗕腑瀛樺湪鏃犳晥鍙傛暟
+
+## @~chinese 鍐呭瓨妫�鏌�
+MV_ALG_E_MEM_NULL            = 0x10000002  ## @~chinese鍐呭瓨鍦板潃涓虹┖
+MV_ALG_E_MEM_ALIGN           = 0x10000003  ## @~chinese鍐呭瓨瀵归綈涓嶆弧瓒宠姹�
+MV_ALG_E_MEM_LACK            = 0x10000004  ## @~chinese鍐呭瓨绌洪棿澶у皬涓嶅
+MV_ALG_E_MEM_SIZE_ALIGN      = 0x10000005  ## @~chinese鍐呭瓨绌洪棿澶у皬涓嶆弧瓒冲榻愯姹�
+MV_ALG_E_MEM_ADDR_ALIGN      = 0x10000006  ## @~chinese鍐呭瓨鍦板潃涓嶆弧瓒冲榻愯姹�
+
+## @~chinese 鍥惧儚妫�鏌�
+MV_ALG_E_IMG_FORMAT          = 0x10000007  ## @~chinese鍥惧儚鏍煎紡涓嶆纭垨鑰呬笉鏀寔
+MV_ALG_E_IMG_SIZE            = 0x10000008  ## @~chinese鍥惧儚瀹介珮涓嶆纭垨鑰呰秴鍑鸿寖鍥�
+MV_ALG_E_IMG_STEP            = 0x10000009  ## @~chinese鍥惧儚瀹介珮涓巗tep鍙傛暟涓嶅尮閰�
+MV_ALG_E_IMG_DATA_NULL       = 0x1000000A  ## @~chinese鍥惧儚鏁版嵁瀛樺偍鍦板潃涓虹┖
+
+## @~chinese 杈撳叆杈撳嚭鍙傛暟妫�鏌�
+MV_ALG_E_CFG_TYPE            = 0x1000000B  ## @~chinese璁剧疆鎴栬�呰幏鍙栧弬鏁扮被鍨嬩笉姝g‘
+MV_ALG_E_CFG_SIZE            = 0x1000000C  ## @~chinese璁剧疆鎴栬�呰幏鍙栧弬鏁扮殑杈撳叆銆佽緭鍑虹粨鏋勪綋澶у皬涓嶆纭�
+MV_ALG_E_PRC_TYPE            = 0x1000000D  ## @~chinese澶勭悊绫诲瀷涓嶆纭�
+MV_ALG_E_PRC_SIZE            = 0x1000000E  ## @~chinese澶勭悊鏃惰緭鍏ャ�佽緭鍑哄弬鏁板ぇ灏忎笉姝g‘
+MV_ALG_E_FUNC_TYPE           = 0x1000000F  ## @~chinese瀛愬鐞嗙被鍨嬩笉姝g‘
+MV_ALG_E_FUNC_SIZE           = 0x10000010  ## @~chinese瀛愬鐞嗘椂杈撳叆銆佽緭鍑哄弬鏁板ぇ灏忎笉姝g‘
+
+## @~chinese 杩愯鍙傛暟妫�鏌�
+MV_ALG_E_PARAM_INDEX         = 0x10000011  ## @~chineseindex鍙傛暟涓嶆纭�
+MV_ALG_E_PARAM_VALUE         = 0x10000012  ## @~chinesevalue鍙傛暟涓嶆纭垨鑰呰秴鍑鸿寖鍥�
+MV_ALG_E_PARAM_NUM           = 0x10000013  ## @~chineseparam_num鍙傛暟涓嶆纭�
+
+## @~chinese 鎺ュ彛璋冪敤妫�鏌�
+MV_ALG_E_NULL_PTR            = 0x10000014  ## @~chinese鍑芥暟鍙傛暟鎸囬拡涓虹┖
+MV_ALG_E_OVER_MAX_MEM        = 0x10000015  ## @~chinese瓒呰繃闄愬畾鐨勬渶澶у唴瀛�
+MV_ALG_E_CALL_BACK           = 0x10000016  ## @~chinese鍥炶皟鍑芥暟鍑洪敊
+
+## @~chinese 绠楁硶搴撳姞瀵嗙浉鍏虫鏌�
+MV_ALG_E_ENCRYPT             = 0x10000017  ## @~chinese鍔犲瘑閿欒
+MV_ALG_E_EXPIRE              = 0x10000018  ## @~chinese绠楁硶搴撲娇鐢ㄦ湡闄愰敊璇�
+
+## @~chinese 鍐呴儴妯″潡杩斿洖鐨勫熀鏈敊璇被鍨�
+MV_ALG_E_BAD_ARG             = 0x10000019  ## @~chinese鍙傛暟鑼冨洿涓嶆纭�
+MV_ALG_E_DATA_SIZE           = 0x1000001A  ## @~chinese鏁版嵁澶у皬涓嶆纭�
+MV_ALG_E_STEP                = 0x1000001B  ## @~chinese鏁版嵁step涓嶆纭�
+
+## @~chinese cpu鎸囦护闆嗘敮鎸侀敊璇爜
+MV_ALG_E_CPUID               = 0x1000001C  ## @~chinesecpu涓嶆敮鎸佷紭鍖栦唬鐮佷腑鐨勬寚浠ら泦
+
+MV_ALG_WARNING               = 0x1000001D  ## @~chinese璀﹀憡
+
+MV_ALG_E_TIME_OUT            = 0x1000001E  ## @~chinese绠楁硶搴撹秴鏃�
+MV_ALG_E_LIB_VERSION         = 0x1000001F  ## @~chinese绠楁硶鐗堟湰鍙峰嚭閿�
+MV_ALG_E_MODEL_VERSION       = 0x10000020  ## @~chinese妯″瀷鐗堟湰鍙峰嚭閿�
+MV_ALG_E_GPU_MEM_ALLOC       = 0x10000021  ## @~chineseGPU鍐呭瓨鍒嗛厤閿欒
+MV_ALG_E_FILE_NON_EXIST      = 0x10000022  ## @~chinese鏂囦欢涓嶅瓨鍦�
+MV_ALG_E_NONE_STRING         = 0x10000023  ## @~chinese瀛楃涓蹭负绌�
+MV_ALG_E_IMAGE_CODEC         = 0x10000024  ## @~chinese鍥惧儚瑙g爜鍣ㄩ敊璇�
+MV_ALG_E_FILE_OPEN           = 0x10000025  ## @~chinese鎵撳紑鏂囦欢閿欒
+MV_ALG_E_FILE_READ           = 0x10000026  ## @~chinese鏂囦欢璇诲彇閿欒
+MV_ALG_E_FILE_WRITE          = 0x10000027  ## @~chinese鏂囦欢鍐欓敊璇�
+MV_ALG_E_FILE_READ_SIZE      = 0x10000028  ## @~chinese鏂囦欢璇诲彇澶у皬閿欒
+MV_ALG_E_FILE_TYPE           = 0x10000029  ## @~chinese鏂囦欢绫诲瀷閿欒
+MV_ALG_E_MODEL_TYPE          = 0x1000002A  ## @~chinese妯″瀷绫诲瀷閿欒
+MV_ALG_E_MALLOC_MEM          = 0x1000002B  ## @~chinese鍒嗛厤鍐呭瓨閿欒
+MV_ALG_E_BIND_CORE_FAILED    = 0x1000002C  ## @~chinese绾跨▼缁戞牳澶辫触
+
+## @~chinese 闄嶅櫔鐗规湁閿欒鐮�
+MV_ALG_E_DENOISE_NE_IMG_FORMAT        = 0x10402001  ## @~chinese鍣0鐗规�у浘鍍忔牸寮忛敊璇�
+MV_ALG_E_DENOISE_NE_FEATURE_TYPE      = 0x10402002  ## @~chinese鍣0鐗规�х被鍨嬮敊璇�
+MV_ALG_E_DENOISE_NE_PROFILE_NUM       = 0x10402003  ## @~chinese鍣0鐗规�т釜鏁伴敊璇�
+MV_ALG_E_DENOISE_NE_GAIN_NUM          = 0x10402004  ## @~chinese鍣0鐗规�у鐩婁釜鏁伴敊璇�
+MV_ALG_E_DENOISE_NE_GAIN_VAL          = 0x10402005  ## @~chinese鍣0鏇茬嚎澧炵泭鍊艰緭鍏ラ敊璇�
+MV_ALG_E_DENOISE_NE_BIN_NUM           = 0x10402006  ## @~chinese鍣0鏇茬嚎鏌辨暟閿欒
+MV_ALG_E_DENOISE_NE_INIT_GAIN         = 0x10402007  ## @~chinese鍣0浼拌鍒濆鍖栧鐩婅缃敊璇�
+MV_ALG_E_DENOISE_NE_NOT_INIT          = 0x10402008  ## @~chinese鍣0浼拌鏈垵濮嬪寲
+MV_ALG_E_DENOISE_COLOR_MODE           = 0x10402009  ## @~chinese棰滆壊绌洪棿妯″紡閿欒
+MV_ALG_E_DENOISE_ROI_NUM              = 0x1040200a  ## @~chinese鍥惧儚ROI涓暟閿欒
+MV_ALG_E_DENOISE_ROI_ORI_PT           = 0x1040200b  ## @~chinese鍥惧儚ROI鍘熺偣閿欒
+MV_ALG_E_DENOISE_ROI_SIZE             = 0x1040200c  ## @~chinese鍥惧儚ROI澶у皬閿欒
+MV_ALG_E_DENOISE_GAIN_NOT_EXIST       = 0x1040200d  ## @~chinese杈撳叆鐨勭浉鏈哄鐩婁笉瀛樺湪(澧炵泭涓暟宸茶揪涓婇檺)
+MV_ALG_E_DENOISE_GAIN_BEYOND_RANGE    = 0x1040200e  ## @~chinese杈撳叆鐨勭浉鏈哄鐩婁笉鍦ㄨ寖鍥村唴
+MV_ALG_E_DENOISE_NP_BUF_SIZE          = 0x1040200f  ## @~chinese杈撳叆鐨勫櫔澹扮壒鎬у唴瀛樺ぇ灏忛敊璇�
+
+## @~chinese 鍘荤传杈圭壒鏈夐敊璇爜
+MV_ALG_E_PFC_ROI_PT                  = 0x10405000  ## @~chinese鍘荤传杈圭畻娉昍OI鍘熺偣閿欒
+MV_ALG_E_PFC_ROI_SIZE                = 0x10405001  ## @~chinese鍘荤传杈圭畻娉昍OI澶у皬閿欒
+MV_ALG_E_PFC_KERNEL_SIZE             = 0x10405002  ## @~chinese鍘荤传杈圭畻娉曟护娉㈡牳灏哄閿欒
+
diff --git a/MvImport/PixelType_header.py b/MvImport/PixelType_header.py
new file mode 100644
index 0000000..ca018a6
--- /dev/null
+++ b/MvImport/PixelType_header.py
@@ -0,0 +1,291 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+
+from ctypes import *
+
+PixelType_Gvsp_Undefined = -1
+
+PixelType_Gvsp_Mono1p = 16842807
+PixelType_Gvsp_Mono2p = 16908344
+PixelType_Gvsp_Mono4p = 17039417
+PixelType_Gvsp_Mono8 = 17301505
+PixelType_Gvsp_Mono8_Signed = 17301506
+PixelType_Gvsp_Mono10 = 17825795
+PixelType_Gvsp_Mono10_Packed = 17563652
+PixelType_Gvsp_Mono12 = 17825797
+PixelType_Gvsp_Mono12_Packed = 17563654
+PixelType_Gvsp_Mono14 = 17825829
+PixelType_Gvsp_Mono16 = 17825799
+
+PixelType_Gvsp_BayerGR8 = 17301512
+PixelType_Gvsp_BayerRG8 = 17301513
+PixelType_Gvsp_BayerGB8 = 17301514
+PixelType_Gvsp_BayerBG8 = 17301515
+PixelType_Gvsp_BayerRBGG8 = 17301574
+
+
+PixelType_Gvsp_BayerGR10 = 17825804
+PixelType_Gvsp_BayerRG10 = 17825805
+PixelType_Gvsp_BayerGB10 = 17825806
+PixelType_Gvsp_BayerBG10 = 17825807
+
+PixelType_Gvsp_BayerGR12 = 17825808
+PixelType_Gvsp_BayerRG12 = 17825809
+PixelType_Gvsp_BayerGB12 = 17825810
+PixelType_Gvsp_BayerBG12 = 17825811
+
+PixelType_Gvsp_BayerGR10_Packed = 17563686
+PixelType_Gvsp_BayerRG10_Packed = 17563687
+PixelType_Gvsp_BayerGB10_Packed = 17563688
+PixelType_Gvsp_BayerBG10_Packed = 17563689
+
+
+PixelType_Gvsp_BayerGR12_Packed = 17563690
+PixelType_Gvsp_BayerRG12_Packed = 17563691
+PixelType_Gvsp_BayerGB12_Packed = 17563692
+PixelType_Gvsp_BayerBG12_Packed = 17563693
+
+
+PixelType_Gvsp_BayerGR16 = 17825838
+PixelType_Gvsp_BayerRG16 = 17825839
+PixelType_Gvsp_BayerGB16 = 17825840
+PixelType_Gvsp_BayerBG16 = 17825841
+
+
+PixelType_Gvsp_RGB8_Packed = 35127316
+PixelType_Gvsp_BGR8_Packed = 35127317
+PixelType_Gvsp_RGBA8_Packed = 35651606
+PixelType_Gvsp_BGRA8_Packed = 35651607
+
+PixelType_Gvsp_RGB10_Packed = 36700184
+PixelType_Gvsp_BGR10_Packed = 36700185
+PixelType_Gvsp_RGB12_Packed = 36700186
+PixelType_Gvsp_BGR12_Packed = 36700187
+PixelType_Gvsp_RGB16_Packed = 36700211
+PixelType_Gvsp_BGR16_Packed = 36700235
+PixelType_Gvsp_RGBA16_Packed = 37748836
+PixelType_Gvsp_BGRA16_Packed = 37748817
+PixelType_Gvsp_RGB10V1_Packed = 35651612
+PixelType_Gvsp_RGB10V2_Packed = 35651613
+PixelType_Gvsp_RGB12V1_Packed = 35913780
+PixelType_Gvsp_RGB565_Packed = 34603061
+PixelType_Gvsp_BGR565_Packed = 34603062
+
+
+PixelType_Gvsp_YUV411_Packed = 34340894
+PixelType_Gvsp_YUV422_Packed = 34603039
+PixelType_Gvsp_YUV422_YUYV_Packed = 34603058
+PixelType_Gvsp_YUV444_Packed = 35127328
+PixelType_Gvsp_YCBCR8_CBYCR = 35127354
+PixelType_Gvsp_YCBCR422_8 = 34603067
+PixelType_Gvsp_YCBCR422_8_CBYCRY = 34603075
+PixelType_Gvsp_YCBCR411_8_CBYYCRYY = 34340924
+PixelType_Gvsp_YCBCR601_8_CBYCR = 35127357
+PixelType_Gvsp_YCBCR601_422_8 = 34603070
+PixelType_Gvsp_YCBCR601_422_8_CBYCRY = 34603076
+PixelType_Gvsp_YCBCR601_411_8_CBYYCRYY = 34340927
+PixelType_Gvsp_YCBCR709_8_CBYCR = 35127360
+PixelType_Gvsp_YCBCR709_422_8 = 34603073
+PixelType_Gvsp_YCBCR709_422_8_CBYCRY = 34603077
+PixelType_Gvsp_YCBCR709_411_8_CBYYCRYY = 34340930
+
+PixelType_Gvsp_YUV420SP_NV12 = 34373633
+PixelType_Gvsp_YUV420SP_NV21 = 34373634
+
+PixelType_Gvsp_RGB8_Planar = 35127329
+PixelType_Gvsp_RGB10_Planar = 36700194
+PixelType_Gvsp_RGB12_Planar = 36700195
+PixelType_Gvsp_RGB16_Planar = 36700196
+
+
+PixelType_Gvsp_Jpeg = -2145910783
+
+PixelType_Gvsp_Coord3D_ABC32f = 39846080
+PixelType_Gvsp_Coord3D_ABC32f_Planar = 39846081
+
+
+PixelType_Gvsp_Coord3D_AC32f = 36176066
+PixelType_Gvsp_COORD3D_DEPTH_PLUS_MASK = -2112094207
+
+PixelType_Gvsp_Coord3D_ABC32 = -2107625471
+PixelType_Gvsp_Coord3D_AB32f = -2109722622
+PixelType_Gvsp_Coord3D_AB32 = -2109722621
+PixelType_Gvsp_Coord3D_AC32f_64 = 37748930
+PixelType_Gvsp_Coord3D_AC32f_Planar = 37748931
+PixelType_Gvsp_Coord3D_AC32 = -2109722620
+PixelType_Gvsp_Coord3D_A32f = 18874557
+PixelType_Gvsp_Coord3D_A32 = -2128596987
+PixelType_Gvsp_Coord3D_C32f = 18874559
+PixelType_Gvsp_Coord3D_C32 = -2128596986
+PixelType_Gvsp_Coord3D_ABC16 = 36700345
+PixelType_Gvsp_Coord3D_C16 = 17825976
+
+
+PixelType_Gvsp_HB_Mono8 = 0x81080001 #-2130182143
+PixelType_Gvsp_HB_Mono10 = 0x81100003 #-2129657853
+PixelType_Gvsp_HB_Mono10_Packed = 0x810C0004 #-2129919996
+PixelType_Gvsp_HB_Mono12 = 0x81100005#-2129657851
+PixelType_Gvsp_HB_Mono12_Packed = 0x810C0006 #-2129919994
+PixelType_Gvsp_HB_Mono16 = 0x81100007 #-2129657849
+PixelType_Gvsp_HB_BayerGR8 = 0x81080008#-2130182136
+PixelType_Gvsp_HB_BayerRG8 = 0x81080009 #-2130182135
+PixelType_Gvsp_HB_BayerGB8 = 0x8108000A #-2130182134
+PixelType_Gvsp_HB_BayerBG8 = 0x8108000B #-2130182133
+PixelType_Gvsp_HB_BayerRBGG8 = 0x81080046#-2130182074
+PixelType_Gvsp_HB_BayerGR10 = 0x8110000C #-2129657844
+PixelType_Gvsp_HB_BayerRG10 = 0x8110000D #-2129657843
+PixelType_Gvsp_HB_BayerGB10 = 0x8110000E#-2129657842
+PixelType_Gvsp_HB_BayerBG10 = 0x8110000F#-2129657841
+PixelType_Gvsp_HB_BayerGR12 = 0x81100010 #-2129657840
+PixelType_Gvsp_HB_BayerRG12 = 0x81100011 #-2129657839
+PixelType_Gvsp_HB_BayerGB12 = 0x81100012 #-2129657838
+PixelType_Gvsp_HB_BayerBG12 = 0x81100013 #-2129657837
+PixelType_Gvsp_HB_BayerGR10_Packed = 0x810C0026 #-2129919962
+PixelType_Gvsp_HB_BayerRG10_Packed = 0x810C0027 #-2129919961
+PixelType_Gvsp_HB_BayerGB10_Packed = 0x810C0028 #-2129919960
+PixelType_Gvsp_HB_BayerBG10_Packed = 0x810C0029 #-2129919959
+PixelType_Gvsp_HB_BayerGR12_Packed = 0x810C002A #-2129919958
+PixelType_Gvsp_HB_BayerRG12_Packed = 0x810C002B #-2129919957
+PixelType_Gvsp_HB_BayerGB12_Packed = 0x810C002C #-2129919956
+PixelType_Gvsp_HB_BayerBG12_Packed = 0x810C002D #-2129919955
+PixelType_Gvsp_HB_YUV422_Packed = 0x8210001F #-2112880609
+PixelType_Gvsp_HB_YUV422_YUYV_Packed = 0x82100032 #-2112880590
+PixelType_Gvsp_HB_RGB8_Packed = 0x82180014 #-2112356332
+PixelType_Gvsp_HB_BGR8_Packed = 0x82180015 #-2112356331
+PixelType_Gvsp_HB_RGBA8_Packed = 0x82200016 #-2111832042
+PixelType_Gvsp_HB_BGRA8_Packed = 0x82200017 #-2111832041
+PixelType_Gvsp_HB_RGB16_Packed = 0x82300033 #-2110783437
+PixelType_Gvsp_HB_BGR16_Packed = 0x8230004B #-2110783413
+PixelType_Gvsp_HB_RGBA16_Packed = 0x82400064 #-2109734812
+PixelType_Gvsp_HB_BGRA16_Packed = 0x82400051 #-2109734831
+
+__all__ = ['PixelType_Gvsp_BayerRG8',
+           'PixelType_Gvsp_YCBCR422_8',
+           'PixelType_Gvsp_Coord3D_ABC32',
+           'PixelType_Gvsp_Coord3D_AB32f',
+           'PixelType_Gvsp_COORD3D_DEPTH_PLUS_MASK',
+           'PixelType_Gvsp_RGB10_Packed',
+           'PixelType_Gvsp_RGB10V1_Packed',
+           'PixelType_Gvsp_RGB8_Planar',
+           'PixelType_Gvsp_RGBA8_Packed',
+           'PixelType_Gvsp_RGB8_Packed',
+           'PixelType_Gvsp_BayerBG12',
+           'PixelType_Gvsp_Coord3D_AC32f_Planar',
+           'PixelType_Gvsp_BayerBG10_Packed',
+           'PixelType_Gvsp_YCBCR709_422_8_CBYCRY',
+           'PixelType_Gvsp_Coord3D_A32f',
+           'PixelType_Gvsp_YUV411_Packed',
+           'PixelType_Gvsp_BayerBG12_Packed',
+           'PixelType_Gvsp_RGB16_Packed',
+           'PixelType_Gvsp_BGR16_Packed',
+           'PixelType_Gvsp_RGBA16_Packed',
+           'PixelType_Gvsp_BGRA16_Packed',
+           'PixelType_Gvsp_BayerRG12',
+           'PixelType_Gvsp_BayerRG10',
+           'PixelType_Gvsp_BayerRG16',
+           'PixelType_Gvsp_YCBCR709_411_8_CBYYCRYY',
+           'PixelType_Gvsp_BayerGB12_Packed',
+           'PixelType_Gvsp_Coord3D_AC32f',
+           'PixelType_Gvsp_BayerRG12_Packed',
+           'PixelType_Gvsp_Coord3D_AB32',
+           'PixelType_Gvsp_BGR12_Packed',
+           'PixelType_Gvsp_BayerGR10_Packed',
+           'PixelType_Gvsp_Coord3D_AC32',
+           'PixelType_Gvsp_RGB12_Planar',
+           'PixelType_Gvsp_YCBCR709_422_8',
+           'PixelType_Gvsp_BGR8_Packed',
+           'PixelType_Gvsp_Jpeg',
+           'PixelType_Gvsp_Coord3D_AC32f_64',
+           'PixelType_Gvsp_YUV422_Packed',
+           'PixelType_Gvsp_Mono8_Signed',
+           'PixelType_Gvsp_BayerBG10',
+           'PixelType_Gvsp_BayerBG16',
+           'PixelType_Gvsp_BayerGR8',
+           'PixelType_Gvsp_RGB16_Planar',
+           'PixelType_Gvsp_Mono4p',
+           'PixelType_Gvsp_BayerRG10_Packed',
+           'PixelType_Gvsp_Mono8',
+           'PixelType_Gvsp_BayerGR16',
+           'PixelType_Gvsp_BayerGR10',
+           'PixelType_Gvsp_BGRA8_Packed',
+           'PixelType_Gvsp_BayerGR12',
+           'PixelType_Gvsp_Mono12_Packed',
+           'PixelType_Gvsp_YCBCR709_8_CBYCR',
+           'PixelType_Gvsp_Coord3D_A32',
+           'PixelType_Gvsp_YCBCR601_422_8',
+           'PixelType_Gvsp_Coord3D_C32',
+           'PixelType_Gvsp_YCBCR411_8_CBYYCRYY',
+           'PixelType_Gvsp_Undefined',
+           'PixelType_Gvsp_BayerGR12_Packed',
+           'PixelType_Gvsp_YCBCR601_411_8_CBYYCRYY',
+           'PixelType_Gvsp_RGB10_Planar',
+           'PixelType_Gvsp_BayerGB16',
+           'PixelType_Gvsp_BayerGB10',
+           'PixelType_Gvsp_BayerGB12',
+           'PixelType_Gvsp_BGR565_Packed',
+           'PixelType_Gvsp_Mono1p',
+           'PixelType_Gvsp_Coord3D_ABC16',
+           'PixelType_Gvsp_YUV444_Packed',
+           'PixelType_Gvsp_YUV422_YUYV_Packed',
+           'PixelType_Gvsp_BayerBG8',
+           'PixelType_Gvsp_Coord3D_C32f',
+           'PixelType_Gvsp_BGR10_Packed',
+           'PixelType_Gvsp_BayerGB10_Packed',
+           'PixelType_Gvsp_Coord3D_ABC32f_Planar',
+           'PixelType_Gvsp_Coord3D_ABC32f',
+           'PixelType_Gvsp_YCBCR422_8_CBYCRY',
+           'PixelType_Gvsp_RGB12_Packed',
+           'PixelType_Gvsp_Mono12',
+           'PixelType_Gvsp_Mono10',
+           'PixelType_Gvsp_Mono16',
+           'PixelType_Gvsp_Mono2p',
+           'PixelType_Gvsp_Mono14',
+           'PixelType_Gvsp_RGB10V2_Packed',
+           'PixelType_Gvsp_RGB12V1_Packed',
+           'PixelType_Gvsp_Mono10_Packed',
+           'PixelType_Gvsp_YCBCR601_8_CBYCR',
+           'PixelType_Gvsp_BayerGB8',
+           'PixelType_Gvsp_YCBCR8_CBYCR',
+           'PixelType_Gvsp_RGB565_Packed',
+           'PixelType_Gvsp_YCBCR601_422_8_CBYCRY',
+           'PixelType_Gvsp_YUV420SP_NV12',
+           'PixelType_Gvsp_YUV420SP_NV21',
+           'PixelType_Gvsp_Coord3D_C16',
+           'PixelType_Gvsp_BayerRBGG8',
+           'PixelType_Gvsp_HB_Mono8',
+           'PixelType_Gvsp_HB_Mono10',
+           'PixelType_Gvsp_HB_Mono10_Packed',
+           'PixelType_Gvsp_HB_Mono12',
+           'PixelType_Gvsp_HB_Mono12_Packed',
+           'PixelType_Gvsp_HB_Mono16',
+           'PixelType_Gvsp_HB_BayerGR8',
+           'PixelType_Gvsp_HB_BayerRG8',
+           'PixelType_Gvsp_HB_BayerGB8',
+           'PixelType_Gvsp_HB_BayerBG8',
+           'PixelType_Gvsp_HB_BayerRBGG8',
+           'PixelType_Gvsp_HB_BayerGR10',
+           'PixelType_Gvsp_HB_BayerRG10',
+           'PixelType_Gvsp_HB_BayerGB10',
+           'PixelType_Gvsp_HB_BayerBG10',
+           'PixelType_Gvsp_HB_BayerGR12',
+           'PixelType_Gvsp_HB_BayerRG12',
+           'PixelType_Gvsp_HB_BayerGB12',
+           'PixelType_Gvsp_HB_BayerBG12',
+           'PixelType_Gvsp_HB_BayerGR10_Packed',
+           'PixelType_Gvsp_HB_BayerRG10_Packed',
+           'PixelType_Gvsp_HB_BayerGB10_Packed',
+           'PixelType_Gvsp_HB_BayerBG10_Packed',
+           'PixelType_Gvsp_HB_BayerGR12_Packed',
+           'PixelType_Gvsp_HB_BayerRG12_Packed',
+           'PixelType_Gvsp_HB_BayerGB12_Packed',
+           'PixelType_Gvsp_HB_BayerBG12_Packed',
+           'PixelType_Gvsp_HB_YUV422_Packed',
+           'PixelType_Gvsp_HB_YUV422_YUYV_Packed',
+           'PixelType_Gvsp_HB_RGB8_Packed',
+           'PixelType_Gvsp_HB_BGR8_Packed',
+           'PixelType_Gvsp_HB_RGBA8_Packed',
+           'PixelType_Gvsp_HB_BGRA8_Packed',
+           'PixelType_Gvsp_HB_RGB16_Packed',
+           'PixelType_Gvsp_HB_BGR16_Packed',
+           'PixelType_Gvsp_HB_RGBA16_Packed',
+           'PixelType_Gvsp_HB_BGRA16_Packed']
diff --git a/MvImport/__init__.py b/MvImport/__init__.py
new file mode 100644
index 0000000..ba8cf3f
--- /dev/null
+++ b/MvImport/__init__.py
@@ -0,0 +1,25 @@
+#!/usr/bin/python
+# -*- coding:utf-8 -*-
+# -*-mode:python ; tab-width:4 -*- ex:set tabstop=4 shiftwidth=4 expandtab: -*-
+
+import sys
+import os
+current_dir = os.path.dirname(os.path.abspath(__file__))
+if current_dir not in sys.path:
+    sys.path.append(current_dir)
+    
+parent_dir = os.path.dirname(current_dir)
+if parent_dir not in sys.path:
+    sys.path.append(parent_dir)
+
+from .MvErrorDefine_const import * 
+from .MvISPErrorDefine_const import *  
+from .PixelType_header import *  
+from .CameraParams_const import *  
+from .CameraParams_header import *  
+from .MvCameraControl_class import *   
+
+
+__all__ = ["MvErrorDefine_const", "MvISPErrorDefine_const","PixelType_header", "CameraParams_const", "CameraParams_header",  "MvCameraControl_class"]
+
+__version__ = '4.6.0.1'
diff --git a/README.md b/README.md
index 7ed34d2..1e365b6 100644
--- a/README.md
+++ b/README.md
@@ -1,4 +1,213 @@
-## hik-video
+# 娴峰悍宸ヤ笟鐩告満HTTP API鏈嶅姟
 
+閫氳繃FastAPI鎻愪緵HTTP鎺ュ彛鎺у埗娴峰悍宸ヤ笟鐩告満鎷嶇収
 
+## 鍔熻兘鐗规��
 
+- 鉁� 鏀寔澶氱浉鏈虹鐞�
+- 鉁� 閫氳繃IP鍦板潃銆佸簭鍒楀彿銆佺储寮曢�夋嫨鐩告満
+- 鉁� RESTful API鎺ュ彛
+- 鉁� 鑷姩鍥惧儚鏍煎紡杞崲锛圔MP/JPG锛�
+- 鉁� 鍥剧墖涓嬭浇鎺ュ彛
+- 鉁� 瀹屾暣鐨勯敊璇鐞�
+
+## 瀹夎渚濊禆
+
+```bash
+pip install -r requirements.txt
+```
+
+## 鍚姩鏈嶅姟
+
+```bash
+python camera_api.py
+```
+
+鏈嶅姟灏嗗湪 `http://localhost:8000` 鍚姩
+
+## API鏂囨。
+
+鍚姩鏈嶅姟鍚庤闂細
+- Swagger UI: http://localhost:8000/docs
+- ReDoc: http://localhost:8000/redoc
+
+## API鎺ュ彛
+
+### 1. 鍒楀嚭鎵�鏈夌浉鏈�
+
+**GET** `/cameras`
+
+鍝嶅簲绀轰緥锛�
+```json
+{
+  "success": true,
+  "count": 2,
+  "cameras": [
+    {
+      "index": 0,
+      "type": "GigE",
+      "model": "MV-CS200-10GC",
+      "serial": "00J12345678",
+      "ip": "192.168.1.100",
+      "user_defined_name": "Camera1"
+    }
+  ]
+}
+```
+
+### 2. 鎷嶇収锛堥�氳繃IP鍦板潃锛�
+
+**GET** `/capture?ip=192.168.1.100&filename=test_image`
+
+**POST** `/capture`
+```json
+{
+  "ip": "192.168.1.100",
+  "filename": "test_image",
+  "save_bmp": true,
+  "save_jpg": true,
+  "timeout": 3000
+}
+```
+
+鍝嶅簲绀轰緥锛�
+```json
+{
+  "success": true,
+  "message": "鎷嶇収鎴愬姛",
+  "files": ["test_image.bmp", "test_image.jpg"],
+  "camera_info": {
+    "type": "GigE",
+    "model": "MV-CS200-10GC",
+    "serial": "00J12345678",
+    "ip": "192.168.1.100"
+  }
+}
+```
+
+### 3. 鎷嶇収锛堥�氳繃搴忓垪鍙凤級
+
+**GET** `/capture_by_serial?serial=00J12345678&filename=test_image`
+
+### 4. 鎷嶇収锛堥�氳繃绱㈠紩锛�
+
+**GET** `/capture_by_index?index=0&filename=test_image`
+
+### 5. 涓嬭浇鍥剧墖
+
+**GET** `/image/test_image.jpg`
+
+### 6. 鍋ュ悍妫�鏌�
+
+**GET** `/health`
+
+## 浣跨敤绀轰緥
+
+### Python瀹㈡埛绔�
+
+```python
+import requests
+
+# 鍒楀嚭鎵�鏈夌浉鏈�
+response = requests.get("http://localhost:8000/cameras")
+cameras = response.json()["cameras"]
+
+# 閫氳繃IP鍦板潃鎷嶇収
+response = requests.get(
+    "http://localhost:8000/capture",
+    params={
+        "ip": "192.168.1.100",
+        "filename": "my_image"
+    }
+)
+result = response.json()
+print(f"淇濆瓨鐨勬枃浠�: {result['files']}")
+
+# 涓嬭浇鍥剧墖
+response = requests.get("http://localhost:8000/image/my_image.jpg")
+with open("downloaded.jpg", "wb") as f:
+    f.write(response.content)
+```
+
+### cURL
+
+```bash
+# 鍒楀嚭鐩告満
+curl http://localhost:8000/cameras
+
+# 鎷嶇収锛圙ET锛�
+curl "http://localhost:8000/capture?ip=192.168.1.100&filename=test_image"
+
+# 鎷嶇収锛圥OST锛�
+curl -X POST http://localhost:8000/capture \
+  -H "Content-Type: application/json" \
+  -d '{"ip":"192.168.1.100","filename":"test_image"}'
+
+# 涓嬭浇鍥剧墖
+curl -O http://localhost:8000/image/test_image.jpg
+```
+
+### JavaScript/Fetch
+
+```javascript
+// 鍒楀嚭鐩告満
+fetch('http://localhost:8000/cameras')
+  .then(res => res.json())
+  .then(data => console.log(data));
+
+// 鎷嶇収
+fetch('http://localhost:8000/capture?ip=192.168.1.100&filename=test_image')
+  .then(res => res.json())
+  .then(data => console.log(data));
+
+// 涓嬭浇鍥剧墖
+fetch('http://localhost:8000/image/test_image.jpg')
+  .then(res => res.blob())
+  .then(blob => {
+    const url = window.URL.createObjectURL(blob);
+    const a = document.createElement('a');
+    a.href = url;
+    a.download = 'test_image.jpg';
+    a.click();
+  });
+```
+
+## 娴嬭瘯
+
+杩愯娴嬭瘯瀹㈡埛绔細
+
+```bash
+python test_api.py
+```
+
+## 鏂囦欢璇存槑
+
+- `camera_api.py` - FastAPI鏈嶅姟涓绘枃浠�
+- `camera_manager.py` - 鐩告満绠$悊绫�
+- `test_api.py` - API娴嬭瘯瀹㈡埛绔�
+- `test.py` - 鍩虹娴嬭瘯鑴氭湰
+- `example_multi_camera.py` - 澶氱浉鏈轰娇鐢ㄧず渚�
+- `requirements.txt` - Python渚濊禆
+
+## 娉ㄦ剰浜嬮」
+
+1. 纭繚鐩告満宸叉纭繛鎺ュ苟閰嶇疆濂界綉缁�
+2. 鍏抽棴娴峰悍MVS瀹㈡埛绔蒋浠讹紝閬垮厤璁惧鍗犵敤
+3. 鍥剧墖榛樿淇濆瓨鍦ㄥ綋鍓嶇洰褰�
+4. 寤鸿鍦ㄧ敓浜х幆澧冧腑娣诲姞璁よ瘉鍜屾潈闄愭帶鍒�
+5. 鍙互閫氳繃鐜鍙橀噺閰嶇疆鏈嶅姟绔彛鍜屼繚瀛樿矾寰�
+
+## 鏁呴殰鎺掗櫎
+
+### 閿欒锛氳澶囨棤璁块棶鏉冮檺 (0x80000203)
+- 鍏抽棴娴峰悍MVS瀹㈡埛绔�
+- 纭繚娌℃湁鍏朵粬绋嬪簭鍗犵敤鐩告満
+
+### 閿欒锛氳幏鍙栧浘鍍忓け璐� (0x80000007)
+- 妫�鏌ョ浉鏈洪暅澶寸洊鏄惁鎵撳紑
+- 纭繚鏈夎冻澶熷厜绾�
+- 澧炲姞timeout鍙傛暟鍊�
+
+### 閿欒锛氭棤娉曡繛鎺ュ埌API鏈嶅姟
+- 纭繚鏈嶅姟宸插惎鍔細`python camera_api.py`
+- 妫�鏌ョ鍙�8000鏄惁琚崰鐢�
diff --git a/camera_api.py b/camera_api.py
new file mode 100644
index 0000000..27f783c
--- /dev/null
+++ b/camera_api.py
@@ -0,0 +1,323 @@
+from fastapi import FastAPI, HTTPException, Query
+from fastapi.responses import JSONResponse, FileResponse
+from pydantic import BaseModel
+from typing import Optional, List
+import os
+import uvicorn
+from camera_manager import HikCameraManager
+
+# 鍒涘缓FastAPI搴旂敤
+app = FastAPI(
+    title="娴峰悍鐩告満API鏈嶅姟",
+    description="閫氳繃HTTP鎺ュ彛鎺у埗娴峰悍宸ヤ笟鐩告満鎷嶇収",
+    version="1.0.0"
+)
+
+# 鍏ㄥ眬鐩告満绠$悊鍣�
+camera_manager = HikCameraManager()
+# 瀛樺偍鍦板潃
+storageAddress = "D:\\pic\\"
+
+class CaptureRequest(BaseModel):
+    """鎷嶇収璇锋眰鍙傛暟"""
+    ip: str
+    filename: str
+    save_bmp: bool = True
+    save_jpg: bool = True
+    timeout: int = 10000
+
+
+class CaptureResponse(BaseModel):
+    """鎷嶇収鍝嶅簲"""
+    success: bool
+    message: str
+    files: List[str] = []
+    camera_info: dict = {}
+
+
+@app.on_event("startup")
+async def startup_event():
+    """鍚姩鏃跺垵濮嬪寲SDK"""
+    try:
+        camera_manager.initialize()
+        print("鐩告満API鏈嶅姟鍚姩鎴愬姛")
+    except Exception as e:
+        print(f"鍒濆鍖栧け璐�: {e}")
+
+
+@app.on_event("shutdown")
+async def shutdown_event():
+    """鍏抽棴鏃舵竻鐞嗚祫婧�"""
+    try:
+        camera_manager.finalize()
+        print("鐩告満API鏈嶅姟宸插叧闂�")
+    except Exception as e:
+        print(f"娓呯悊璧勬簮澶辫触: {e}")
+
+
+@app.get("/")
+async def root():
+    """鏍硅矾寰�"""
+    return {
+        "service": "娴峰悍鐩告満API鏈嶅姟",
+        "version": "1.0.0",
+        "endpoints": {
+            "GET /cameras": "鍒楀嚭鎵�鏈夌浉鏈�",
+            "POST /capture": "鎷嶇収锛圝SON body锛�",
+            "GET /capture": "鎷嶇収锛圲RL鍙傛暟锛�",
+            "GET /image/{filename}": "涓嬭浇鍥剧墖"
+        }
+    }
+
+
+@app.get("/cameras")
+async def list_cameras():
+    """
+    鍒楀嚭鎵�鏈夊彲鐢ㄧ浉鏈�
+    
+    杩斿洖:
+        鐩告満鍒楄〃鍙婅缁嗕俊鎭�
+    """
+    try:
+        cameras = camera_manager.list_cameras()
+        
+        # 鏍煎紡鍖栬繑鍥炴暟鎹�
+        camera_list = []
+        for cam in cameras:
+            camera_list.append({
+                "index": cam['index'],
+                "type": cam['type'],
+                "model": cam['model'],
+                "serial": cam['serial'],
+                "ip": cam['ip'] if cam['ip'] else None,
+                "user_defined_name": cam['user_defined_name'] if cam['user_defined_name'] else None
+            })
+        
+        return {
+            "success": True,
+            "count": len(camera_list),
+            "cameras": camera_list
+        }
+    
+    except Exception as e:
+        raise HTTPException(status_code=500, detail=f"鑾峰彇鐩告満鍒楄〃澶辫触: {str(e)}")
+
+
+@app.post("/capture")
+async def capture_image_post(request: CaptureRequest):
+    """
+    鎷嶇収鎺ュ彛锛圥OST鏂瑰紡锛�
+    
+    鍙傛暟:
+        - ip: 鐩告満IP鍦板潃
+        - filename: 淇濆瓨鐨勬枃浠跺悕锛堜笉鍚墿灞曞悕锛�
+        - save_bmp: 鏄惁淇濆瓨BMP鏍煎紡锛堥粯璁rue锛�
+        - save_jpg: 鏄惁淇濆瓨JPG鏍煎紡锛堥粯璁rue锛�
+        - timeout: 瓒呮椂鏃堕棿锛堟绉掞紝榛樿3000锛�
+    
+    杩斿洖:
+        鎷嶇収缁撴灉鍜屼繚瀛樼殑鏂囦欢鍒楄〃
+    """
+    try:
+        # 鎵撳紑鐩告満
+        camera_info = camera_manager.open_camera(ip=request.ip)
+        
+        # 鎷嶇収
+        saved_files = camera_manager.capture_image(
+            filename=request.filename,
+            storageAddress=storageAddress,
+            save_bmp=request.save_bmp,
+            save_jpg=request.save_jpg,
+            timeout=request.timeout
+        )
+        
+        # 鍏抽棴鐩告満
+        camera_manager.close_camera()
+        
+        return CaptureResponse(
+            success=True,
+            message="鎷嶇収鎴愬姛",
+            files=saved_files,
+            camera_info={
+                "type": camera_info['type'],
+                "model": camera_info['model'],
+                "serial": camera_info['serial'],
+                "ip": camera_info['ip']
+            }
+        )
+    
+    except Exception as e:
+        # 纭繚鍏抽棴鐩告満
+        try:
+            camera_manager.close_camera()
+        except:
+            pass
+        
+        raise HTTPException(status_code=500, detail=f"鎷嶇収澶辫触: {str(e)}")
+
+
+@app.get("/capture")
+async def capture_image_get(
+    ip: str = Query(..., description="鐩告満IP鍦板潃"),
+    filename: str = Query(..., description="淇濆瓨鐨勬枃浠跺悕锛堜笉鍚墿灞曞悕锛�"),
+    save_bmp: bool = Query(True, description="鏄惁淇濆瓨BMP鏍煎紡"),
+    save_jpg: bool = Query(True, description="鏄惁淇濆瓨JPG鏍煎紡"),
+    timeout: int = Query(3000, description="瓒呮椂鏃堕棿锛堟绉掞級")
+):
+    """
+    鎷嶇収鎺ュ彛锛圙ET鏂瑰紡锛�
+    
+    鍙傛暟:
+        - ip: 鐩告満IP鍦板潃
+        - filename: 淇濆瓨鐨勬枃浠跺悕锛堜笉鍚墿灞曞悕锛�
+        - save_bmp: 鏄惁淇濆瓨BMP鏍煎紡锛堥粯璁rue锛�
+        - save_jpg: 鏄惁淇濆瓨JPG鏍煎紡锛堥粯璁rue锛�
+        - timeout: 瓒呮椂鏃堕棿锛堟绉掞紝榛樿3000锛�
+    
+    绀轰緥:
+        GET /capture?ip=192.168.1.100&filename=test_image
+    """
+    request = CaptureRequest(
+        ip=ip,
+        filename=filename,
+        save_bmp=save_bmp,
+        save_jpg=save_jpg,
+        timeout=timeout
+    )
+    return await capture_image_post(request)
+
+
+@app.get("/capture_by_serial")
+async def capture_by_serial(
+    serial: str = Query(..., description="鐩告満搴忓垪鍙�"),
+    filename: str = Query(..., description="淇濆瓨鐨勬枃浠跺悕锛堜笉鍚墿灞曞悕锛�"),
+    save_bmp: bool = Query(True, description="鏄惁淇濆瓨BMP鏍煎紡"),
+    save_jpg: bool = Query(True, description="鏄惁淇濆瓨JPG鏍煎紡"),
+    timeout: int = Query(3000, description="瓒呮椂鏃堕棿锛堟绉掞級")
+):
+    """
+    閫氳繃搴忓垪鍙锋媿鐓�
+    
+    绀轰緥:
+        GET /capture_by_serial?serial=00J12345678&filename=test_image
+    """
+    try:
+        camera_info = camera_manager.open_camera(serial=serial)
+        
+        saved_files = camera_manager.capture_image(
+            filename=filename,
+            save_bmp=save_bmp,
+            save_jpg=save_jpg,
+            timeout=timeout
+        )
+        
+        camera_manager.close_camera()
+        
+        return CaptureResponse(
+            success=True,
+            message="鎷嶇収鎴愬姛",
+            files=saved_files,
+            camera_info={
+                "type": camera_info['type'],
+                "model": camera_info['model'],
+                "serial": camera_info['serial'],
+                "ip": camera_info.get('ip', '')
+            }
+        )
+    
+    except Exception as e:
+        try:
+            camera_manager.close_camera()
+        except:
+            pass
+        raise HTTPException(status_code=500, detail=f"鎷嶇収澶辫触: {str(e)}")
+
+
+@app.get("/capture_by_index")
+async def capture_by_index(
+    index: int = Query(0, description="鐩告満绱㈠紩"),
+    filename: str = Query(..., description="淇濆瓨鐨勬枃浠跺悕锛堜笉鍚墿灞曞悕锛�"),
+    save_bmp: bool = Query(True, description="鏄惁淇濆瓨BMP鏍煎紡"),
+    save_jpg: bool = Query(True, description="鏄惁淇濆瓨JPG鏍煎紡"),
+    timeout: int = Query(3000, description="瓒呮椂鏃堕棿锛堟绉掞級")
+):
+    """
+    閫氳繃绱㈠紩鎷嶇収
+    
+    绀轰緥:
+        GET /capture_by_index?index=0&filename=test_image
+    """
+    try:
+        camera_info = camera_manager.open_camera(index=index)
+        
+        saved_files = camera_manager.capture_image(
+            filename=filename,
+            storageAddress=storageAddress,
+            save_bmp=save_bmp,
+            save_jpg=save_jpg,
+            timeout=timeout
+        )
+        
+        camera_manager.close_camera()
+        
+        return CaptureResponse(
+            success=True,
+            message="鎷嶇収鎴愬姛",
+            files=saved_files,
+            camera_info={
+                "type": camera_info['type'],
+                "model": camera_info['model'],
+                "serial": camera_info['serial'],
+                "ip": camera_info.get('ip', '')
+            }
+        )
+    
+    except Exception as e:
+        try:
+            camera_manager.close_camera()
+        except:
+            pass
+        raise HTTPException(status_code=500, detail=f"鎷嶇収澶辫触: {str(e)}")
+
+
+@app.get("/image/{filename}")
+async def get_image(filename: str):
+    """
+    涓嬭浇鍥剧墖
+    
+    鍙傛暟:
+        filename: 鏂囦欢鍚嶏紙鍚墿灞曞悕锛�
+    
+    绀轰緥:
+        GET /image/test_image.jpg
+    """
+
+    filepath = storageAddress + filename
+    if not os.path.exists(filepath):
+        raise HTTPException(status_code=404, detail="鏂囦欢涓嶅瓨鍦�")
+    
+    return FileResponse(
+        filepath,
+        media_type="application/octet-stream",
+        filename=filename
+    )
+
+
+@app.get("/health")
+async def health_check():
+    """鍋ュ悍妫�鏌�"""
+    return {
+        "status": "healthy",
+        "service": "camera-api",
+        "sdk_initialized": camera_manager.is_initialized
+    }
+
+
+if __name__ == "__main__":
+    # 鍚姩鏈嶅姟
+    uvicorn.run(
+        app,
+        host="0.0.0.0",
+        port=8000,
+        log_level="info"
+    )
diff --git a/camera_manager.py b/camera_manager.py
new file mode 100644
index 0000000..cc0b28e
--- /dev/null
+++ b/camera_manager.py
@@ -0,0 +1,368 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+"""
+娴峰悍宸ヤ笟鐩告満绠$悊绫� - 鏀寔澶氱浉鏈洪�夋嫨鍜屾搷浣�
+"""
+import time
+from MvImport.MvCameraControl_class import *
+
+
+class HikCameraManager:
+    """娴峰悍鐩告満绠$悊鍣�"""
+    
+    def __init__(self):
+        self.cam = None
+        self.is_initialized = False
+        
+    def initialize(self):
+        """鍒濆鍖朣DK"""
+        ret = MvCamera.MV_CC_Initialize()
+        if ret != 0:
+            raise Exception(f"鍒濆鍖朣DK澶辫触! 閿欒鐮�: {hex(ret)}")
+        self.is_initialized = True
+        print("SDK鍒濆鍖栨垚鍔�")
+        
+    def list_cameras(self):
+        """
+        鍒楀嚭鎵�鏈夊彲鐢ㄧ浉鏈�
+        杩斿洖: 鐩告満淇℃伅鍒楄〃
+        """
+        if not self.is_initialized:
+            self.initialize()
+            
+        deviceList = MV_CC_DEVICE_INFO_LIST()
+        ret = MvCamera.MV_CC_EnumDevices(MV_GIGE_DEVICE | MV_USB_DEVICE, deviceList)
+        
+        if ret != 0:
+            raise Exception(f"鏋氫妇璁惧澶辫触! 閿欒鐮�: {hex(ret)}")
+            
+        if deviceList.nDeviceNum == 0:
+            print("鏈壘鍒扮浉鏈鸿澶�")
+            return []
+        
+        cameras = []
+        for i in range(deviceList.nDeviceNum):
+            mvcc_dev_info = cast(deviceList.pDeviceInfo[i], POINTER(MV_CC_DEVICE_INFO)).contents
+            
+            camera_info = {
+                'index': i,
+                'device_info': mvcc_dev_info,
+                'type': None,
+                'model': '',
+                'serial': '',
+                'ip': '',
+                'user_defined_name': ''
+            }
+            
+            if mvcc_dev_info.nTLayerType == MV_GIGE_DEVICE:
+                camera_info['type'] = 'GigE'
+                
+                # 鍨嬪彿
+                model_name = ""
+                for per in mvcc_dev_info.SpecialInfo.stGigEInfo.chModelName:
+                    if per == 0:
+                        break
+                    model_name += chr(per)
+                camera_info['model'] = model_name.strip()
+                
+                # 搴忓垪鍙�
+                serial = ""
+                for per in mvcc_dev_info.SpecialInfo.stGigEInfo.chSerialNumber:
+                    if per == 0:
+                        break
+                    serial += chr(per)
+                camera_info['serial'] = serial.strip()
+                
+                # IP鍦板潃
+                nip1 = ((mvcc_dev_info.SpecialInfo.stGigEInfo.nCurrentIp & 0xff000000) >> 24)
+                nip2 = ((mvcc_dev_info.SpecialInfo.stGigEInfo.nCurrentIp & 0x00ff0000) >> 16)
+                nip3 = ((mvcc_dev_info.SpecialInfo.stGigEInfo.nCurrentIp & 0x0000ff00) >> 8)
+                nip4 = (mvcc_dev_info.SpecialInfo.stGigEInfo.nCurrentIp & 0x000000ff)
+                camera_info['ip'] = f"{nip1}.{nip2}.{nip3}.{nip4}"
+                
+                # 鐢ㄦ埛鑷畾涔夊悕绉�
+                user_name = ""
+                for per in mvcc_dev_info.SpecialInfo.stGigEInfo.chUserDefinedName:
+                    if per == 0:
+                        break
+                    user_name += chr(per)
+                camera_info['user_defined_name'] = user_name.strip()
+                
+            elif mvcc_dev_info.nTLayerType == MV_USB_DEVICE:
+                camera_info['type'] = 'USB'
+                
+                # 鍨嬪彿
+                model_name = ""
+                for per in mvcc_dev_info.SpecialInfo.stUsb3VInfo.chModelName:
+                    if per == 0:
+                        break
+                    model_name += chr(per)
+                camera_info['model'] = model_name.strip()
+                
+                # 搴忓垪鍙�
+                serial = ""
+                for per in mvcc_dev_info.SpecialInfo.stUsb3VInfo.chSerialNumber:
+                    if per == 0:
+                        break
+                    serial += chr(per)
+                camera_info['serial'] = serial.strip()
+                
+                # 鐢ㄦ埛鑷畾涔夊悕绉�
+                user_name = ""
+                for per in mvcc_dev_info.SpecialInfo.stUsb3VInfo.chUserDefinedName:
+                    if per == 0:
+                        break
+                    user_name += chr(per)
+                camera_info['user_defined_name'] = user_name.strip()
+            
+            cameras.append(camera_info)
+        
+        return cameras
+    
+    def print_cameras(self):
+        """鎵撳嵃鎵�鏈夌浉鏈轰俊鎭�"""
+        cameras = self.list_cameras()
+        
+        if not cameras:
+            print("鏈壘鍒扮浉鏈�")
+            return
+        
+        print(f"\n鎵惧埌 {len(cameras)} 涓浉鏈�:")
+        print("=" * 80)
+        
+        for cam in cameras:
+            print(f"\n[{cam['index']}] {cam['type']} 鐩告満")
+            print(f"  鍨嬪彿: {cam['model']}")
+            print(f"  搴忓垪鍙�: {cam['serial']}")
+            if cam['ip']:
+                print(f"  IP鍦板潃: {cam['ip']}")
+            if cam['user_defined_name']:
+                print(f"  鑷畾涔夊悕绉�: {cam['user_defined_name']}")
+        
+        print("=" * 80)
+    
+    def open_camera(self, index=None, serial=None, ip=None, model=None):
+        """
+        鎵撳紑鎸囧畾鐩告満
+        
+        鍙傛暟:
+            index: 鐩告満绱㈠紩锛�0, 1, 2...锛�
+            serial: 鐩告満搴忓垪鍙�
+            ip: 鐩告満IP鍦板潃锛堜粎GigE鐩告満锛�
+            model: 鐩告満鍨嬪彿
+            
+        浼樺厛绾�: serial > ip > model > index
+        """
+        cameras = self.list_cameras()
+        
+        if not cameras:
+            raise Exception("鏈壘鍒扮浉鏈鸿澶�")
+        
+        # 鏍规嵁鏉′欢閫夋嫨鐩告満
+        selected_camera = None
+        
+        if serial:
+            # 鎸夊簭鍒楀彿鏌ユ壘
+            for cam in cameras:
+                if cam['serial'] == serial:
+                    selected_camera = cam
+                    print(f"閫氳繃搴忓垪鍙烽�夋嫨鐩告満: {serial}")
+                    break
+            if not selected_camera:
+                raise Exception(f"鏈壘鍒板簭鍒楀彿涓� {serial} 鐨勭浉鏈�")
+                
+        elif ip:
+            # 鎸塈P鍦板潃鏌ユ壘锛堜粎GigE锛�
+            for cam in cameras:
+                if cam['ip'] == ip:
+                    selected_camera = cam
+                    print(f"閫氳繃IP鍦板潃閫夋嫨鐩告満: {ip}")
+                    break
+            if not selected_camera:
+                raise Exception(f"鏈壘鍒癐P鍦板潃涓� {ip} 鐨勭浉鏈�")
+                
+        elif model:
+            # 鎸夊瀷鍙锋煡鎵�
+            for cam in cameras:
+                if model in cam['model']:
+                    selected_camera = cam
+                    print(f"閫氳繃鍨嬪彿閫夋嫨鐩告満: {model}")
+                    break
+            if not selected_camera:
+                raise Exception(f"鏈壘鍒板瀷鍙峰寘鍚� {model} 鐨勭浉鏈�")
+                
+        else:
+            # 鎸夌储寮曢�夋嫨锛堥粯璁ょ涓�涓級
+            if index is None:
+                index = 0
+            if index >= len(cameras):
+                raise Exception(f"鐩告満绱㈠紩 {index} 瓒呭嚭鑼冨洿锛堝叡 {len(cameras)} 涓浉鏈猴級")
+            selected_camera = cameras[index]
+            print(f"閫氳繃绱㈠紩閫夋嫨鐩告満: {index}")
+        
+        # 鎵撳嵃閫変腑鐨勭浉鏈轰俊鎭�
+        print(f"閫変腑鐩告満: [{selected_camera['type']}] {selected_camera['model']} (搴忓垪鍙�: {selected_camera['serial']})")
+        
+        # 鍒涘缓鍙ユ焺
+        self.cam = MvCamera()
+        ret = self.cam.MV_CC_CreateHandle(selected_camera['device_info'])
+        if ret != 0:
+            raise Exception(f"鍒涘缓鍙ユ焺澶辫触! 閿欒鐮�: {hex(ret)}")
+        
+        # 鎵撳紑璁惧
+        ret = self.cam.MV_CC_OpenDevice(MV_ACCESS_Exclusive, 0)
+        if ret != 0:
+            # 灏濊瘯鎺у埗妯″紡
+            ret = self.cam.MV_CC_OpenDevice(MV_ACCESS_Control, 0)
+            if ret != 0:
+                self.cam.MV_CC_DestroyHandle()
+                raise Exception(f"鎵撳紑璁惧澶辫触! 閿欒鐮�: {hex(ret)}")
+        
+        print("鐩告満鎵撳紑鎴愬姛")
+        return selected_camera
+    
+    def capture_image(self, filename="captured_image", storageAddress = "D:pic/", save_bmp=True, save_jpg=True, timeout=3000):
+        """
+        閲囬泦涓�甯у浘鍍�
+        
+        鍙傛暟:
+            filename: 鏂囦欢鍚嶏紙涓嶅惈鎵╁睍鍚嶏級
+            save_bmp: 鏄惁淇濆瓨BMP鏍煎紡
+            save_jpg: 鏄惁淇濆瓨JPG鏍煎紡
+            timeout: 瓒呮椂鏃堕棿锛堟绉掞級
+        """
+        if not self.cam:
+            raise Exception("鐩告満鏈墦寮�")
+        
+        # 璁剧疆瑙﹀彂妯″紡涓鸿繛缁噰闆�
+        ret = self.cam.MV_CC_SetEnumValue("TriggerMode", MV_TRIGGER_MODE_OFF)
+        if ret != 0:
+            print(f"璀﹀憡: 璁剧疆瑙﹀彂妯″紡澶辫触! 閿欒鐮�: {hex(ret)}")
+        
+        # 寮�濮嬪彇娴�
+        ret = self.cam.MV_CC_StartGrabbing()
+        if ret != 0:
+            raise Exception(f"寮�濮嬪彇娴佸け璐�! 閿欒鐮�: {hex(ret)}")
+        
+        print("寮�濮嬮噰闆�...")
+        time.sleep(1)  # 绛夊緟鐩告満绋冲畾
+        
+        # 鑾峰彇鍥惧儚
+        stFrameInfo = MV_FRAME_OUT()
+        memset(byref(stFrameInfo), 0, sizeof(stFrameInfo))
+        
+        ret = self.cam.MV_CC_GetImageBuffer(stFrameInfo, timeout)
+        if ret != 0:
+            self.cam.MV_CC_StopGrabbing()
+            raise Exception(f"鑾峰彇鍥惧儚澶辫触! 閿欒鐮�: {hex(ret)}")
+        
+        print(f"鎴愬姛鑾峰彇鍥惧儚: {stFrameInfo.stFrameInfo.nWidth}x{stFrameInfo.stFrameInfo.nHeight}")
+        
+        # 杞崲骞朵繚瀛樺浘鍍�
+        saved_files = []
+        
+        if save_bmp:
+            bmp_file = f"{storageAddress}{filename}.bmp"
+            if self._save_image(stFrameInfo, bmp_file, MV_Image_Bmp):
+                saved_files.append(bmp_file)
+        
+        if save_jpg:
+            jpg_file = f"{storageAddress}{filename}.jpg"
+            if self._save_image(stFrameInfo, jpg_file, MV_Image_Jpeg):
+                saved_files.append(jpg_file)
+        
+        # 閲婃斁鍥惧儚缂撳瓨
+        self.cam.MV_CC_FreeImageBuffer(stFrameInfo)
+        
+        # 鍋滄鍙栨祦
+        self.cam.MV_CC_StopGrabbing()
+        
+        return saved_files
+    
+    def _save_image(self, stFrameInfo, filename, image_type):
+        """鍐呴儴鏂规硶锛氫繚瀛樺浘鍍�"""
+        stConvertParam = MV_SAVE_IMAGE_PARAM_EX()
+        memset(byref(stConvertParam), 0, sizeof(stConvertParam))
+        
+        nBufSize = stFrameInfo.stFrameInfo.nWidth * stFrameInfo.stFrameInfo.nHeight * 3 + 2048
+        pBuf = (c_ubyte * nBufSize)()
+        
+        stConvertParam.nWidth = stFrameInfo.stFrameInfo.nWidth
+        stConvertParam.nHeight = stFrameInfo.stFrameInfo.nHeight
+        stConvertParam.pData = stFrameInfo.pBufAddr
+        stConvertParam.nDataLen = stFrameInfo.stFrameInfo.nFrameLen
+        stConvertParam.enPixelType = stFrameInfo.stFrameInfo.enPixelType
+        stConvertParam.pImageBuffer = cast(pBuf, POINTER(c_ubyte))
+        stConvertParam.nBufferSize = nBufSize
+        stConvertParam.enImageType = image_type
+        stConvertParam.nJpgQuality = 90
+        
+        ret = self.cam.MV_CC_SaveImageEx2(stConvertParam)
+        if ret != 0:
+            print(f"鍥惧儚杞崲澶辫触! 閿欒鐮�: {hex(ret)}")
+            return False
+        
+        try:
+            with open(filename, "wb") as f:
+                f.write(bytearray(pBuf[0:stConvertParam.nImageLen]))
+            print(f"鉁� 鍥惧儚宸蹭繚瀛�: {filename}")
+            return True
+        except Exception as e:
+            print(f"淇濆瓨鏂囦欢澶辫触: {e}")
+            return False
+    
+    def close_camera(self):
+        """鍏抽棴鐩告満"""
+        if self.cam:
+            self.cam.MV_CC_CloseDevice()
+            self.cam.MV_CC_DestroyHandle()
+            self.cam = None
+            print("鐩告満宸插叧闂�")
+    
+    def finalize(self):
+        """娓呯悊SDK璧勬簮"""
+        self.close_camera()
+        if self.is_initialized:
+            MvCamera.MV_CC_Finalize()
+            self.is_initialized = False
+            print("SDK宸叉竻鐞�")
+    
+    def __enter__(self):
+        """鏀寔with璇彞"""
+        self.initialize()
+        return self
+    
+    def __exit__(self, exc_type, exc_val, exc_tb):
+        """鏀寔with璇彞"""
+        self.finalize()
+
+
+# 浣跨敤绀轰緥
+if __name__ == "__main__":
+    try:
+        with HikCameraManager() as manager:
+            # 1. 鍒楀嚭鎵�鏈夌浉鏈�
+            manager.print_cameras()
+            
+            # 2. 閫夋嫨鐩告満鐨勫嚑绉嶆柟寮忥細
+            
+            # 鏂瑰紡1: 閫氳繃绱㈠紩閫夋嫨锛堥粯璁ょ涓�涓級
+            # manager.open_camera(index=0)
+            
+            # 鏂瑰紡2: 閫氳繃搴忓垪鍙烽�夋嫨
+            # manager.open_camera(serial="DA7598570")
+            
+            # 鏂瑰紡3: 閫氳繃IP鍦板潃閫夋嫨锛圙igE鐩告満锛�
+            manager.open_camera(ip="192.168.4.22")
+            
+            # 鏂瑰紡4: 閫氳繃鍨嬪彿閫夋嫨
+            # manager.open_camera(model="MV-CS200")
+            
+            # 3. 閲囬泦鍥惧儚
+            saved_files = manager.capture_image("test")
+            print(f"\n淇濆瓨鐨勬枃浠�: {saved_files}")
+            
+    except Exception as e:
+        print(f"閿欒: {e}")
+        import traceback
+        traceback.print_exc()
diff --git a/requirements.txt b/requirements.txt
new file mode 100644
index 0000000..7f5774f
--- /dev/null
+++ b/requirements.txt
@@ -0,0 +1,5 @@
+fastapi==0.104.1
+uvicorn==0.24.0
+pydantic==2.5.0
+requests==2.31.0
+numpy==1.24.3

--
Gitblit v1.9.1