|
|
#!/usr/bin/python
|
|
|
# -*-mode:python ; tab-width:4 -*- ex:set tabstop=4 shiftwidth=4 expandtab: -*-
|
|
|
# -*- coding:utf-8 -*-
|
|
|
|
|
|
from ctypes import *
|
|
|
import ctypes
|
|
|
import sys
|
|
|
import os
|
|
|
|
|
|
NODE_FEATURE_RESERVED_16 = 16
|
|
|
|
|
|
if sys.platform == 'linux2' or sys.platform == 'linux':
|
|
|
try:
|
|
|
dll = CDLL('/usr/lib/libgxiapi.so')
|
|
|
except OSError:
|
|
|
print("Cannot find libgxiapi.so.")
|
|
|
else:
|
|
|
try:
|
|
|
env_dist = os.environ
|
|
|
GeniCam_AddPath32 = str(env_dist["GALAXY_GENICAM_ROOT"]) + r"\bin\Win32_i86"
|
|
|
GeniCam_AddPath64 = str(env_dist["GALAXY_GENICAM_ROOT"]) + r"\bin\Win64_x64"
|
|
|
GxiApi_AddPath32 = str(env_dist["GALAXY_GENICAM_ROOT"]).split("GenICam")[0] + r"\APIDll\Win32"
|
|
|
GxiApi_AddPath64 = str(env_dist["GALAXY_GENICAM_ROOT"]).split("GenICam")[0] + r"\APIDll\Win64"
|
|
|
|
|
|
if (sys.version_info.major == 3 and sys.version_info.minor >= 8) or (sys.version_info.major > 3):
|
|
|
os.add_dll_directory(GeniCam_AddPath32)
|
|
|
os.add_dll_directory(GeniCam_AddPath64)
|
|
|
os.add_dll_directory(GxiApi_AddPath32)
|
|
|
os.add_dll_directory(GxiApi_AddPath64)
|
|
|
|
|
|
dll = WinDLL('GxIAPI.dll', winmode=0)
|
|
|
else:
|
|
|
dll = WinDLL('GxIAPI.dll')
|
|
|
except OSError:
|
|
|
print('Cannot find GxIAPI.dll.')
|
|
|
|
|
|
|
|
|
# Error code
|
|
|
class GxStatusList:
|
|
|
SUCCESS = 0 # Success
|
|
|
ERROR = -1 # There is a unspecified internal error that is not expected to occur
|
|
|
NOT_FOUND_TL = -2 # The TL library cannot be found
|
|
|
NOT_FOUND_DEVICE = -3 # The device is not found
|
|
|
OFFLINE = -4 # The current device is in a offline state
|
|
|
INVALID_PARAMETER = -5 # Invalid parameter, Generally the pointer is NULL or the input IP and
|
|
|
# Other parameter formats are invalid
|
|
|
INVALID_HANDLE = -6 # Invalid handle
|
|
|
INVALID_CALL = -7 # The interface is invalid, which refers to software interface logic error
|
|
|
INVALID_ACCESS = -8 # The function is currently inaccessible or the device access mode is incorrect
|
|
|
NEED_MORE_BUFFER = -9 # The user request buffer is insufficient: the user input buffersize during
|
|
|
# the read operation is less than the actual need
|
|
|
ERROR_TYPE = -10 # The type of FeatureID used by the user is incorrect,
|
|
|
# such as an integer interface using a floating-point function code
|
|
|
OUT_OF_RANGE = -11 # The value written by the user is crossed
|
|
|
NOT_IMPLEMENTED = -12 # This function is not currently supported
|
|
|
NOT_INIT_API = -13 # There is no call to initialize the interface
|
|
|
TIMEOUT = -14 # Timeout error
|
|
|
REPEAT_OPENED = -1004 # The device has been opened
|
|
|
|
|
|
def __init__(self):
|
|
|
pass
|
|
|
|
|
|
#Interface CXP type info
|
|
|
class GXCxpInterfaceInfo(Structure):
|
|
|
_fields_ = [
|
|
|
('interface_id', c_char*64), # Interface ID
|
|
|
('display_name', c_char*64), # Display Name
|
|
|
('serial_number', c_char*64), # Serial Number
|
|
|
('init_flag', c_uint), # Init Flag
|
|
|
('PCIE_info', c_uint), # PCIE Info
|
|
|
('reserved', c_uint*64), # Reserved
|
|
|
]
|
|
|
def __str__(self):
|
|
|
return "GXCxpInterfaceInfo\n%s" % "\n".join("%s:\t%s" % (n, getattr(self, n[0])) for n in self._fields_)
|
|
|
|
|
|
#Interface GEV type info
|
|
|
class GXGevInterfaceInfo(Structure):
|
|
|
_fields_ = [
|
|
|
('interface_id', c_char * 64), # Interface ID
|
|
|
('display_name', c_char * 64), # Display Name
|
|
|
('serial_number', c_char * 64), # Serial Number
|
|
|
('description', c_char * 256), # Description
|
|
|
('reserved', c_uint*64), # Reserved
|
|
|
]
|
|
|
def __str__(self):
|
|
|
return "GXGevInterfaceInfo\n%s" % "\n".join("%s:\t%s" % (n, getattr(self, n[0])) for n in self._fields_)
|
|
|
|
|
|
#Interface U3V type info
|
|
|
class GXU3vInterfaceInfo(Structure):
|
|
|
_fields_ = [
|
|
|
('interface_id', c_char*64), # Interface ID
|
|
|
('display_name', c_char*64), # Display Name
|
|
|
('serial_number', c_char*64), # Serial Number
|
|
|
('description', c_char*256), # Description
|
|
|
('reserved', c_uint*64), # Reserved
|
|
|
]
|
|
|
def __str__(self):
|
|
|
return "GXU3vInterfaceInfo\n%s" % "\n".join("%s:\t%s" % (n, getattr(self, n[0])) for n in self._fields_)
|
|
|
|
|
|
#Interface USB type info
|
|
|
class GXUsbInterfaceInfo(Structure):
|
|
|
_fields_ = [
|
|
|
('interface_id', c_char * 64), # Interface ID
|
|
|
('display_name', c_char * 64), # Display Name
|
|
|
('serial_number', c_char * 64), # Serial Number
|
|
|
('description', c_char * 256), # Description
|
|
|
('reserved', c_uint*64), # Reserved
|
|
|
]
|
|
|
def __str__(self):
|
|
|
return "GXUsbInterfaceInfo\n%s" % "\n".join("%s:\t%s" % (n, getattr(self, n[0])) for n in self._fields_)
|
|
|
|
|
|
# Interface Special info
|
|
|
class GXInterfacSpecialInfo(Union):
|
|
|
_fields_ = [
|
|
|
("CXP_interface_info", GXCxpInterfaceInfo), # CXP Type
|
|
|
("GEV_interface_info", GXGevInterfaceInfo), # Gev Type
|
|
|
("U3V_interface_info", GXU3vInterfaceInfo), # U3V Type
|
|
|
("USB_interface_info", GXUsbInterfaceInfo), # USB Type
|
|
|
("reserved", c_uint*64), # Reserved
|
|
|
]
|
|
|
def __str__(self):
|
|
|
return "_GXInterfacSpecialInfo_\n%s" % "\n".join("%s:\t%s" % (n, getattr(self, n[0])) for n in self._fields_)
|
|
|
|
|
|
# Interface info
|
|
|
class GXInterfaceInfo(Structure):
|
|
|
_fields_ = [
|
|
|
('TLayer_type', c_int), # TLayer Type
|
|
|
('reserved', c_int*4), # Reserved
|
|
|
('IF_info', GXInterfacSpecialInfo),
|
|
|
]
|
|
|
def __str__(self):
|
|
|
return "GXInterfaceInfo\n%s" % "\n".join("%s:\t%s" % (n, getattr(self, n[0])) for n in self._fields_)
|
|
|
|
|
|
class GxRegisterStackEntry(Structure):
|
|
|
_fields_ = [
|
|
|
('address' , c_ulonglong), # Address of the register
|
|
|
('buffer' , c_void_p), # Pointer to the buffer containing the data
|
|
|
('size' , c_uint), # Number of bytes to read
|
|
|
]
|
|
|
|
|
|
def __str__(self):
|
|
|
return "GxRegisterStackEntry\n%s" % "\n".join("%s:\t%s" % (n, getattr(self, n[0])) for n in self._fields_)
|
|
|
|
|
|
class GxOpenMode:
|
|
|
SN = 0 # Opens the device via a serial number
|
|
|
IP = 1 # Opens the device via an IP address
|
|
|
MAC = 2 # Opens the device via a MAC address
|
|
|
INDEX = 3 # Opens the device via a serial number(Start from 1)
|
|
|
USER_ID = 4 # Opens the device via user defined ID
|
|
|
|
|
|
def __init__(self):
|
|
|
pass
|
|
|
|
|
|
|
|
|
class GxFrameMask:
|
|
|
TYPE_MASK = 0xF0000000
|
|
|
LEVEL_MASK = 0x0F000000
|
|
|
|
|
|
def __init__(self):
|
|
|
pass
|
|
|
|
|
|
|
|
|
class GxNodeAccessMode:
|
|
|
MODE_NI = 0 # Not implemented
|
|
|
MODE_NA = 1 # Not read and write
|
|
|
MODE_WO = 2 # Only write
|
|
|
MODE_RO = 3 # Only read
|
|
|
MODE_RW = 4 # Read and Write
|
|
|
MODE_UNDEF = 5 # Unknown
|
|
|
|
|
|
|
|
|
class GxFeatureType:
|
|
|
INT = 0x10000000 # Integer type
|
|
|
FLOAT = 0X20000000 # Floating point type
|
|
|
ENUM = 0x30000000 # Enum type
|
|
|
BOOL = 0x40000000 # Boolean type
|
|
|
STRING = 0x50000000 # String type
|
|
|
BUFFER = 0x60000000 # Block data type
|
|
|
COMMAND = 0x70000000 # Command type
|
|
|
|
|
|
def __init__(self):
|
|
|
pass
|
|
|
|
|
|
|
|
|
class GxFeatureLevel:
|
|
|
REMOTE_DEV = 0x00000000 # RemoteDevice Layer
|
|
|
TL = 0x01000000 # TL Layer
|
|
|
IF = 0x02000000 # Interface Layer
|
|
|
DEV = 0x03000000 # Device Layer
|
|
|
DS = 0x04000000 # DataStream Layer
|
|
|
|
|
|
def __init__(self):
|
|
|
pass
|
|
|
|
|
|
|
|
|
class GxFeatureID:
|
|
|
# ---------------Device Information Section---------------------------
|
|
|
STRING_DEVICE_VENDOR_NAME = 0x50000000 # The name of the device's vendor
|
|
|
STRING_DEVICE_MODEL_NAME = 0x50000001 # The model name of the device
|
|
|
STRING_DEVICE_FIRMWARE_VERSION = 0x50000002 # The version of the device's firmware and software
|
|
|
STRING_DEVICE_VERSION = 0x50000003 # The version of the device
|
|
|
STRING_DEVICE_SERIAL_NUMBER = 0x50000004 # A serial number for device
|
|
|
STRING_FACTORY_SETTING_VERSION = 0x50000006 # The version of the device's Factory Setting
|
|
|
STRING_DEVICE_USER_ID = 0x50000007 # A user programmable string
|
|
|
INT_DEVICE_LINK_SELECTOR = 0x10000008 # Selects which Link of the device to control
|
|
|
ENUM_DEVICE_LINK_THROUGHPUT_LIMIT_MODE = 0x30000009 # DeviceLinkThroughputLimit switch
|
|
|
INT_DEVICE_LINK_THROUGHPUT_LIMIT = 0x1000000a # Limits the maximum bandwidth of the data
|
|
|
INT_DEVICE_LINK_CURRENT_THROUGHPUT = 0x1000000b # Current bandwidth of the data
|
|
|
COMMAND_DEVICE_RESET = 0x7000000c # Device reset
|
|
|
INT_TIMESTAMP_TICK_FREQUENCY = 0x1000000d # Timestamp tick frequency
|
|
|
COMMAND_TIMESTAMP_LATCH = 0x7000000e # Timestamp latch
|
|
|
COMMAND_TIMESTAMP_RESET = 0x7000000f # Timestamp reset
|
|
|
COMMAND_TIMESTAMP_LATCH_RESET = 0x70000010 # Timestamp latch reset
|
|
|
INT_TIMESTAMP_LATCH_VALUE = 0x10000011 # The value of timestamp latch
|
|
|
STRING_DEVICE_PHY_VERSION = 0x50000012 # Device network chip version
|
|
|
ENUM_DEVICE_TEMPERATURE_SELECTOR = 0x30000013 # Device temperature selection, reference GxDeviceTemperatureSelectorEntry
|
|
|
FLOAT_DEVICE_TEMPERATURE = 0x20000014 # Device temperature
|
|
|
STRING_DEVICE_ISP_FIRMWARE_VERSION = 0x50000015 # The version of device's ISP firmware
|
|
|
ENUM_LOWPOWER_MODE = 0x30000016 # Low power consumption mode,refer
|
|
|
ENUM_CLOSE_CCD = 0x30000017 # Close CCD
|
|
|
STRING_PRODUCTION_CODE = 0x50000018 # Production code
|
|
|
STRING_DEVICE_ORIGINAL_NAME = 0x50000019 # Original name
|
|
|
INT_REVISION = 0x1000001a # CXP protocol version
|
|
|
INT_VERSIONS_SUPPORTED = 0x1000001b # Supported CXP protocol versions
|
|
|
INT_VERSION_USED = 0x1000001c # Use version
|
|
|
BOOL_TEC_ENABLE = 0x4000001d # TEC switch
|
|
|
FLOAT_TEC_TARGET_TEMPERATURE = 0x2000001e # TEC target temperature
|
|
|
BOOL_FAN_ENABLE = 0x4000001f # Fan switch
|
|
|
INT_TEMPERATURE_DETECTION_STATUS = 0x10000020 # Temperature state detection
|
|
|
INT_FAN_SPEED = 0x10000021 # Fan speed
|
|
|
FLOAT_DEVICE_HUMIDITY = 0x10000022 # Equipment humidity
|
|
|
FLOAT_DEVICE_PRESSURE = 0x10000023 # Equipment air pressure
|
|
|
INT_AIR_CHANGE_DETECTION_STATUS = 0x10000024 # Ventilation status detection
|
|
|
INT_AIR_TIGHTNESS_DETECTION_STATUS = 0x10000025 # Airtightness state detection
|
|
|
ENUM_DEVICE_SCAN_TYPE = 0x30000026 # Device scanning mode
|
|
|
|
|
|
# ---------------ImageFormat Section----------------------------------
|
|
|
INT_SENSOR_WIDTH = 0x100003e8 # The actual width of the camera's sensor in pixels
|
|
|
INT_SENSOR_HEIGHT = 0x100003e9 # The actual height of the camera's sensor in pixels
|
|
|
INT_WIDTH_MAX = 0x100003ea # Width max[read_only]
|
|
|
INT_HEIGHT_MAX = 0x100003eb # Height max[read_only]
|
|
|
INT_OFFSET_X = 0x100003ec # The X offset for the area of interest
|
|
|
INT_OFFSET_Y = 0x100003ed # The Y offset for the area of interest
|
|
|
INT_WIDTH = 0x100003ee # the width of the area of interest in pixels
|
|
|
INT_HEIGHT = 0x100003ef # the height of the area of interest in pixels
|
|
|
INT_BINNING_HORIZONTAL = 0x100003f0 # Horizontal pixel Binning
|
|
|
INT_BINNING_VERTICAL = 0x100003f1 # Vertical pixel Binning
|
|
|
INT_DECIMATION_HORIZONTAL = 0x100003f2 # Horizontal pixel sampling
|
|
|
INT_DECIMATION_VERTICAL = 0x100003f3 # Vertical pixel sampling
|
|
|
ENUM_PIXEL_SIZE = 0x300003f4 # Pixel depth, Reference GxPixelSizeEntry
|
|
|
ENUM_PIXEL_COLOR_FILTER = 0x300003f5 # Bayer format, Reference GxPixelColorFilterEntry
|
|
|
ENUM_PIXEL_FORMAT = 0x300003f6 # Pixel format, Reference GxPixelFormatEntry
|
|
|
BOOL_REVERSE_X = 0x400003f7 # Horizontal flipping
|
|
|
BOOL_REVERSE_Y = 0x400003f8 # Vertical flipping
|
|
|
ENUM_TEST_PATTERN = 0x300003f9 # Test pattern, Reference GxTestPatternEntry
|
|
|
ENUM_TEST_PATTERN_GENERATOR_SELECTOR = 0x300003fa # The source of test pattern, reference GxTestPatternGeneratorSelectorEntry
|
|
|
ENUM_REGION_SEND_MODE = 0x300003fb # ROI region output mode, reference GxRegionSendModeEntry
|
|
|
ENUM_REGION_MODE = 0x300003fc # ROI region output switch
|
|
|
ENUM_REGION_SELECTOR = 0x300003fd # ROI region select, reference GxRegionSelectorEntry
|
|
|
INT_CENTER_WIDTH = 0x100003fe # Window width
|
|
|
INT_CENTER_HEIGHT = 0x100003ff # Window height
|
|
|
ENUM_BINNING_HORIZONTAL_MODE = 0x30000400 # Binning horizontal mode, reference GxBinningHorizontalModeEntry
|
|
|
ENUM_BINNING_VERTICAL_MODE = 0x30000401 # Binning vertical mode, reference GxBinningVerticalModeEntry
|
|
|
ENUM_SENSOR_SHUTTER_MODE = 0x30000402 # Sensor shutter mode, reference GxSensorShutterModeEntry
|
|
|
INT_DECIMATION_LINENUMBER = 0x10000403 # The line number of decimation
|
|
|
INT_SENSOR_DECIMATION_HORIZONTAL = 0x10000404 # Sensor Horizontal pixel sampling
|
|
|
INT_SENSOR_DECIMATION_VERTICAL = 0x10000405 # Sensor Vertical pixel sampling
|
|
|
ENUM_SENSOR_SELECTOR = 0x30000406 # selector current sonsor
|
|
|
INT_CURRENT_SENSOR_WIDTH = 0x10000407 # current sonsor width
|
|
|
INT_CURRENT_SENSOR_HEIGHT = 0x10000408 # current sonsor height
|
|
|
INT_CURRENT_SENSOR_OFFSETX = 0x10000409 # current sonsor offset X
|
|
|
INT_CURRENT_SENSOR_OFFSETY = 0x1000040a # current sonsor offset Y
|
|
|
INT_CURRENT_SENSOR_WIDTHMAX = 0x1000040b # current sonsor width max
|
|
|
INT_CURRENT_SENSOR_HEIGHTMAX = 0x1000040c # current sonsor height max
|
|
|
ENUM_SENSOR_BIT_DEPTH = 0x3000040d # Sensor Bit Depth
|
|
|
BOOL_WATERMARK_ENABLE = 0x4000040e # Watermark
|
|
|
|
|
|
# ---------------TransportLayer Section-------------------------------
|
|
|
INT_PAYLOAD_SIZE = 0x100007d0 # Size of images in byte
|
|
|
BOOL_GEV_CURRENT_IP_CONFIGURATION_LLA = 0x400007d1 # (Only GEVDevice)IP configuration by LLA.
|
|
|
BOOL_GEV_CURRENT_IP_CONFIGURATION_DHCP = 0x400007d2 # (Only GEVDevice)IP configuration by DHCP
|
|
|
BOOL_GEV_CURRENT_IP_CONFIGURATION_PERSISTENT_IP = 0x400007d3 # (Only GEVDevice)IP configuration by PersistentIP
|
|
|
INT_ESTIMATED_BANDWIDTH = 0x100007d4 # (Only GEVDevice)Estimated Bandwidth in Bps
|
|
|
INT_GEV_HEARTBEAT_TIMEOUT = 0x100007d5 # (Only GEVDevice)The heartbeat timeout in milliseconds
|
|
|
INT_GEV_PACKET_SIZE = 0x100007d6 # (Only GEVDevice)The packet size in bytes for each packet
|
|
|
INT_GEV_PACKET_DELAY = 0x100007d7 # (Only GEVDevice)A delay between the transmission of each packet
|
|
|
INT_GEV_LINK_SPEED = 0x100007d8 # (Only GEVDevice)The connection speed in Mbps
|
|
|
ENUM_DEVICE_TAP_GEOMETRY = 0x300007d9 # Equipment geometry
|
|
|
|
|
|
# ---------------AcquisitionTrigger Section---------------------------
|
|
|
ENUM_ACQUISITION_MODE = 0x30000bb8 # The mode of acquisition, reference GxAcquisitionModeEntry
|
|
|
COMMAND_ACQUISITION_START = 0x70000bb9 # The command for starts the acquisition of images
|
|
|
COMMAND_ACQUISITION_STOP = 0x70000bba # The command for stop the acquisition of images
|
|
|
INT_ACQUISITION_SPEED_LEVEL = 0x10000bbb # (Only U2Device)The level for acquisition speed
|
|
|
INT_ACQUISITION_FRAME_COUNT = 0x10000bbc # (Only U2Device)Number of frames to acquire in MultiFrame Acquisition mode.
|
|
|
ENUM_TRIGGER_MODE = 0x30000bbd # Trigger mode switch
|
|
|
COMMAND_TRIGGER_SOFTWARE = 0x70000bbe # The command for generates a software trigger signal
|
|
|
ENUM_TRIGGER_ACTIVATION = 0x30000bbf # Trigger polarity, Reference GxTriggerActivationEntry
|
|
|
ENUM_TRIGGER_SWITCH = 0x30000bc0 # (Only U2Device)The switch of External trigger
|
|
|
FLOAT_EXPOSURE_TIME = 0x20000bc1 # Exposure time
|
|
|
ENUM_EXPOSURE_AUTO = 0x30000bc2 # Exposure auto
|
|
|
FLOAT_TRIGGER_FILTER_RAISING = 0x20000bc3 # The Value of rising edge triggered filter
|
|
|
FLOAT_TRIGGER_FILTER_FALLING = 0x20000bc4 # The Value of falling edge triggered filter
|
|
|
ENUM_TRIGGER_SOURCE = 0x30000bc5 # Trigger source, Reference GxTriggerSourceEntry
|
|
|
ENUM_EXPOSURE_MODE = 0x30000bc6 # Exposure mode, Reference GxExposureModeEntry
|
|
|
ENUM_TRIGGER_SELECTOR = 0x30000bc7 # Trigger type, Reference GxTriggerSelectorEntry
|
|
|
FLOAT_TRIGGER_DELAY = 0x20000bc8 # The trigger delay in microsecond
|
|
|
ENUM_TRANSFER_CONTROL_MODE = 0x30000bc9 # The control method for the transfers, Reference GxTransferControlModeEntry
|
|
|
ENUM_TRANSFER_OPERATION_MODE = 0x30000bca # The operation method for the transfers, Reference GxTransferOperationModeEntry
|
|
|
COMMAND_TRANSFER_START = 0x70000bcb # Starts the streaming of data blocks out of the device
|
|
|
INT_TRANSFER_BLOCK_COUNT = 0x10000bcc # The number of data Blocks that the device should stream before stopping
|
|
|
BOOL_FRAMESTORE_COVER_ACTIVE = 0x40000bcd # The switch for frame cover
|
|
|
ENUM_ACQUISITION_FRAME_RATE_MODE = 0x30000bce # The switch for Control frame rate
|
|
|
FLOAT_ACQUISITION_FRAME_RATE = 0x20000bcf # The value for Control frame rate
|
|
|
FLOAT_CURRENT_ACQUISITION_FRAME_RATE = 0x20000bd0 # The maximum allowed frame acquisition rate
|
|
|
ENUM_FIXED_PATTERN_NOISE_CORRECT_MODE = 0x30000bd1 # The switch of fixed pattern noise correct
|
|
|
INT_ACQUISITION_BURST_FRAME_COUNT = 0x10000bd6 # The acquisition burst frame count
|
|
|
ENUM_ACQUISITION_STATUS_SELECTOR = 0x30000bd7 # The selector of acquisition status, reference GxAcquisitionStatusSelectorEntry
|
|
|
BOOL_ACQUISITION_STATUS = 0x40000bd8 # The acquisition status
|
|
|
FLOAT_EXPOSURE_DELAY = 0x2000765c # The exposure delay
|
|
|
FLOAT_EXPOSURE_OVERLAP_TIME_MAX = 0x2000765d # Maximum overlap exposure time
|
|
|
ENUM_EXPOSURE_TIME_MODE = 0x3000765e # Exposure time mode, reference GxExposureTimeModeEntry
|
|
|
INT_FRAME_BUFFER_COUNT = 0x10004651 # Frame memory depth
|
|
|
COMMAND_FRAME_BUFFER_FLUSH = 0x70004652 # Empty the frame save
|
|
|
ENUM_ACQUISITION_BURST_MODE = 0x3000765F # Burst acquisition mode
|
|
|
ENUM_OVERLAP_MODE = 0x30007660 # overlap mode
|
|
|
ENUM_MULTISOURCE_SELECTOR = 0x30007661 # MultiSourceSelector
|
|
|
BOOL_MULTISOURCE_ENABLE = 0x40007662 # MultiSource Trigger Enable
|
|
|
BOOL_TRIGGER_CACHE_ENABLE = 0x40007663 # Trigger Cache Enable
|
|
|
|
|
|
# ----------------DigitalIO Section-----------------------------------
|
|
|
ENUM_USER_OUTPUT_SELECTOR = 0x30000fa0 # selects user settable output signal, Reference GxUserOutputSelectorEntry
|
|
|
BOOL_USER_OUTPUT_VALUE = 0x40000fa1 # The state of the output signal
|
|
|
ENUM_USER_OUTPUT_MODE = 0x30000fa2 # (Only U2Device)UserIO output mode, Reference GxUserOutputModeEntry
|
|
|
ENUM_STROBE_SWITCH = 0x30000fa3 # (Only U2Device)Strobe switch
|
|
|
ENUM_LINE_SELECTOR = 0x30000fa4 # Line selector, Reference GxLineSelectorEntry
|
|
|
ENUM_LINE_MODE = 0x30000fa5 # Line mode, Reference GxLineModeEntry
|
|
|
BOOL_LINE_INVERTER = 0x40000fa6 # Pin level reversal
|
|
|
ENUM_LINE_SOURCE = 0x30000fa7 # line source, Reference GxLineSourceEntry
|
|
|
BOOL_LINE_STATUS = 0x40000fa8 # line status
|
|
|
INT_LINE_STATUS_ALL = 0x10000fa9 # all line status
|
|
|
FLOAT_PULSE_WIDTH = 0x20000faa # IO pulse width
|
|
|
INT_LINE_RANGE = 0x10000fab # flash line ragne
|
|
|
INT_LINE_DELAY = 0x10000fac # flash line delay
|
|
|
INT_LINE_FILTER_RAISING_EDGE = 0x10000fad # Pin rising edge filtering
|
|
|
INT_LINE_FILTER_FALLING_EDGE = 0x10000fae # Pin falling edge filtering
|
|
|
|
|
|
# ----------------AnalogControls Section------------------------------
|
|
|
ENUM_GAIN_AUTO = 0x30001388 # gain auto, Reference GxAutoEntry
|
|
|
ENUM_GAIN_SELECTOR = 0x30001389 # selects gain channel, Reference GxGainSelectorEntry
|
|
|
ENUM_BLACK_LEVEL_AUTO = 0x3000138b # Black level auto, Reference GxAutoEntry
|
|
|
ENUM_BLACK_LEVEL_SELECTOR = 0x3000138c # Black level channel, Reference GxBlackLevelSelectEntry
|
|
|
ENUM_BALANCE_WHITE_AUTO = 0x3000138e # Balance white auto, Reference GxAutoEntry
|
|
|
ENUM_BALANCE_RATIO_SELECTOR = 0x3000138f # selects Balance white channel, Reference GxBalanceRatioSelectorEntry
|
|
|
FLOAT_BALANCE_RATIO = 0x20001390 # Balance white channel ratio
|
|
|
ENUM_COLOR_CORRECT = 0x30001391 # Color correct switch
|
|
|
ENUM_DEAD_PIXEL_CORRECT = 0x30001392 # Pixel correct switch
|
|
|
FLOAT_GAIN = 0x20001393 # gain value
|
|
|
FLOAT_BLACK_LEVEL = 0x20001394 # Black level value
|
|
|
BOOL_GAMMA_ENABLE = 0x40001395 # Gamma enable bit
|
|
|
ENUM_GAMMA_MODE = 0x30001396 # Gamma mode, reference GxGammaModeEntry
|
|
|
FLOAT_GAMMA = 0x20001397 # The value of Gamma
|
|
|
INT_DIGITAL_SHIFT = 0x10001398 # bit select
|
|
|
ENUM_LIGHT_SOURCE_PRESET = 0x30001399 # Light source preset, Reference GxLightSourcePresetEntry
|
|
|
BOOL_BLACKLEVEL_CALIB_STATUS = 0x4000139a # BlackLevelCalibStatus
|
|
|
INT_BLACKLEVEL_CALIB_VALUE = 0x1000139b # BlackLevelCalibValue
|
|
|
FLOAT_PGA_GAIN = 0x2000139c # PGAGain
|
|
|
|
|
|
# ---------------CustomFeature Section--------------------------------
|
|
|
INT_ADC_LEVEL = 0x10001770 # (Only U2Device)AD conversion level
|
|
|
INT_H_BLANKING = 0x10001771 # (Only U2Device)Horizontal blanking
|
|
|
INT_V_BLANKING = 0x10001772 # (Only U2Device)Vertical blanking
|
|
|
STRING_USER_PASSWORD = 0x50001773 # (Only U2Device)User encrypted zone cipher
|
|
|
STRING_VERIFY_PASSWORD = 0x50001774 # (Only U2Device)User encrypted zone check cipher
|
|
|
BUFFER_USER_DATA = 0x60001775 # (Only U2Device)User encrypted area content
|
|
|
INT_GRAY_VALUE = 0x10001776 # Expected gray value
|
|
|
ENUM_AA_LIGHT_ENVIRONMENT = 0x30001777 # (Only U2Device)Gain auto, Exposure auto, Light environment type,
|
|
|
# Reference GxAALightEnvironmentEntry
|
|
|
INT_AAROI_OFFSETX = 0x10001778 # The X offset for the rect of interest in pixels for 2A
|
|
|
INT_AAROI_OFFSETY = 0x10001779 # The Y offset for the rect of interest in pixels for 2A
|
|
|
INT_AAROI_WIDTH = 0x1000177a # The width offset for the rect of interest in pixels for 2A
|
|
|
INT_AAROI_HEIGHT = 0x1000177b # The height offset for the rect of interest in pixels for 2A
|
|
|
FLOAT_AUTO_GAIN_MIN = 0x2000177c # Automatic gain minimum
|
|
|
FLOAT_AUTO_GAIN_MAX = 0x2000177d # Automatic gain maximum
|
|
|
FLOAT_AUTO_EXPOSURE_TIME_MIN = 0x2000177e # Automatic exposure minimum
|
|
|
FLOAT_AUTO_EXPOSURE_TIME_MAX = 0x2000177f # Automatic exposure maximum
|
|
|
BUFFER_FRAME_INFORMATION = 0x60001780 # (Only U2Device)Image frame information
|
|
|
INT_CONTRAST_PARAM = 0x10001781 # Contrast parameter
|
|
|
FLOAT_GAMMA_PARAM = 0x20001782 # Gamma parameter
|
|
|
INT_COLOR_CORRECTION_PARAM = 0x10001783 # Color correction param
|
|
|
ENUM_IMAGE_GRAY_RAISE_SWITCH = 0x30001784 # (Only U2Device)Image gray raise switch
|
|
|
ENUM_AWB_LAMP_HOUSE = 0x30001785 # Automatic white balance light source
|
|
|
# Reference GxAWBLampHouseEntry
|
|
|
INT_AWBROI_OFFSETX = 0x10001786 # Offset_X of automatic white balance region
|
|
|
INT_AWBROI_OFFSETY = 0x10001787 # Offset_Y of automatic white balance region
|
|
|
INT_AWBROI_WIDTH = 0x10001788 # Width of automatic white balance region
|
|
|
INT_AWBROI_HEIGHT = 0x10001789 # Height of automatic white balance region
|
|
|
ENUM_SHARPNESS_MODE = 0x3000178a # Sharpness switch
|
|
|
FLOAT_SHARPNESS = 0x2000178b # Sharpness value
|
|
|
ENUM_USER_DATA_FIELD_SELECTOR = 0x3000178c # User selects the flash data field
|
|
|
# Reference GxUserDataFieldSelectorEntry for area selection
|
|
|
BUFFER_USER_DATA_FIELD_VALUE = 0x6000178d # User data field content
|
|
|
ENUM_FLAT_FIELD_CORRECTION = 0x3000178e # Flat field correction switch
|
|
|
ENUM_NOISE_REDUCTION_MODE = 0x3000178f # Noise reduction switch
|
|
|
FLOAT_NOISE_REDUCTION = 0x20001790 # Noise reduction value
|
|
|
BUFFER_FFCLOAD = 0x60001791 # Get flat field correction parameters
|
|
|
BUFFER_FFCSAVE = 0x60001792 # Set flat field correction parameters
|
|
|
ENUM_STATIC_DEFECT_CORRECTION = 0x30001793 # Static dead pixel correction switch
|
|
|
|
|
|
ENUM_2D_NOISE_REDUCTION_MODE = 0x30001794 # 2d noise reduction mode
|
|
|
ENUM_3D_NOISE_REDUCTION_MODE = 0x30001795 # 3d noise reduction mode
|
|
|
COMMAND_CLOSE_ISP = 0x70001796 # Close ISP
|
|
|
BUFFER_STATIC_DEFECT_CORRECTION_VALUE_ALL = 0x60001797 # static defect conrrection value
|
|
|
BUFFER_STATIC_DEFECT_CORRECTION_FLASH_VALUE = 0x60001798 # static defect conrrection flash value
|
|
|
INT_STATIC_DEFECT_CORRECTION_FINISH = 0x10001799 # static defect conrrection finish
|
|
|
BUFFER_STATIC_DEFECT_CORRECTION_INFO = 0x6000179a # static defect conrrection Info
|
|
|
COMMAND_STRIP_CALIBRATION_START = 0x7000179b # Starts the strip calibration
|
|
|
COMMAND_STRIP_CALIBRATION_STOP = 0x7000179c # Ready to stop the strip calibration
|
|
|
BUFFER_USER_DATA_FILED_VALUE_ALL = 0x6000179d # Continuous user area content
|
|
|
ENUM_SHADING_CORRECTION_MODE = 0x3000179e
|
|
|
COMMAND_FFC_GENERATE = 0x7000179f # Generate flat field correction factor
|
|
|
ENUM_FFC_GENERATE_STATUS = 0x700017a0 # Level-field correction status
|
|
|
ENUM_FFC_EXPECTED_GRAY_VALUE_ENABLE = 0x700017a1 # Level-field correction expected gray value enable
|
|
|
INT_FFC_EXPECTED_GRAY = 0x100017a2 # Flat-field correction expected gray value
|
|
|
INT_FFC_COEFFICIENTS_SIZE = 0x100017a3 # Level-field correction factor size
|
|
|
BUFFER_FFC_VALUE_ALL = 0x600017a4 # Level-field correction value
|
|
|
ENUM_DSNU_SELECTOR = 0x700017a5 # Selection of dark field correction coefficient
|
|
|
COMMAND_DSNU_GENERATE = 0x700017a6 # Generate dark field correction factor
|
|
|
ENUM_DSNU_GENERATE_STATUS = 0x700017a7 # Dark field correction status
|
|
|
COMMAND_DSNU_SAVE = 0x700017a8 # Save dark-field correction factor
|
|
|
COMMAND_DSNU_LOAD = 0x700017a9 # Load dark-field correction factor
|
|
|
ENUM_PRNU_SELECTOR = 0x700017aa # Selection of bright field correction coefficient
|
|
|
COMMAND_PRNU_GENERATE = 0x700017ab # Generate bright field correction factor
|
|
|
ENUM_PRNU_GENERATE_STATUS = 0x700017ac # Bright-field correction status
|
|
|
COMMAND_PRNU_SAVE = 0x700017ad # Save the bright field correction factor
|
|
|
COMMAND_PRNU_LOAD = 0x700017ae # Loaded open field correction factor
|
|
|
BUFFER_DATA_FIELD_VALUE_ALL = 0x600017bf # Data field value
|
|
|
INT_STATIC_DEFECT_CORRECTION_CALIB_STATUS = 0x100017b0 # Static bad point calibration status
|
|
|
INT_FFC_FACTORY_STATUS = 0x100017b1 # Level-field correction status detection
|
|
|
INT_DSNU_FACTORY_STATUS = 0x100017b2 # Detection of dark-field correction state
|
|
|
INT_PRNU_FACTORY_STATUS = 0x100017b3 # Open field correction state detection
|
|
|
BUFFER_DETECT = 0x100017b4 # Buffer detection(CXP)
|
|
|
ENUM_FFC_COEFFICIENT = 0x700017b5 # Selection of flat field correction coefficient
|
|
|
BUFFER_FFCFLASH_LOAD = 0x700017b6 # Load the flat field correction coefficient
|
|
|
BUFFER_FFCFLASH_SAVE = 0x700017b7 # Save the flat field correction coefficient
|
|
|
|
|
|
# ---------------UserSetControl Section-------------------------------
|
|
|
ENUM_USER_SET_SELECTOR = 0x30001b58 # Parameter group selection, Reference GxUserSetEntry
|
|
|
COMMAND_USER_SET_LOAD = 0x70001b59 # Load parameter group
|
|
|
COMMAND_USER_SET_SAVE = 0x70001b5a # Save parameter group
|
|
|
ENUM_USER_SET_DEFAULT = 0x30001b5b # Startup parameter group, Reference GxUserSetEntry
|
|
|
INT_DATA_FIELD_VALUE_ALL_USED_STATUS = 0x10001b5c # Factory status of user data area
|
|
|
|
|
|
# ---------------Event Section----------------------------------------
|
|
|
ENUM_EVENT_SELECTOR = 0x30001f40 # Event source select, Reference GxEventSelectorEntry
|
|
|
ENUM_EVENT_NOTIFICATION = 0x30001f41 # Switch of the notification to the host application of the occurrence of the selected Event.
|
|
|
INT_EVENT_EXPOSURE_END = 0x10001f42 # Exposure end event
|
|
|
INT_EVENT_EXPOSURE_END_TIMESTAMP = 0x10001f43 # The timestamp of Exposure end event
|
|
|
INT_EVENT_EXPOSURE_END_FRAME_ID = 0x10001f44 # The frame id of Exposure end event
|
|
|
INT_EVENT_BLOCK_DISCARD = 0x10001f45 # Block discard event
|
|
|
INT_EVENT_BLOCK_DISCARD_TIMESTAMP = 0x10001f46 # The timestamp of Block discard event
|
|
|
INT_EVENT_OVERRUN = 0x10001f47 # Event queue overflow event
|
|
|
INT_EVENT_OVERRUN_TIMESTAMP = 0x10001f48 # The timestamp of event queue overflow event
|
|
|
INT_EVENT_FRAME_START_OVER_TRIGGER = 0x10001f49 # Trigger signal shield event
|
|
|
INT_EVENT_FRAME_START_OVER_TRIGGER_TIMESTAMP = 0x10001f4a # The timestamp of trigger signal shield event
|
|
|
INT_EVENT_BLOCK_NOT_EMPTY = 0x10001f4b # Frame memory not empty event
|
|
|
INT_EVENT_BLOCK_NOT_EMPTY_TIMESTAMP = 0x10001f4c # The timestamp of frame memory not empty event
|
|
|
INT_EVENT_INTERNAL_ERROR = 0x10001f4d # Internal erroneous event
|
|
|
INT_EVENT_INTERNAL_ERROR_TIMESTAMP = 0x10001f4e # The timestamp of internal erroneous event
|
|
|
INT_EVENT_FRAMEBURSTSTART_OVERTRIGGER = 0x10001f4f # Frame burst start overtrigger event ID
|
|
|
INT_EVENT_FRAMEBURSTSTART_OVERTRIGGER_FRAMEID = 0x10001f50 # Frame burst start overtrigger event frame ID
|
|
|
INT_EVENT_FRAMEBURSTSTART_OVERTRIGGER_TIMESTAMP = 0x10001f51 # Frame burst start overtrigger event timestamp
|
|
|
INT_EVENT_FRAMESTART_WAIT = 0x10001f52 # Frame start wait event ID
|
|
|
INT_EVENT_FRAMESTART_WAIT_TIMESTAMP = 0x10001f53 # Frame start wait event timestamp
|
|
|
INT_EVENT_FRAMEBURSTSTART_WAIT = 0x10001f54 # Frame burst start wait event ID
|
|
|
INT_EVENT_FRAMEBURSTSTART_WAIT_TIMESTAMP = 0x10001f55 # Frame burst start wait event timestamp
|
|
|
INT_EVENT_BLOCK_DISCARD_FRAMEID= 0x10001f56 # Data block discard event frame ID
|
|
|
INT_EVENT_FRAMESTART_OVERTRIGGER_FRAMEID = 0x10001f57 # Frame start wait overtrigger event frame ID
|
|
|
INT_EVENT_BLOCK_NOT_EMPTY_FRAMEID = 0x10001f58 # Data block not empty event frame ID
|
|
|
INT_EVENT_FRAMESTART_WAIT_FRAMEID = 0x10001f59 # Frame start wait event frame ID
|
|
|
INT_EVENT_FRAMEBURSTSTART_WAIT_FRAMEID = 0x10001f5a # Frame burst start wait event frame ID
|
|
|
ENUM_EVENT_SIMPLE_MODE = 0x30001f5b # event block ID enable
|
|
|
|
|
|
# ---------------LUT Section------------------------------------------
|
|
|
ENUM_LUT_SELECTOR = 0x30002328 # Select lut, Reference GxLutSelectorEntry
|
|
|
BUFFER_LUT_VALUE_ALL = 0x60002329 # Lut data
|
|
|
BOOL_LUT_ENABLE = 0x4000232a # Lut enable bit
|
|
|
INT_LUT_INDEX = 0x1000232b # Lut index
|
|
|
INT_LUT_VALUE = 0x1000232c # Lut value
|
|
|
INT_LUT_FACTORY_STATUS = 0x1000232d # Lookup table factory status
|
|
|
|
|
|
# ---------------ChunkData Section------------------------------------
|
|
|
BOOL_CHUNK_MODE_ACTIVE = 0x40002711 # Enable frame information
|
|
|
ENUM_CHUNK_SELECTOR = 0x30002712 # Select frame information channel, Reference GxChunkSelectorEntry
|
|
|
BOOL_CHUNK_ENABLE = 0x40002713 # Enable single frame information channel
|
|
|
|
|
|
# ---------------Color Transformation Control-------------------------
|
|
|
ENUM_COLOR_TRANSFORMATION_MODE = 0x30002af8 # Color transformation mode, Reference GxColorTransformationModeEntry
|
|
|
BOOL_COLOR_TRANSFORMATION_ENABLE = 0x40002af9 # Color transformation enable bit
|
|
|
ENUM_COLOR_TRANSFORMATION_VALUE_SELECTOR = 0x30002afa # The selector of color transformation value, Reference GxColorTransformationValueSelectorEntry
|
|
|
FLOAT_COLOR_TRANSFORMATION_VALUE = 0x20002afb # The value of color transformation
|
|
|
ENUM_SATURATION_MODE = 0x30002afc # Saturation switch
|
|
|
INT_SATURATION = 0x10002afd # Saturation value
|
|
|
|
|
|
# ---------------CounterAndTimerControl Section-----------------------
|
|
|
ENUM_TIMER_SELECTOR = 0x30002ee0 # Selects which Counter to configure, Refer to GxTimerSelectorEntry
|
|
|
FLOAT_TIMER_DURATION = 0x20002ee1 # Sets the duration (in microseconds) of the Timer pulse.
|
|
|
FLOAT_TIMER_DELAY = 0x20002ee2 # Sets the duration (in microseconds) of the delay to apply at the reception of a trigger before starting the Timer.
|
|
|
ENUM_TIMER_TRIGGER_SOURCE = 0x30002ee3 # Selects the source of the trigger to start the Timer, Refer to GxTimerTriggerSourceEntry
|
|
|
ENUM_COUNTER_SELECTOR = 0x30002ee4 # Selects which Counter to configure, Refer to GxCounterSelectorEntry
|
|
|
ENUM_COUNTER_EVENT_SOURCE = 0x30002ee5 # Select the events that will be the source to increment the Counter, Refer to GxCounterEventSourceEntry
|
|
|
ENUM_COUNTER_RESET_SOURCE = 0x30002ee6 # Selects the signals that will be the source to reset the Counter, Refer to GxCounterResetSourceEntry
|
|
|
ENUM_COUNTER_RESET_ACTIVATION = 0x30002ee7 # Selects the Activation mode of the Counter Reset Source signal, Refer to GxCounterResetActivationEntry
|
|
|
COMMAND_COUNTER_RESET = 0x70002ee8 # Does a software reset of the selected Counter and starts it.
|
|
|
ENUM_COUNTER_TRIGGER_SOURCE = 0x30002ee9 # Counter trigger source, Reference GxCounterTriggerSourceEntry
|
|
|
INT_COUNTER_DURATION = 0x10002eea # Counter duration value
|
|
|
ENUM_TIMER_TRIGGER_ACTIVATION = 0x30002eeb # Timer Trigger Activation, reference GxTimerTriggerActivationEntry
|
|
|
INT_COUNTER_VALUE = 0x10002eec # counter value
|
|
|
|
|
|
# ---------------RemoveParameterLimitControl Section------------------
|
|
|
ENUM_REMOVE_PARAMETER_LIMIT = 0x300032c8 # Remove paremeter range restriction switch
|
|
|
|
|
|
# ---------------HDRControl Section-----------------------------------
|
|
|
ENUM_HDR_MODE = 0x300036b0 # HDR switch
|
|
|
INT_HDR_TARGET_LONG_VALUE = 0x100036b1 # Bright field expectations
|
|
|
INT_HDR_TARGET_SHORT_VALUE = 0x100036b2 # dark field expectations
|
|
|
INT_HDR_TARGET_MAIN_VALUE = 0x100036b3 # Convergence expectations
|
|
|
|
|
|
# ---------------MultiGrayControl Section-----------------------------------
|
|
|
ENUM_MGC_MODE = 0x30003a99 # Multi-frame grey scale control mode
|
|
|
INT_MGC_SELECTOR = 0x10003a9a # Multiframe grey color selection
|
|
|
FLOAT_MGC_EXPOSURE_TIME = 0x20003a9b # Multi-frame grey time exposure time
|
|
|
FLOAT_MGC_GAIN = 0x20003a9c # Multiframe grey gain
|
|
|
|
|
|
# ---------------ImageQualityControl Section-----------------------------------
|
|
|
BUFFER_STRIPED_CALIBRATION_INFO = 0x60003e81 # Fringe calibration information
|
|
|
FLOAT_CONTRAST = 0x20003e82 # Contrast
|
|
|
ENUM_HOTPIXEL_CORRECTION = 0x30003e83 # Hotpixel correction
|
|
|
|
|
|
# ---------------GyroControl Section-----------------------------------
|
|
|
BUFFER_IMU_DATA = 0x60004269 # IMU data
|
|
|
ENUM_IMU_CONFIG_ACC_RANGE = 0x3000426a # IMU config acc range
|
|
|
ENUM_IMU_CONFIG_ACC_ODR_LOW_PASS_FILTER_SWITCH = 0x3000426b # IMU config acc odr low pass filter switch
|
|
|
ENUM_IMU_CONFIG_ACC_ODR = 0x3000426c # IMU config acc odr
|
|
|
ENUM_IMU_CONFIG_ACC_ODR_LOW_PASS_FILTER_FREQUENCY = 0x3000426d # imu config acc odr low pass filter frequency
|
|
|
ENUM_IMU_CONFIG_GYRO_XRANGE = 0x3000426f # imu config gyro Xrange
|
|
|
ENUM_IMU_CONFIG_GYRO_YRANGE = 0x30004270 # imu config gyro Yrange
|
|
|
ENUM_IMU_CONFIG_GYRO_ZRANGE = 0x30004271 # imu config gyro Zrange
|
|
|
ENUM_IMU_CONFIG_GYRO_ODR_LOW_PASS_FILTER_SWITCH = 0x30004272 # imu config gyro odr low pass filter switch
|
|
|
ENUM_IMU_CONFIG_GYRO_ODR = 0x30004273 # imu config gyro odr
|
|
|
ENUM_IMU_CONFIG_GYRO_ODR_LOW_PASS_FILTER_FREQUENCY = 0x30004274 # imu config gyro odr low pass filter frequency
|
|
|
FLOAT_IMU_ROOM_TEMPERATURE = 0x20004275 # imu room temperature
|
|
|
ENUM_IMU_TEMPERATURE_ODR = 0x30004276 # imu temperature odr
|
|
|
|
|
|
# ---------------SerialPortControl Section-----------------------------------
|
|
|
ENUM_SERIALPORT_SELECTOR = 0x30004a39 # Serial port selection
|
|
|
ENUM_SERIALPORT_SOURCE = 0x30004a3a # Serial port input source
|
|
|
ENUM_SERIALPORT_BAUDRATE = 0x30004a3b # Serial baud rate
|
|
|
INT_SERIALPORT_DATA_BITS = 0x10004a3c # Serial port data bit
|
|
|
ENUM_SERIALPORT_STOP_BITS = 0x30004a3d # Serial port stop bit
|
|
|
ENUM_SERIALPORT_PARITY = 0x30004a3e # Serial port parity
|
|
|
INT_TRANSMIT_QUEUE_MAX_CHARACTER_COUNT = 0x10004a3f # Maximum number of characters in transmission queue
|
|
|
INT_TRANSMIT_QUEUE_CURRENT_CHARACTER_COUNT = 0x10004a40 # Current number of characters in the transmission queue
|
|
|
INT_RECEIVE_QUEUE_MAX_CHARACTER_COUNT = 0x10004a41 # Maximum number of characters in receive queue
|
|
|
INT_RECEIVE_QUEUE_CURRENT_CHARACTER_COUNT = 0x10004a42 # Current number of characters in the receive queue
|
|
|
INT_RECEIVE_FRAMING_ERROR_COUNT = 0x10004a43 # Received frame error count
|
|
|
INT_RECEIVE_PARITY_ERROR_COUNT = 0x10004a44 # Receive parity error count
|
|
|
COMMAND_RECEIVE_QUEUE_CLEAR = 0x70004a45 # Queue Clear
|
|
|
BUFFER_SERIALPORT_DATA = 0x60004a46 # serial data
|
|
|
INT_SERIALPORT_DATA_LENGTH = 0x10004a47 # Serial port data length
|
|
|
INT_SERIAL_PORT_DETECTION_STATUS = 0x10004a48 # Serial port status detection
|
|
|
|
|
|
# ---------------CoaXPress Section-------------------------------------------
|
|
|
ENUM_CXP_LINK_CONFIGURATION = 0x30004e21 # Connection configuration
|
|
|
ENUM_CXP_LINK_CONFIGURATION_PREFERRED = 0x30004e22 # Preset connection configuration
|
|
|
ENUM_CXP_LINK_CONFIGURATION_STATUS = 0x30004e23 # CXP connection configuration status
|
|
|
INT_IMAGE1_STREAM_ID = 0x10004e24 # First image flow ID
|
|
|
ENUM_CXP_CONNECTION_SELECTOR = 0x30004e25 # Connection selection
|
|
|
ENUM_CXP_CONNECTION_TEST_MODE = 0x30004e26 # Connection test mode
|
|
|
INT_CXP_CONNECTION_TEST_ERROR_COUNT = 0x10004e27 # Connection test error count
|
|
|
INT_CXP_CONNECTION_TEST_PACKET_RX_COUNT = 0x10004e28 # Number of connection test packets received
|
|
|
INT_CXP_CONNECTION_TEST_PACKET_TX_COUNT = 0x10004e29 # Number of connection test packets sent
|
|
|
|
|
|
# ---------------SequencerControl Section-----------------------------------
|
|
|
ENUM_SEQUENCER_MODE = 0x30005209 # Sequencer mode
|
|
|
ENUM_SEQUENCER_CONFIGURATION_MODE = 0x3000520a # Sequencer configuration mode
|
|
|
ENUM_SEQUENCER_FEATURE_SELECTOR = 0x3000520b # Sequencer function selector
|
|
|
BOOL_SEQUENCER_FEATURE_ENABLE = 0x4000520c # Sequencer function enabled
|
|
|
INT_SEQUENCER_SET_SELECTOR = 0x1000520d # Sequencer setting selector
|
|
|
INT_SEQUENCER_SET_COUNT = 0x1000520e # Sequencer count
|
|
|
INT_SEQUENCER_SET_ACTIVE = 0x1000520f # Sequencer settings active
|
|
|
COMMAND_SEQUENCER_SET_RESET = 0x70005210 # Sequencer setting reset
|
|
|
INT_SEQUENCER_PATH_SELECTOR = 0x10005211 # Sequencer payh selection
|
|
|
INT_SEQUENCER_SET_NEXT = 0x10005212 # Sequencer Next
|
|
|
ENUM_SEQUENCER_TRIGGER_SOURCE = 0x30005213 # Sequencer Trigger
|
|
|
COMMAND_SEQUENCER_SET_SAVE = 0x70005214 # Sequencer Save
|
|
|
COMMAND_SEQUENCER_SET_LOAD = 0x70005215 # Sequencer Load
|
|
|
|
|
|
# ---------------EnoderControl Section--------------------------------------
|
|
|
ENUM_ENCODER_SELECTOR = 0x300055f1 # Encoder selector
|
|
|
ENUM_ENCODER_DIRECTION = 0x300055f2 # Encoder direction
|
|
|
INT_ENCODER_VALUE = 0x100055f3 # Decoder value
|
|
|
ENUM_ENCODER_SOURCEA = 0x300055f4 # Encoder phase A input
|
|
|
ENUM_ENCODER_SOURCEB = 0x300055f5 # Encoder phase B input
|
|
|
ENUM_ENCODER_MODE = 0x300055f6 # Encoder Mode
|
|
|
|
|
|
# ---------------Device Feature---------------------------------------
|
|
|
INT_COMMAND_TIMEOUT = 0x13000000 # (Only GEVDevice)The time of command timeout
|
|
|
INT_COMMAND_RETRY_COUNT = 0x13000001 # (Only GEVDevice)Command retry times
|
|
|
|
|
|
# ---------------DataStream Feature-----------------------------------
|
|
|
INT_ANNOUNCED_BUFFER_COUNT = 0x14000000 # The number of Buffer declarations
|
|
|
INT_DELIVERED_FRAME_COUNT = 0x14000001 # Number of received frames (including remnant frames)
|
|
|
INT_LOST_FRAME_COUNT = 0x14000002 # Number of lost frames caused by buffer deficiency
|
|
|
INT_INCOMPLETE_FRAME_COUNT = 0x14000003 # Number of residual frames received
|
|
|
INT_DELIVERED_PACKET_COUNT = 0x14000004 # The number of packets received
|
|
|
INT_RESEND_PACKET_COUNT = 0x14000005 # (Only GEVDevice)Number of retransmission packages
|
|
|
INT_RESCUED_PACKET_COUNT = 0x14000006 # (Only GEVDevice)Retransmission success package number
|
|
|
INT_RESEND_COMMAND_COUNT = 0x14000007 # (Only GEVDevice)Retransmission command times
|
|
|
INT_UNEXPECTED_PACKET_COUNT = 0x14000008 # (Only GEVDevice)Exception packet number
|
|
|
INT_MAX_PACKET_COUNT_IN_ONE_BLOCK = 0x14000009 # (Only GEVDevice)Data block maximum retransmission number
|
|
|
INT_MAX_PACKET_COUNT_IN_ONE_COMMAND = 0x1400000a # (Only GEVDevice)The maximum number of packets contained in one command
|
|
|
INT_RESEND_TIMEOUT = 0x1400000b # (Only GEVDevice)Retransmission timeout time
|
|
|
INT_MAX_WAIT_PACKET_COUNT = 0x1400000c # (Only GEVDevice)Maximum waiting packet number
|
|
|
ENUM_RESEND_MODE = 0x3400000d # (Only GEVDevice)Retransmission mode switch
|
|
|
INT_MISSING_BLOCK_ID_COUNT = 0x1400000e # (Only GEVDevice)BlockID lost number
|
|
|
INT_BLOCK_TIMEOUT = 0x1400000f # (Only GEVDevice)Data block timeout time
|
|
|
INT_STREAM_TRANSFER_SIZE = 0x14000010 # (Only U3VDevice)Data block size
|
|
|
INT_STREAM_TRANSFER_NUMBER_URB = 0x14000011 # (Only U3VDevice)Number of data blocks
|
|
|
INT_MAX_NUM_QUEUE_BUFFER = 0x14000012 # (Only GEVDevice)The maximum Buffer number of the collection queue
|
|
|
INT_PACKET_TIMEOUT = 0x14000013 # (Only GEVDevice)Packet timeout time
|
|
|
INT_SOCKET_BUFFER_SIZE = 0x14000014 # (Only GEVDevice)Socket buffer size in kilobytes
|
|
|
ENUM_STOP_ACQUISITION_MODE = 0x34000015 # (Only U3VDevice)Stop acquisition mode Reference GxStopAcquisitionModeEntry
|
|
|
ENUM_STREAM_BUFFER_HANDLING_MODE = 0x34000016 # Buffer handling mode Reference GxDSStreamBufferHandlingModeEntry
|
|
|
|
|
|
def __init__(self):
|
|
|
pass
|
|
|
|
|
|
|
|
|
class GxDeviceIPInfo(Structure):
|
|
|
_fields_ = [
|
|
|
('device_id', c_char * 68), # The unique identifier of the device.
|
|
|
('mac', c_char * 32), # MAC address
|
|
|
('ip', c_char * 32), # IP address
|
|
|
('subnet_mask', c_char * 32), # Subnet mask
|
|
|
('gateway', c_char * 32), # Gateway
|
|
|
('nic_mac', c_char * 32), # The MAC address of the corresponding NIC(Network Interface Card).
|
|
|
('nic_ip', c_char * 32), # The IP of the corresponding NIC
|
|
|
('nic_subnet_mask', c_char * 32), # The subnet mask of the corresponding NIC
|
|
|
('nic_gateWay', c_char * 32), # The Gateway of the corresponding NIC
|
|
|
('nic_description', c_char * 132), # The description of the corresponding NIC
|
|
|
('reserved', c_char * 512), # Reserved 512 bytes
|
|
|
]
|
|
|
|
|
|
def __str__(self):
|
|
|
return "GxDeviceIPInfo\n%s" % "\n".join("%s:\t%s" % (n, getattr(self, n[0])) for n in self._fields_)
|
|
|
|
|
|
|
|
|
class GxDeviceBaseInfo(Structure):
|
|
|
_fields_ = [
|
|
|
('vendor_name', c_char*32), # Vendor name
|
|
|
('model_name', c_char*32), # TModel name
|
|
|
('serial_number', c_char*32), # Serial number
|
|
|
('display_name', c_char*132), # Display name
|
|
|
('device_id', c_char*68), # The unique identifier of the device.
|
|
|
('user_id', c_char*68), # User's custom name
|
|
|
('access_status', c_int), # Access status that is currently supported by the device
|
|
|
# Refer to GxAccessStatus
|
|
|
('device_class', c_int), # Device type. Such as USB2.0, GEV.
|
|
|
('reserved', c_char*300), # Reserved 300 bytes
|
|
|
]
|
|
|
|
|
|
def __str__(self):
|
|
|
return "GxDeviceBaseInfo\n%s" % "\n".join("%s:\t%s" % (n, getattr(self, n[0])) for n in self._fields_)
|
|
|
|
|
|
|
|
|
class GxOpenParam(Structure):
|
|
|
_fields_ = [
|
|
|
('content', c_char_p),
|
|
|
('open_mode', c_uint),
|
|
|
('access_mode', c_uint),
|
|
|
]
|
|
|
|
|
|
def __str__(self):
|
|
|
return "GxOpenParam\n%s" % "\n".join( "%s:\t%s" % (n, getattr(self, n[0])) for n in self._fields_)
|
|
|
|
|
|
|
|
|
class GxFrameCallbackParam(Structure):
|
|
|
_fields_ = [
|
|
|
('user_param_index', c_void_p), # User private data
|
|
|
('status', c_int), # The return state of the image
|
|
|
('image_buf', c_void_p), # Image buff address
|
|
|
('image_size', c_int), # Image data size, Including frame information
|
|
|
('width', c_int), # Image width
|
|
|
('height', c_int), # Image height
|
|
|
('pixel_format', c_int), # Image PixFormat
|
|
|
('frame_id', c_ulonglong), # The frame id of the image
|
|
|
('timestamp', c_ulonglong), # Time stamp of image
|
|
|
('reserved', c_int), # Reserved
|
|
|
]
|
|
|
|
|
|
def __str__(self):
|
|
|
return "GxFrameCallbackParam\n%s" % "\n".join("%s:\t%s" % (n, getattr(self, n[0])) for n in self._fields_)
|
|
|
|
|
|
|
|
|
class GxFrameData(Structure):
|
|
|
_fields_ = [
|
|
|
('status', c_int), # The return state of the image
|
|
|
('image_buf', c_void_p), # Image buff address
|
|
|
('width', c_int), # Image width
|
|
|
('height', c_int), # Image height
|
|
|
('pixel_format', c_int), # Image PixFormat
|
|
|
('image_size', c_int), # Image data size, Including frame information
|
|
|
('frame_id', c_ulonglong), # The frame id of the image
|
|
|
('timestamp', c_ulonglong), # Time stamp of image
|
|
|
('buf_id', c_ulonglong), # Image buff ID
|
|
|
('reserved', c_int), # Reserved
|
|
|
]
|
|
|
|
|
|
def __str__(self):
|
|
|
return "GxFrameData\n%s" % "\n".join("%s:\t%s" % (n, getattr(self, n[0])) for n in self._fields_)
|
|
|
|
|
|
class GxFrameBuffer(ctypes.Structure):
|
|
|
_fields_ = [
|
|
|
('frame_id', c_ulonglong), # The frame id of the image
|
|
|
('timestamp', c_ulonglong), # Time stamp of image
|
|
|
('buf_id', c_ulonglong), # Image buff ID
|
|
|
('image_buf', c_void_p), # Image buff address
|
|
|
('status', c_uint), # The return state of the image
|
|
|
('width', c_uint), # Image width
|
|
|
('height', c_uint), # Image height
|
|
|
('pixel_format', c_uint), # Image PixFormat
|
|
|
('image_size', c_uint), # Image data size, Including frame information
|
|
|
('offset_x', c_uint), # X-direction offset of the image
|
|
|
('offset_y', c_uint), # Y-direction offset of the image
|
|
|
('reserved', c_uint), # Reserved
|
|
|
]
|
|
|
|
|
|
def __str__(self):
|
|
|
return "GxFrameBuffer\n%s" % "\n".join("%s:\t%s" % (n, getattr(self, n[0])) for n in self._fields_)
|
|
|
|
|
|
class GxIntFeatrue(Structure):
|
|
|
_fields_ = [
|
|
|
('value', c_int64),
|
|
|
('min', c_int64),
|
|
|
('max', c_int64),
|
|
|
('inc', c_int64),
|
|
|
('reserved', c_int32*NODE_FEATURE_RESERVED_16),
|
|
|
]
|
|
|
def __str__(self):
|
|
|
return "GxIntFeatrue\n%s" % "\n".join("%s:\t%s" % (n, getattr(self, n[0])) for n in self._fields_)
|
|
|
|
|
|
class GxEnumValue(Structure):
|
|
|
_fields_ = [
|
|
|
('cur_value' , c_int64), # Enumerate subkey values
|
|
|
('cur_symbolic' , c_char * 128), # Enumeration sub item description
|
|
|
('reserved' , c_int32 * 4), # Reserved
|
|
|
]
|
|
|
def __str__(self):
|
|
|
return "GxEnumValue\n%s" % "\n".join("%s:\t%s" % (n, getattr(self, n[0])) for n in self._fields_)
|
|
|
|
|
|
class GxEnumFeatrue( Structure):
|
|
|
_fields_ = [
|
|
|
('cur_value' , GxEnumValue), # Current enumeration value
|
|
|
('supported_number' , c_int64), # Number of enumerated subitems
|
|
|
('supported_value' , GxEnumValue * 128), # Info of enumerated subitems
|
|
|
('reserved' , c_int32 * 16), # Reserved
|
|
|
]
|
|
|
def __str__(self):
|
|
|
return "GxEnumFeatrue\n%s" % "\n".join("%s:\t%s" % (n, getattr(self, n[0])) for n in self._fields_)
|
|
|
|
|
|
class GxFloatFeature( Structure):
|
|
|
_fields_ = [
|
|
|
('cur_value' , c_double), # Float feature current value
|
|
|
('min' , c_double), # Floating point minimum
|
|
|
('max' , c_double), # Floating point max
|
|
|
('inc' , c_double), # Floating point step size
|
|
|
('inc_is_valid' , c_bool), # Whether the floating point step size is valid
|
|
|
('unit' , c_char * 8), # Floating point units
|
|
|
('reserved' , c_int32 * 16), # Reserved
|
|
|
]
|
|
|
def __str__(self):
|
|
|
return "GxFloatFeature\n%s" % "\n".join("%s:\t%s" % (n, getattr(self, n[0])) for n in self._fields_)
|
|
|
|
|
|
class GxStringFeature( Structure):
|
|
|
_fields_ = [
|
|
|
('cur_value' , c_char * 256), # String feature current value
|
|
|
('max_length' , c_int64), # String feature max length
|
|
|
('reserved' , c_int32 * 4), # Reserved
|
|
|
]
|
|
|
def __str__(self):
|
|
|
return "GxStringFeature\n%s" % "\n".join("%s:\t%s" % (n, getattr(self, n[0])) for n in self._fields_)
|
|
|
|
|
|
class GxRegisterStackEntry(Structure):
|
|
|
_fields_ = [
|
|
|
('address', c_ulonglong), #Address of the register
|
|
|
('buffer', c_void_p), #Pointer to the buffer containing the data
|
|
|
('size', c_uint), #Number of bytes to read
|
|
|
]
|
|
|
|
|
|
def __str__(self):
|
|
|
return "GxRegisterStackEntry\n%s" % "\n".join("%s:\t%s" % (n, getattr(self, n[0])) for n in self._fields_)
|
|
|
|
|
|
# The following structures have been abandoned
|
|
|
class GxIntRange(Structure):
|
|
|
_fields_ = [
|
|
|
('min', c_ulonglong),
|
|
|
('max', c_ulonglong),
|
|
|
('inc', c_ulonglong),
|
|
|
('reserved', c_int * 8),
|
|
|
]
|
|
|
|
|
|
def __str__(self):
|
|
|
return "GxIntRange\n%s" % "\n".join("%s:\t%s" % (n, getattr(self, n[0])) for n in self._fields_)
|
|
|
|
|
|
|
|
|
class GxFloatRange(Structure):
|
|
|
_fields_ = [
|
|
|
('min', c_double),
|
|
|
('max', c_double),
|
|
|
('inc', c_double),
|
|
|
('unit', c_char * 8),
|
|
|
('inc_is_valid', c_bool),
|
|
|
('reserved', c_char * 31),
|
|
|
]
|
|
|
|
|
|
def __str__(self):
|
|
|
return "GxFloatRange\n%s" % "\n".join("%s:\t%s" % (n, getattr(self, n[0])) for n in self._fields_)
|
|
|
|
|
|
|
|
|
class GxEnumDescription(Structure):
|
|
|
_fields_ = [
|
|
|
('value', c_longlong), # Enum value
|
|
|
('symbolic', c_char * 64), # Character description
|
|
|
('reserved', c_int * 8),
|
|
|
]
|
|
|
|
|
|
def __str__(self):
|
|
|
return "GxEnumDescription\n%s" % "\n".join("%s:\t%s" % (n, getattr(self, n[0])) for n in self._fields_)
|
|
|
|
|
|
class GxRegisterStackEntry(Structure):
|
|
|
_fields_ = [
|
|
|
('address', c_ulonglong), #Address of the register
|
|
|
('buffer', c_void_p), #Pointer to the buffer containing the data
|
|
|
('size', c_uint), #Number of bytes to read
|
|
|
]
|
|
|
|
|
|
def __str__(self):
|
|
|
return "GxRegisterStackEntry\n%s" % "\n".join("%s:\t%s" % (n, getattr(self, n[0])) for n in self._fields_)
|
|
|
|
|
|
if hasattr(dll, 'GXSetLogType'):
|
|
|
def gx_set_log_type(log_type):
|
|
|
"""
|
|
|
:brief Set whether logs of the specified type can be sent
|
|
|
:param log_type: log type,See detail in GxLogTypeList
|
|
|
Type: Int
|
|
|
:return: status: State return value, See detail in GxStatusList
|
|
|
"""
|
|
|
log_type_c = c_uint()
|
|
|
log_type_c.value = log_type
|
|
|
|
|
|
status = dll.GXSetLogType(log_type)
|
|
|
|
|
|
return status
|
|
|
|
|
|
if hasattr(dll, 'GXGetLogType'):
|
|
|
def gx_get_log_type():
|
|
|
"""
|
|
|
:brief Gets whether logs of a specified type can be sent
|
|
|
:param log_type: log type,See detail in GxLogTypeList
|
|
|
Type: Int
|
|
|
:return: status: State return value, See detail in GxStatusList
|
|
|
"""
|
|
|
log_type_c = c_uint()
|
|
|
|
|
|
status = dll.GXGetLogType(byref(log_type_c))
|
|
|
|
|
|
return status,log_type_c.value
|
|
|
|
|
|
if hasattr(dll, 'GXInitLib'):
|
|
|
def gx_init_lib():
|
|
|
"""
|
|
|
:brief Initialize the device library for some resource application operations
|
|
|
:return: None
|
|
|
"""
|
|
|
return dll.GXInitLib()
|
|
|
|
|
|
|
|
|
if hasattr(dll, 'GXCloseLib'):
|
|
|
def gx_close_lib():
|
|
|
"""
|
|
|
:brief Close the device library to release resources.
|
|
|
:return: None
|
|
|
"""
|
|
|
return dll.GXCloseLib()
|
|
|
|
|
|
|
|
|
if hasattr(dll, 'GXGetLastError'):
|
|
|
def gx_get_last_error(size=1024):
|
|
|
"""
|
|
|
:brief To get the latest error descriptions information of the program
|
|
|
:param size: string buff length(size=1024)
|
|
|
Type: Int, Minnum: 0
|
|
|
:return: status: State return value, See detail in GxStatusList
|
|
|
err_code: Return the last error code
|
|
|
err_content: the latest error descriptions information of the program
|
|
|
"""
|
|
|
err_code = c_int()
|
|
|
err_content_buff = create_string_buffer(size)
|
|
|
|
|
|
content_size = c_size_t()
|
|
|
content_size.value = size
|
|
|
|
|
|
status = dll.GXGetLastError(byref(err_code), byref(err_content_buff), byref(content_size))
|
|
|
err_content = string_at(err_content_buff, content_size.value-1)
|
|
|
|
|
|
return status, err_code.value, string_decoding(err_content)
|
|
|
|
|
|
|
|
|
if hasattr(dll, 'GXUpdateDeviceList'):
|
|
|
def gx_update_device_list(time_out=200):
|
|
|
"""
|
|
|
:brief Enumerating currently all available devices in subnet and gets the number of devices.
|
|
|
:param time_out: The timeout time of enumeration (unit: ms).
|
|
|
Type: Int, Minimum:0
|
|
|
:return: status: State return value, See detail in GxStatusList
|
|
|
device_num: The number of devices
|
|
|
"""
|
|
|
time_out_c = c_uint()
|
|
|
time_out_c.value = time_out
|
|
|
|
|
|
device_num = c_uint()
|
|
|
status = dll.GXUpdateDeviceList(byref(device_num), time_out_c)
|
|
|
return status, device_num.value
|
|
|
|
|
|
|
|
|
if hasattr(dll, 'GXUpdateAllDeviceList'):
|
|
|
def gx_update_all_device_list(time_out=200):
|
|
|
"""
|
|
|
:brief Enumerating currently all available devices in entire network and gets the number of devices
|
|
|
:param time_out: The timeout time of enumeration (unit: ms).
|
|
|
Type: Int, Minimum: 0
|
|
|
:return: status: State return value, See detail in GxStatusList
|
|
|
device_num: The number of devices
|
|
|
"""
|
|
|
time_out_c = c_uint()
|
|
|
time_out_c.value = time_out
|
|
|
|
|
|
device_num = c_uint()
|
|
|
status = dll.GXUpdateAllDeviceList(byref(device_num), time_out_c)
|
|
|
return status, device_num.value
|
|
|
|
|
|
if hasattr(dll, 'GXUpdateAllDeviceListEx'):
|
|
|
def gx_update_device_list_ex(device_type,time_out=2000):
|
|
|
"""
|
|
|
:brief Enumerating all available ntype type devices.
|
|
|
:param ntype: enumerat ntype type device
|
|
|
:param time_out: The timeout time of enumeration (unit: ms).
|
|
|
Type: Int, Minimum:0
|
|
|
:return: status: State return value, See detail in GxStatusList
|
|
|
device_num: The number of devices
|
|
|
"""
|
|
|
device_type_c = c_uint()
|
|
|
device_type_c.value = device_type
|
|
|
|
|
|
time_out_c = c_uint()
|
|
|
time_out_c.value = time_out
|
|
|
|
|
|
device_num = c_uint()
|
|
|
status = dll.GXUpdateAllDeviceListEx(device_type_c, byref(device_num), time_out_c)
|
|
|
return status, device_num.value
|
|
|
|
|
|
if hasattr(dll, 'GXGetInterfaceNum'):
|
|
|
def gx_get_interface_number():
|
|
|
"""
|
|
|
:brief To get the basic information of all the devices
|
|
|
:return: status: State return value, See detail in GxStatusList
|
|
|
interface_number_c: The interface number
|
|
|
"""
|
|
|
interface_number_c = c_size_t()
|
|
|
status = dll.GXGetInterfaceNum(byref(interface_number_c))
|
|
|
return status, interface_number_c.value
|
|
|
|
|
|
if hasattr(dll, 'GXGetInterfaceInfo'):
|
|
|
def gx_get_interface_info(interface_num):
|
|
|
"""
|
|
|
:brief To get the basic information of all the devices
|
|
|
:param interface_num: The number of interface
|
|
|
Type: Int, Minimum: 0
|
|
|
:return: status: State return value, See detail in GxStatusList
|
|
|
device_ip_info: The structure pointer of the device information(GxDeviceIPInfo)
|
|
|
"""
|
|
|
interface_info = GXInterfaceInfo()
|
|
|
|
|
|
buf_size_c = c_size_t()
|
|
|
buf_size_c.value = interface_num
|
|
|
|
|
|
status = dll.GXGetInterfaceInfo(buf_size_c,byref(interface_info))
|
|
|
return status, interface_info
|
|
|
|
|
|
if hasattr(dll, 'GXGetInterfaceHandle'):
|
|
|
def gx_get_interface_handle(interface_num):
|
|
|
"""
|
|
|
:brief To get the basic information of all the devices
|
|
|
:param interface_num: The number of interface
|
|
|
Type: Int, Minimum: 0
|
|
|
:return: status: State return value, See detail in GxStatusList
|
|
|
handle_size_c: The interface handle
|
|
|
"""
|
|
|
index_c = c_uint()
|
|
|
index_c.value = interface_num
|
|
|
|
|
|
handle_size_c = c_void_p()
|
|
|
|
|
|
status = dll.GXGetInterfaceHandle(index_c, byref(handle_size_c))
|
|
|
return status, handle_size_c.value
|
|
|
|
|
|
if hasattr(dll, 'GXGetAllDeviceBaseInfo'):
|
|
|
def gx_get_all_device_base_info(devices_num):
|
|
|
"""
|
|
|
:brief To get the basic information of all the devices
|
|
|
:param devices_num: The number of devices
|
|
|
Type: Int, Minimum: 0
|
|
|
:return: status: State return value, See detail in GxStatusList
|
|
|
device_ip_info: The structure pointer of the device information(GxDeviceIPInfo)
|
|
|
"""
|
|
|
devices_info = (GxDeviceBaseInfo * devices_num)()
|
|
|
|
|
|
buf_size_c = c_size_t()
|
|
|
buf_size_c.value = sizeof(GxDeviceBaseInfo) * devices_num
|
|
|
|
|
|
status = dll.GXGetAllDeviceBaseInfo(byref(devices_info), byref(buf_size_c))
|
|
|
return status, devices_info
|
|
|
|
|
|
|
|
|
if hasattr(dll, 'GXGetDeviceIPInfo'):
|
|
|
def gx_get_device_ip_info(index):
|
|
|
"""
|
|
|
:brief To get the network information of the device.
|
|
|
:param index: Device index
|
|
|
Type: Int, Minimum: 1
|
|
|
:return: status: State return value, See detail in GxStatusList
|
|
|
device_ip_info: The structure pointer of the device information(GxDeviceIPInfo)
|
|
|
"""
|
|
|
index_c = c_uint()
|
|
|
index_c.value = index
|
|
|
|
|
|
device_ip_info = GxDeviceIPInfo()
|
|
|
status = dll.GXGetDeviceIPInfo(index_c, byref(device_ip_info))
|
|
|
|
|
|
return status, device_ip_info
|
|
|
|
|
|
|
|
|
if hasattr(dll, 'GXOpenDeviceByIndex'):
|
|
|
def gx_open_device_by_index(index):
|
|
|
"""
|
|
|
:brief Open the device by a specific Index(1, 2, 3, ...)
|
|
|
:param index: Device index
|
|
|
Type: Int, Minimum: 1
|
|
|
:return: status: State return value, See detail in GxStatusList
|
|
|
handle: The device handle returned by the interface
|
|
|
"""
|
|
|
index_c = c_uint()
|
|
|
index_c.value = index
|
|
|
|
|
|
handle_c = c_void_p()
|
|
|
status = dll.GXOpenDeviceByIndex(index_c, byref(handle_c))
|
|
|
return status, handle_c.value
|
|
|
|
|
|
|
|
|
if hasattr(dll, 'GXOpenDevice'):
|
|
|
def gx_open_device(open_param):
|
|
|
"""
|
|
|
:brief Open the device by a specific unique identification, such as: SN, IP, MAC, Index etc.
|
|
|
:param open_param: The open device parameter which is configurated by the user.
|
|
|
Type: GxOpenParam
|
|
|
:return: status: State return value, See detail in GxStatusList
|
|
|
handle: The device handle returned by the interface
|
|
|
"""
|
|
|
handle = c_void_p()
|
|
|
status = dll.GXOpenDevice(byref(open_param), byref(handle))
|
|
|
return status, handle.value
|
|
|
|
|
|
|
|
|
if hasattr(dll, 'GXCloseDevice'):
|
|
|
def gx_close_device(handle):
|
|
|
"""
|
|
|
:brief Specify the device handle to close the device
|
|
|
:param handle: The device handle that the user specified to close.
|
|
|
Type: Long, Greater than 0
|
|
|
:return: status: State return value, See detail in GxStatusList
|
|
|
"""
|
|
|
handle_c = c_void_p()
|
|
|
handle_c.value = handle
|
|
|
|
|
|
status = dll.GXCloseDevice(handle_c)
|
|
|
return status
|
|
|
|
|
|
|
|
|
if hasattr(dll, 'GXGetParentInterfaceFromDev'):
|
|
|
def gx_get_parent_interface_from_device(handle):
|
|
|
"""
|
|
|
:brief Specify the device handle to close the device
|
|
|
:param handle: The device handle that the user specified to close.
|
|
|
Type: Long, Greater than 0
|
|
|
:return: status: State return value, See detail in GxStatusList
|
|
|
"""
|
|
|
handle_c = c_void_p()
|
|
|
handle_c.value = handle
|
|
|
|
|
|
interface_handle_c = c_void_p()
|
|
|
|
|
|
status = dll.GXGetParentInterfaceFromDev(handle_c, byref(interface_handle_c))
|
|
|
return status, interface_handle_c.value
|
|
|
|
|
|
|
|
|
if hasattr(dll, 'GXGetLocalDeviceHandleFromDev'):
|
|
|
def gx_local_device_handle_from_device(handle):
|
|
|
"""
|
|
|
:brief Get device local layer handle
|
|
|
:param handle: The device handle
|
|
|
:return: status: State return value, See detail in GxStatusList
|
|
|
device local layer handle
|
|
|
"""
|
|
|
handle_c = c_void_p()
|
|
|
handle_c.value = handle
|
|
|
|
|
|
local_device_handle_c = c_void_p()
|
|
|
|
|
|
status = dll.GXGetLocalDeviceHandleFromDev(handle_c, byref(local_device_handle_c))
|
|
|
return status, local_device_handle_c.value
|
|
|
|
|
|
|
|
|
if hasattr(dll, 'GXGetDataStreamNumFromDev'):
|
|
|
def gx_data_stream_number_from_device(handle):
|
|
|
"""
|
|
|
:brief Get device stream number
|
|
|
:param handle: The device handle that the user specified to get stream number.
|
|
|
Type: Long, Greater than 0
|
|
|
:return: status: State return value, See detail in GxStatusList
|
|
|
"""
|
|
|
handle_c = c_void_p()
|
|
|
handle_c.value = handle
|
|
|
|
|
|
stream_number = c_uint32()
|
|
|
|
|
|
status = dll.GXGetDataStreamNumFromDev(handle_c, byref( stream_number))
|
|
|
return status,stream_number.value
|
|
|
|
|
|
|
|
|
if hasattr(dll, 'GXGetPayLoadSize'):
|
|
|
def gx_get_payload_size(handle):
|
|
|
"""
|
|
|
:brief Get device stream payload size
|
|
|
:param handle: The device stream layer payload size
|
|
|
:return: status: State return value, See detail in GxStatusList
|
|
|
stream payload size
|
|
|
"""
|
|
|
handle_c = c_void_p()
|
|
|
handle_c.value = handle
|
|
|
|
|
|
stream_payload_size = c_uint32()
|
|
|
|
|
|
status = dll.GXGetPayLoadSize(handle_c, byref( stream_payload_size))
|
|
|
return status,stream_payload_size.value
|
|
|
|
|
|
|
|
|
if hasattr(dll, 'GXGetDataStreamHandleFromDev'):
|
|
|
def gx_get_data_stream_handle_from_device(handle,stream_index):
|
|
|
"""
|
|
|
:brief Get device stream handle
|
|
|
:param handle: The device handle that the user specified to get stream number.
|
|
|
Type: Long, Greater than 0
|
|
|
:param stream_index:stream index.
|
|
|
:return: status: State return value, See detail in GxStatusList
|
|
|
stream handle
|
|
|
"""
|
|
|
handle_c = c_void_p()
|
|
|
handle_c.value = handle
|
|
|
stream_number = c_uint32()
|
|
|
stream_number.value = stream_index
|
|
|
stream_handle_c = c_void_p()
|
|
|
|
|
|
status = dll.GXGetDataStreamHandleFromDev(handle_c, stream_number, byref(stream_handle_c))
|
|
|
return status, stream_handle_c.value
|
|
|
|
|
|
|
|
|
if hasattr(dll, 'GXFeatureSave'):
|
|
|
def gx_feature_save(handle,file_path):
|
|
|
"""
|
|
|
:brief Save the current handle parameter of the camera to the configuration file.
|
|
|
:param handle: The handle of the device feature each layer
|
|
|
Type: Long, Greater than 0
|
|
|
:return: status: State return value, See detail in GxStatusList
|
|
|
"""
|
|
|
handle_c = c_void_p()
|
|
|
handle_c.value = handle
|
|
|
file_path_c = create_string_buffer(string_encoding(file_path))
|
|
|
|
|
|
status = dll.GXFeatureSave(handle_c, file_path_c)
|
|
|
return status
|
|
|
|
|
|
|
|
|
if hasattr(dll, 'GXFeatureLoad'):
|
|
|
def gx_feature_load(handle, file_path, b_verify):
|
|
|
"""
|
|
|
:brief Load the configuration file for the camera
|
|
|
:param handle: The handle of the device feature each layer
|
|
|
Type: Long, Greater than 0
|
|
|
:param file_path: The path that load user parameter group.
|
|
|
Type: char*
|
|
|
:return: status: State return value
|
|
|
"""
|
|
|
handle_c = c_void_p()
|
|
|
handle_c.value = handle
|
|
|
|
|
|
file_path_c = create_string_buffer(string_encoding(file_path))
|
|
|
|
|
|
b_verify_c = c_bool()
|
|
|
b_verify_c.value = b_verify
|
|
|
|
|
|
status = dll.GXFeatureLoad(handle_c,file_path,b_verify_c)
|
|
|
return status
|
|
|
|
|
|
|
|
|
if hasattr(dll, 'GXGetNodeAccessMode'):
|
|
|
def gx_get_node_access_mode(handle, feature_name):
|
|
|
"""
|
|
|
:brief To get the access information of the feature node
|
|
|
:param handle: The handle that the device each layer
|
|
|
Type: Long, Greater than 0
|
|
|
:param feature_name: The feature_name that node feature name.
|
|
|
Type: char*
|
|
|
:return: status: State return value
|
|
|
feature node access mode
|
|
|
"""
|
|
|
handle_c = c_void_p()
|
|
|
handle_c.value = handle
|
|
|
|
|
|
feature_name_c = create_string_buffer(string_encoding(feature_name))
|
|
|
|
|
|
node_access_mode_c = c_int()
|
|
|
node_access_mode_c.value = GxNodeAccessMode.MODE_UNDEF
|
|
|
|
|
|
status = dll.GXGetNodeAccessMode(handle_c, feature_name_c, byref(node_access_mode_c))
|
|
|
return status,node_access_mode_c.value
|
|
|
|
|
|
|
|
|
if hasattr(dll, 'GXGetIntValue'):
|
|
|
def gx_get_int_feature(handle, feature_name):
|
|
|
"""
|
|
|
:brief Get int type feature value
|
|
|
:param handle: The handle of the device each layer.
|
|
|
Type: Long, Greater than 0
|
|
|
:param feature_name:The feature node name.
|
|
|
Type: char*
|
|
|
:return: status: State return value
|
|
|
int feature info
|
|
|
"""
|
|
|
handle_c = c_void_p()
|
|
|
handle_c.value = handle
|
|
|
|
|
|
feature_name_c = create_string_buffer(string_encoding(feature_name))
|
|
|
|
|
|
int_feature_c = GxIntFeatrue()
|
|
|
|
|
|
status = dll.GXGetIntValue(handle_c,feature_name_c, byref(int_feature_c))
|
|
|
return status,int_feature_c
|
|
|
|
|
|
|
|
|
if hasattr(dll, 'GXSetIntValue'):
|
|
|
def gx_set_int_feature_value(handle, feature_name, feature_value):
|
|
|
"""
|
|
|
:brief Set int type feature value
|
|
|
:param handle: TThe handle of the device each layer.
|
|
|
Type: Long, Greater than 0
|
|
|
:param feature_name:The feature node name.
|
|
|
Type: char*
|
|
|
:param featrue_value:The feature node value.
|
|
|
Type: int
|
|
|
:return: status: State return value
|
|
|
"""
|
|
|
handle_c = c_void_p()
|
|
|
handle_c.value = handle
|
|
|
|
|
|
feature_name_c = create_string_buffer(string_encoding(feature_name))
|
|
|
|
|
|
feature_value_c = c_int64()
|
|
|
feature_value_c.value = feature_value
|
|
|
|
|
|
status = dll.GXSetIntValue(handle_c,feature_name_c, feature_value_c)
|
|
|
return status
|
|
|
|
|
|
|
|
|
if hasattr(dll, 'GXGetEnumValue'):
|
|
|
def gx_get_enum_feature(handle, feature_name):
|
|
|
"""
|
|
|
:brief Get enum type feature info
|
|
|
:param handle: The handle of the device each layer.
|
|
|
Type: Long, Greater than 0
|
|
|
:param feature_name:The feature node name.
|
|
|
Type: char*
|
|
|
:return: status: State return value
|
|
|
enum info
|
|
|
"""
|
|
|
handle_c = c_void_p()
|
|
|
handle_c.value = handle
|
|
|
|
|
|
feature_name_c = create_string_buffer(string_encoding(feature_name))
|
|
|
|
|
|
enum_feature_c = GxEnumFeatrue()
|
|
|
|
|
|
status = dll.GXGetEnumValue(handle_c,feature_name_c, byref(enum_feature_c))
|
|
|
return status,enum_feature_c
|
|
|
|
|
|
|
|
|
if hasattr(dll, 'GXSetEnumValue'):
|
|
|
def gx_set_enum_feature_value(handle, feature_name, featue_value):
|
|
|
"""
|
|
|
:brief Set enum type feature value
|
|
|
:param handle: The handle of the device each layer.
|
|
|
Type: Long, Greater than 0
|
|
|
:param feature_name:The feature node name.
|
|
|
Type: char*
|
|
|
:param featrue_value:The feature node value.
|
|
|
Type: string
|
|
|
:return: status: State return value
|
|
|
"""
|
|
|
handle_c = c_void_p()
|
|
|
handle_c.value = handle
|
|
|
|
|
|
feature_name_c = create_string_buffer(string_encoding(feature_name))
|
|
|
|
|
|
featue_value_c = c_int64()
|
|
|
featue_value_c.value = featue_value
|
|
|
|
|
|
status = dll.GXSetEnumValue(handle_c,feature_name_c, featue_value_c)
|
|
|
return status
|
|
|
|
|
|
|
|
|
if hasattr(dll, 'GXSetEnumValueByString'):
|
|
|
def gx_set_enum_feature_value_string(handle, feature_name, feature_value):
|
|
|
"""
|
|
|
:brief Set enum type feature value
|
|
|
:param handle: The handle of the device each layer.
|
|
|
Type: Long, Greater than 0
|
|
|
:param feature_name:The feature node name.
|
|
|
Type: char*
|
|
|
:param featrue_value:The feature node value.
|
|
|
Type: string
|
|
|
:return: status: State return value
|
|
|
"""
|
|
|
handle_c = c_void_p()
|
|
|
handle_c.value = handle
|
|
|
|
|
|
feature_name_c = create_string_buffer(string_encoding(feature_name))
|
|
|
feature_value_c = create_string_buffer( string_encoding( feature_value))
|
|
|
|
|
|
status = dll.GXSetEnumValueByString(handle_c,feature_name_c, feature_value_c)
|
|
|
return status
|
|
|
|
|
|
|
|
|
if hasattr(dll, 'GXGetFloatValue'):
|
|
|
def gx_get_float_feature(handle, feature_name):
|
|
|
"""
|
|
|
:brief Get float type feature value
|
|
|
:param handle: The handle of the device each layer.
|
|
|
Type: Long, Greater than 0
|
|
|
:param feature_name:The feature node name.
|
|
|
Type: char*
|
|
|
:return: status: State return value
|
|
|
float value
|
|
|
"""
|
|
|
handle_c = c_void_p()
|
|
|
handle_c.value = handle
|
|
|
feature_name_c = create_string_buffer(string_encoding(feature_name))
|
|
|
float_feature_c = GxFloatFeature()
|
|
|
|
|
|
status = dll.GXGetFloatValue(handle_c,feature_name_c, byref(float_feature_c))
|
|
|
return status,float_feature_c
|
|
|
|
|
|
|
|
|
if hasattr(dll, 'GXSetFloatValue'):
|
|
|
def gx_set_float_feature_value(handle, feature_name, featue_value):
|
|
|
"""
|
|
|
:brief Set float type feature value
|
|
|
:param handle: The handle of the device each layer.
|
|
|
Type: Long, Greater than 0
|
|
|
:param feature_name:The feature node name.
|
|
|
Type: char*
|
|
|
:param featrue_value:The feature node value.
|
|
|
Type: float
|
|
|
:return: status: State return value
|
|
|
"""
|
|
|
handle_c = c_void_p()
|
|
|
handle_c.value = handle
|
|
|
feature_name_c = create_string_buffer(string_encoding(feature_name))
|
|
|
featue_value_c = c_double()
|
|
|
featue_value_c.value = featue_value
|
|
|
|
|
|
status = dll.GXSetFloatValue(handle_c,feature_name_c, featue_value_c)
|
|
|
return status
|
|
|
|
|
|
|
|
|
if hasattr(dll, 'GXGetBoolValue'):
|
|
|
def gx_get_bool_feature(handle, feature_name):
|
|
|
"""
|
|
|
:brief Get bool type feature value
|
|
|
:param handle: The handle of the device each layer.
|
|
|
Type: Long, Greater than 0
|
|
|
:param feature_name:The feature node name.
|
|
|
Type: char*
|
|
|
:return: status: State return value
|
|
|
bool value
|
|
|
"""
|
|
|
handle_c = c_void_p()
|
|
|
handle_c.value = handle
|
|
|
feature_name_c = create_string_buffer(string_encoding(feature_name))
|
|
|
bool_feature_c = c_bool()
|
|
|
|
|
|
status = dll.GXGetBoolValue(handle_c,feature_name_c, byref(bool_feature_c))
|
|
|
return status,bool_feature_c.value
|
|
|
|
|
|
|
|
|
if hasattr(dll, 'GXSetBoolValue'):
|
|
|
def gx_set_bool_feature_value(handle, feature_name, featue_value):
|
|
|
"""
|
|
|
:brief Set bool type feature value
|
|
|
:param handle: The handle of the device each layer.
|
|
|
Type: Long, Greater than 0
|
|
|
:param feature_name:The feature node name.
|
|
|
Type: char*
|
|
|
:param featue_value:The feature node value.
|
|
|
Type: bool
|
|
|
:return: status: State return value
|
|
|
"""
|
|
|
handle_c = c_void_p()
|
|
|
handle_c.value = handle
|
|
|
feature_name_c = create_string_buffer(string_encoding(feature_name))
|
|
|
featue_value_c = c_bool()
|
|
|
featue_value_c.value = featue_value
|
|
|
|
|
|
status = dll.GXSetBoolValue(handle_c,feature_name_c, featue_value)
|
|
|
return status
|
|
|
|
|
|
|
|
|
if hasattr(dll, 'GXGetStringValue'):
|
|
|
def gx_get_string_feature(handle, feature_name):
|
|
|
"""
|
|
|
:brief Get string type feature info
|
|
|
:param handle: The handle of the device each layer.
|
|
|
Type: Long, Greater than 0
|
|
|
:param feature_name:The feature node name.
|
|
|
Type: char*
|
|
|
:return: status: State return value
|
|
|
string info
|
|
|
"""
|
|
|
handle_c = c_void_p()
|
|
|
handle_c.value = handle
|
|
|
feature_name_c = create_string_buffer(string_encoding(feature_name))
|
|
|
string_feature_c = GxStringFeature()
|
|
|
|
|
|
status = dll.GXGetStringValue(handle_c,feature_name_c, byref(string_feature_c))
|
|
|
return status,string_feature_c
|
|
|
|
|
|
|
|
|
if hasattr(dll, 'GXSetStringValue'):
|
|
|
def gx_set_string_feature_value(handle, feature_name, featue_value):
|
|
|
"""
|
|
|
:brief Set string type feature value
|
|
|
:param handle: The handle of the device each layer.
|
|
|
Type: Long, Greater than 0
|
|
|
:param feature_name:The feature node name.
|
|
|
Type: char*
|
|
|
:param featue_value:The feature node value.
|
|
|
Type: char*
|
|
|
:return: status: State return value
|
|
|
"""
|
|
|
handle_c = c_void_p()
|
|
|
handle_c.value = handle
|
|
|
feature_name_c = create_string_buffer(string_encoding( feature_name))
|
|
|
featue_value_c = create_string_buffer( string_encoding( featue_value))
|
|
|
|
|
|
status = dll.GXSetStringValue(handle_c,feature_name_c, featue_value_c)
|
|
|
return status
|
|
|
|
|
|
|
|
|
if hasattr(dll, 'GXSetCommandValue'):
|
|
|
def gx_feature_send_command(handle, feature_name):
|
|
|
"""
|
|
|
:brief Send the command
|
|
|
:param handle: The handle of the device each layer.
|
|
|
Type: Long, Greater than 0
|
|
|
:param feature_name:The feature node name.
|
|
|
Type: char*
|
|
|
:return: status: State return value
|
|
|
"""
|
|
|
handle_c = c_void_p()
|
|
|
handle_c.value = handle
|
|
|
feature_name_c = create_string_buffer(string_encoding(feature_name))
|
|
|
|
|
|
status = dll.GXSetCommandValue(handle_c,feature_name_c)
|
|
|
return status
|
|
|
|
|
|
|
|
|
if hasattr(dll, 'GXGetRegisterLength'):
|
|
|
def gx_get_register_feature_length(handle, feature_name):
|
|
|
"""
|
|
|
:brief Get register type feature length
|
|
|
:param handle: The handle of the device each layer.
|
|
|
Type: Long, Greater than 0
|
|
|
:param feature_name:The feature node name.
|
|
|
Type: char*
|
|
|
:return: status: State return value
|
|
|
Feature length
|
|
|
"""
|
|
|
handle_c = c_void_p()
|
|
|
handle_c.value = handle
|
|
|
feature_name_c = create_string_buffer(string_encoding(feature_name))
|
|
|
featue_value_c = c_size_t()
|
|
|
|
|
|
status = dll.GXGetRegisterLength(handle_c,feature_name_c, byref(featue_value_c))
|
|
|
return status,featue_value_c.value
|
|
|
|
|
|
|
|
|
if hasattr(dll, 'GXGetRegisterValue'):
|
|
|
def gx_get_register_feature_value(handle, feature_name):
|
|
|
"""
|
|
|
:brief Specify the device handle to close the device
|
|
|
:param handle: The handle of the device each layer.
|
|
|
Type: Long, Greater than 0
|
|
|
:param feature_name:The feature name.
|
|
|
Type: char*
|
|
|
:return: status: State return value, See detail in GxStatusList
|
|
|
Buffer data
|
|
|
"""
|
|
|
handle_c = c_void_p()
|
|
|
handle_c.value = handle
|
|
|
feature_name_c = create_string_buffer(string_encoding(feature_name))
|
|
|
|
|
|
feature_size_c = c_size_t()
|
|
|
status = dll.GXGetRegisterValue( handle_c, feature_name_c, None, byref( feature_size_c))
|
|
|
|
|
|
buff_c = (c_ubyte * feature_size_c.value)()
|
|
|
|
|
|
status = dll.GXGetRegisterValue(handle_c,feature_name_c, byref(buff_c), byref(feature_size_c))
|
|
|
return status,buff_c
|
|
|
|
|
|
|
|
|
if hasattr(dll, 'GXSetRegisterValue'):
|
|
|
def gx_set_register_feature_value(handle, feature_name, buff, buff_size):
|
|
|
"""
|
|
|
:brief Specify the device handle to close the device
|
|
|
:param handle: The handle of the device each layer.
|
|
|
Type: Long, Greater than 0
|
|
|
:param feature_name: feature node name
|
|
|
Type: char*
|
|
|
:param buff: Set user data
|
|
|
Type: buffer*
|
|
|
:param buff_size: User data size
|
|
|
Type: size_t*
|
|
|
:return: status: State return value, See detail in GxStatusList
|
|
|
"""
|
|
|
handle_c = c_void_p()
|
|
|
handle_c.value = handle
|
|
|
feature_name_c = create_string_buffer(string_encoding(feature_name))
|
|
|
|
|
|
featue_value_c = c_int64()
|
|
|
featue_value_c.value = buff_size
|
|
|
|
|
|
status = dll.GXSetRegisterValue(handle_c,feature_name_c, buff, featue_value_c)
|
|
|
return status
|
|
|
|
|
|
|
|
|
if hasattr(dll, 'GXFeatureLoad'):
|
|
|
def gx_feature_load(handle, file_path, verify):
|
|
|
"""
|
|
|
:brief Specify the device handle to close the device
|
|
|
:param handle: The handle of the device each layer.
|
|
|
Type: Long, Greater than 0
|
|
|
:param file_path: The path that load user parameter group.
|
|
|
Type: char*
|
|
|
:return: status: State return value, See detail in GxStatusList
|
|
|
"""
|
|
|
handle_c = c_void_p()
|
|
|
handle_c.value = handle
|
|
|
file_path_c = create_string_buffer(string_encoding(file_path))
|
|
|
verify_c = c_bool()
|
|
|
verify_c.value = verify
|
|
|
|
|
|
status = dll.GXFeatureLoad(handle_c,file_path_c, verify_c)
|
|
|
return status
|
|
|
|
|
|
|
|
|
if hasattr(dll, 'GXFeatureSave'):
|
|
|
def gx_feature_save(handle, file_path):
|
|
|
"""
|
|
|
:brief Specify the device handle to close the device
|
|
|
:param handle: The handle of the device each layer.
|
|
|
Type: Long, Greater than 0
|
|
|
:param file_path: The path that load user parameter group.
|
|
|
Type: char*
|
|
|
:return: status: State return value, See detail in GxStatusList
|
|
|
"""
|
|
|
handle_c = c_void_p()
|
|
|
handle_c.value = handle
|
|
|
file_path_c = create_string_buffer(string_encoding(file_path))
|
|
|
|
|
|
status = dll.GXFeatureSave(handle_c,file_path_c)
|
|
|
return status
|
|
|
|
|
|
|
|
|
if hasattr(dll, 'GXReadPort'):
|
|
|
def gx_read_port(handle, address, size):
|
|
|
"""
|
|
|
:brief Read data for user specified register.
|
|
|
:param handle: The handle of the device each layer.
|
|
|
Type: Long, Greater than 0
|
|
|
:param address: Register address
|
|
|
Type: ulonglong
|
|
|
:param buff: Output data buff
|
|
|
Type: int*
|
|
|
:param size: User data size
|
|
|
Type: char*
|
|
|
:return: status: State return value, See detail in GxStatusList
|
|
|
size: Returns the length of the actual read register
|
|
|
"""
|
|
|
handle_c = c_void_p()
|
|
|
handle_c.value = handle
|
|
|
|
|
|
address_c = c_ulonglong()
|
|
|
address_c.value = address
|
|
|
|
|
|
buff_c = c_int()
|
|
|
|
|
|
size_c = c_uint()
|
|
|
size_c.value = size
|
|
|
|
|
|
status = dll.GXReadPort(handle_c,address_c, byref( buff_c), byref( size_c))
|
|
|
return status, buff_c.value
|
|
|
|
|
|
|
|
|
if hasattr(dll, 'GXWritePort'):
|
|
|
def gx_writer_port(handle, address, buff, size):
|
|
|
"""
|
|
|
:brief Writes user specified data to a user specified register.
|
|
|
:param handle: The handle of the device each layer.
|
|
|
Type: Long, Greater than 0
|
|
|
:param address: Register address
|
|
|
Type: ulonglong
|
|
|
:param buff: User data
|
|
|
Type: int*
|
|
|
:param size: User data size
|
|
|
Type: char*
|
|
|
:return: status: State return value
|
|
|
"""
|
|
|
handle_c = c_void_p()
|
|
|
handle_c.value = handle
|
|
|
|
|
|
address_c = c_ulonglong()
|
|
|
address_c.value = address
|
|
|
|
|
|
size_c = c_uint()
|
|
|
size_c.value = size
|
|
|
|
|
|
buff_c = c_int()
|
|
|
buff_c.value = buff
|
|
|
|
|
|
status = dll.GXWritePort(handle_c, address_c, byref(buff_c), byref(size_c))
|
|
|
return status
|
|
|
|
|
|
|
|
|
if hasattr(dll, 'GXReadPortStacked'):
|
|
|
def gx_read_port_stacked(handle, entries, size):
|
|
|
"""
|
|
|
:brief Batch reads the value of the user-specified register (Registers with command values of 4 bytes only)
|
|
|
:param handle: The handle of the device each layer.
|
|
|
Type: Long, Greater than 0
|
|
|
:param entries: [in]Batch read register addresses and values
|
|
|
[out]Read the data to the corresponding register
|
|
|
Type: void*
|
|
|
:param size: [in]Read the number of device registers
|
|
|
[out]The number of registers that were successfully read
|
|
|
Type: size_t*
|
|
|
:return: status: State return value
|
|
|
"""
|
|
|
handle_c = c_void_p()
|
|
|
handle_c.value = handle
|
|
|
|
|
|
size_c = c_uint()
|
|
|
size_c.value = size
|
|
|
|
|
|
status = dll.GXReadPortStacked(handle_c,entries, byref(size_c))
|
|
|
return status
|
|
|
|
|
|
|
|
|
if hasattr(dll, 'GXWritePortStacked'):
|
|
|
def gx_writer_port_stacked(handle, entries, size):
|
|
|
"""
|
|
|
:brief Batch reads the value of the user-specified register (Registers with command values of 4 bytes only)
|
|
|
:param handle: [in]The handle of the device each layer.
|
|
|
Type: Long, Greater than 0
|
|
|
:param entries: [in]The address and value of the batch write register
|
|
|
Type: void*
|
|
|
:param size: [in]Sets the number of device registers
|
|
|
[out]The number of registers that were successfully written
|
|
|
Type: size_t*
|
|
|
:return: status: State return value
|
|
|
"""
|
|
|
handle_c = c_void_p()
|
|
|
handle_c.value = handle
|
|
|
|
|
|
size_c = c_uint()
|
|
|
size_c.value = size
|
|
|
|
|
|
status = dll.GXWritePortStacked(handle_c,entries, byref(size_c))
|
|
|
return status
|
|
|
|
|
|
|
|
|
FEATURE_CALL = CFUNCTYPE(None, c_char_p, py_object)
|
|
|
if hasattr(dll, 'GXRegisterFeatureCallbackByString'):
|
|
|
def gx_register_feature_call_back_by_string(handle, call_back, feature_name, args):
|
|
|
"""
|
|
|
:brief Specify the device handle to close the device
|
|
|
:param handle: The handle of the device each layer.
|
|
|
Type: Long, Greater than 0
|
|
|
:param file_path: The path that load user parameter group.
|
|
|
Type: char*
|
|
|
:return: status: State return value
|
|
|
call back handle object
|
|
|
"""
|
|
|
handle_c = c_void_p()
|
|
|
handle_c.value = handle
|
|
|
|
|
|
feature_name_c = create_string_buffer(string_encoding(feature_name))
|
|
|
|
|
|
call_back_handle = c_void_p()
|
|
|
|
|
|
status = dll.GXRegisterFeatureCallbackByString(handle_c, ctypes.py_object(args), call_back, feature_name_c, byref(call_back_handle))
|
|
|
return status, call_back_handle.value
|
|
|
|
|
|
|
|
|
if hasattr(dll, 'GXUnregisterFeatureCallbackByString'):
|
|
|
def gx_unregister_feature_call_back_by_string(handle, feature_name, call_back_handle):
|
|
|
"""
|
|
|
:brief Specify the device handle to close the device
|
|
|
:param handle: The handle of the device each layer.
|
|
|
Type: Long, Greater than 0
|
|
|
:param feature_name: The feature name of the device each layer.
|
|
|
Type: char*
|
|
|
:return: status: State return value
|
|
|
"""
|
|
|
handle_c = c_void_p()
|
|
|
handle_c.value = handle
|
|
|
|
|
|
feature_name_c = create_string_buffer(string_encoding(feature_name))
|
|
|
|
|
|
call_back_handle_c = c_void_p()
|
|
|
call_back_handle_c.value = call_back_handle
|
|
|
|
|
|
status = dll.GXUnregisterFeatureCallbackByString(handle_c, feature_name_c, call_back_handle_c)
|
|
|
return status
|
|
|
|
|
|
|
|
|
|
|
|
if hasattr(dll, 'GXGetDevicePersistentIpAddress'):
|
|
|
def gx_get_device_persistent_ip_address(handle, ip_length=16, subnet_mask_length=16, default_gateway_length=16):
|
|
|
"""
|
|
|
:brief Get the persistent IP information of the device
|
|
|
:param handle: The handle of the device
|
|
|
:param ip_length: The character string length of the device persistent IP address.
|
|
|
:param subnet_mask_length: The character string length of the device persistent subnet mask.
|
|
|
:param default_gateway_length: The character string length of the device persistent gateway
|
|
|
:return: status: State return value, See detail in GxStatusList
|
|
|
ip: The device persistent IP address(str)
|
|
|
subnet_mask: The device persistent subnet mask(str)
|
|
|
default_gateway: The device persistent gateway
|
|
|
"""
|
|
|
handle_c = c_void_p()
|
|
|
handle_c.value = handle
|
|
|
|
|
|
ip_length_c = c_uint()
|
|
|
ip_length_c.value = ip_length
|
|
|
ip_c = create_string_buffer(ip_length)
|
|
|
|
|
|
subnet_mask_length_c = c_uint()
|
|
|
subnet_mask_length_c.value = subnet_mask_length
|
|
|
subnet_mask_c = create_string_buffer(subnet_mask_length)
|
|
|
|
|
|
default_gateway_length_c = c_uint()
|
|
|
default_gateway_length_c.value = default_gateway_length
|
|
|
default_gateway_c = create_string_buffer(default_gateway_length)
|
|
|
|
|
|
status = dll.GXGetDevicePersistentIpAddress(handle_c, byref(ip_c), byref(ip_length_c),
|
|
|
byref(subnet_mask_c), byref(subnet_mask_length_c),
|
|
|
byref(default_gateway_c), byref(default_gateway_length_c))
|
|
|
|
|
|
ip = string_at(ip_c, ip_length_c.value-1)
|
|
|
subnet_mask = string_at(subnet_mask_c, subnet_mask_length_c.value-1)
|
|
|
default_gateway = string_at(default_gateway_c, default_gateway_length_c.value-1)
|
|
|
|
|
|
return status, string_decoding(ip), string_decoding(subnet_mask), string_decoding(default_gateway)
|
|
|
|
|
|
if hasattr(dll, 'GXSetDevicePersistentIpAddress'):
|
|
|
def gx_set_device_persistent_ip_address(handle, ip, subnet_mask, default_gate_way):
|
|
|
"""
|
|
|
:brief Set the persistent IP information of the device
|
|
|
:param handle: The handle of the device
|
|
|
:param ip: The persistent IP character string of the device(str)
|
|
|
:param subnet_mask: The persistent subnet mask character string of the device(str)
|
|
|
:param default_gate_way: The persistent gateway character string of the device(str)
|
|
|
:return: status: State return value, See detail in GxStatusList
|
|
|
"""
|
|
|
handle_c = c_void_p()
|
|
|
handle_c.value = handle
|
|
|
|
|
|
ip_c = create_string_buffer(string_encoding(ip))
|
|
|
subnet_mask_c = create_string_buffer(string_encoding(subnet_mask))
|
|
|
default_gate_way_c = create_string_buffer(string_encoding(default_gate_way))
|
|
|
|
|
|
status = dll.GXSetDevicePersistentIpAddress(handle_c, byref(ip_c), byref(subnet_mask_c),
|
|
|
byref(default_gate_way_c))
|
|
|
return status
|
|
|
|
|
|
|
|
|
if hasattr(dll, 'GXGetFeatureName'):
|
|
|
def gx_get_feature_name(handle, feature_id):
|
|
|
"""
|
|
|
:brief Get the string description for the feature code
|
|
|
:param handle: The handle of the device
|
|
|
Type: Long, Greater than 0
|
|
|
:param feature_id: The feature code ID
|
|
|
Type: Int, Greater than 0
|
|
|
:return: status: State return value, See detail in GxStatusList
|
|
|
name: The string description for the feature code
|
|
|
"""
|
|
|
handle_c = c_void_p()
|
|
|
handle_c.value = handle
|
|
|
feature_id_c = c_int()
|
|
|
feature_id_c.value = feature_id
|
|
|
|
|
|
size_c = c_size_t()
|
|
|
status = dll.GXGetFeatureName(handle_c, feature_id_c, None, byref(size_c))
|
|
|
|
|
|
name_buff = create_string_buffer(size_c.value)
|
|
|
status = dll.GXGetFeatureName(handle_c, feature_id_c, byref(name_buff), byref(size_c))
|
|
|
|
|
|
name = string_at(name_buff, size_c.value-1)
|
|
|
return status, string_decoding(name)
|
|
|
|
|
|
|
|
|
if hasattr(dll, 'GXIsImplemented'):
|
|
|
def gx_is_implemented(handle, feature_id):
|
|
|
"""
|
|
|
:brief Inquire the current camera whether support a special feature.
|
|
|
:param handle: The handle of the device
|
|
|
Type: Long, Greater than 0
|
|
|
:param feature_id: The feature code ID
|
|
|
Type: int, Greater than 0
|
|
|
:return: status: State return value, See detail in GxStatusList
|
|
|
is_implemented: To return the result whether is support this feature
|
|
|
"""
|
|
|
handle_c = c_void_p()
|
|
|
handle_c.value = handle
|
|
|
|
|
|
feature_id_c = c_int()
|
|
|
feature_id_c.value = feature_id
|
|
|
|
|
|
is_implemented = c_bool()
|
|
|
status = dll.GXIsImplemented(handle_c, feature_id_c, byref(is_implemented))
|
|
|
return status, is_implemented.value
|
|
|
|
|
|
|
|
|
if hasattr(dll, 'GXIsReadable'):
|
|
|
def gx_is_readable(handle, feature_id):
|
|
|
"""
|
|
|
:brief Inquire if a feature code is currently readable
|
|
|
:param handle: The handle of the device
|
|
|
Type: Long, Greater than 0
|
|
|
:param feature_id: The feature code ID
|
|
|
Type: int, Greater than 0
|
|
|
:return: status: State return value, See detail in GxStatusList
|
|
|
is_readable: To return the result whether the feature code ID is readable
|
|
|
"""
|
|
|
handle_c = c_void_p()
|
|
|
handle_c.value = handle
|
|
|
|
|
|
feature_id_c = c_int()
|
|
|
feature_id_c.value = feature_id
|
|
|
|
|
|
is_readable = c_bool()
|
|
|
status = dll.GXIsReadable(handle_c, feature_id_c, byref(is_readable))
|
|
|
return status, is_readable.value
|
|
|
|
|
|
|
|
|
if hasattr(dll, 'GXIsWritable'):
|
|
|
def gx_is_writable(handle, feature_id):
|
|
|
"""
|
|
|
:brief Inquire if a feature code is currently writable
|
|
|
:param handle: The handle of the device.
|
|
|
Type: Long, Greater than 0
|
|
|
:param feature_id: The feature code ID
|
|
|
Type: int, Greater than 0
|
|
|
:return: status: State return value, See detail in GxStatusList
|
|
|
is_writeable: To return the result whether the feature code ID is writable(Bool)
|
|
|
"""
|
|
|
handle_c = c_void_p()
|
|
|
handle_c.value = handle
|
|
|
|
|
|
feature_id_c = c_int()
|
|
|
feature_id_c.value = feature_id
|
|
|
|
|
|
is_writeable = c_bool()
|
|
|
status = dll.GXIsWritable(handle_c, feature_id_c, byref(is_writeable))
|
|
|
return status, is_writeable.value
|
|
|
|
|
|
|
|
|
if hasattr(dll, 'GXGetIntRange'):
|
|
|
def gx_get_int_range(handle, feature_id):
|
|
|
"""
|
|
|
:brief To get the minimum value, maximum value and steps of the int type
|
|
|
:param handle: The handle of the device.
|
|
|
Type: Long, Greater than 0
|
|
|
:param feature_id: The feature code ID
|
|
|
Type: int, Greater than 0
|
|
|
:return: status: State return value, See detail in GxStatusList
|
|
|
int_range: The structure of range description(GxIntRange)
|
|
|
"""
|
|
|
handle_c = c_void_p()
|
|
|
handle_c.value = handle
|
|
|
|
|
|
feature_id_c = c_int()
|
|
|
feature_id_c.value = feature_id
|
|
|
|
|
|
int_range = GxIntRange()
|
|
|
status = dll.GXGetIntRange(handle_c, feature_id_c, byref(int_range))
|
|
|
return status, int_range
|
|
|
|
|
|
|
|
|
if hasattr(dll, 'GXGetInt'):
|
|
|
def gx_get_int(handle, feature_id):
|
|
|
"""
|
|
|
:brief Get the current value of the int type.
|
|
|
:param handle: The handle of the device
|
|
|
Type: Long, Greater than 0
|
|
|
:param feature_id: The feature code ID
|
|
|
Type: int, Greater than 0
|
|
|
:return: status: State return value, See detail in GxStatusList
|
|
|
int_value: Get the current value of the int type
|
|
|
"""
|
|
|
handle_c = c_void_p()
|
|
|
handle_c.value = handle
|
|
|
|
|
|
feature_id_c = c_int()
|
|
|
feature_id_c.value = feature_id
|
|
|
|
|
|
int_value = c_int64()
|
|
|
status = dll.GXGetInt(handle_c, feature_id_c, byref(int_value))
|
|
|
return status, int_value.value
|
|
|
|
|
|
|
|
|
if hasattr(dll, 'GXSetInt'):
|
|
|
def gx_set_int(handle, feature_id, int_value):
|
|
|
"""
|
|
|
:brief Set the value of int type
|
|
|
:param handle: The handle of the device
|
|
|
Type: Long, Greater than 0
|
|
|
:param feature_id: The feature code ID.
|
|
|
Type: int, Greater than 0
|
|
|
:param int_value: The value that the user will set
|
|
|
Type: long, minnum:0
|
|
|
:return: status: State return value, See detail in GxStatusList
|
|
|
"""
|
|
|
handle_c = c_void_p()
|
|
|
handle_c.value = handle
|
|
|
|
|
|
feature_id_c = c_int()
|
|
|
feature_id_c.value = feature_id
|
|
|
|
|
|
value_c = c_int64()
|
|
|
value_c.value = int_value
|
|
|
|
|
|
status = dll.GXSetInt(handle_c, feature_id_c, value_c)
|
|
|
return status
|
|
|
|
|
|
|
|
|
if hasattr(dll, 'GXGetFloatRange'):
|
|
|
def gx_get_float_range(handle, feature_id):
|
|
|
"""
|
|
|
:brief To get the minimum value, maximum value, stepsand unit of the float type
|
|
|
:param handle: The handle of the device
|
|
|
Type: Long, Greater than 0
|
|
|
:param feature_id: The feature code ID
|
|
|
Type: int, Greater than 0
|
|
|
:return: status: State return value, See detail in GxStatusList
|
|
|
float_range: The description structure(GxFloatRange)
|
|
|
"""
|
|
|
handle_c = c_void_p()
|
|
|
handle_c.value = handle
|
|
|
|
|
|
feature_id_c = c_int()
|
|
|
feature_id_c.value = feature_id
|
|
|
|
|
|
float_range = GxFloatRange()
|
|
|
status = dll.GXGetFloatRange(handle_c, feature_id_c, byref(float_range))
|
|
|
return status, float_range
|
|
|
|
|
|
|
|
|
if hasattr(dll, 'GXSetFloat'):
|
|
|
def gx_set_float(handle, feature_id, float_value):
|
|
|
"""
|
|
|
:brief Set the value of float type
|
|
|
:param handle: The handle of the device
|
|
|
Type: Long, Greater than 0
|
|
|
:param feature_id: The feature code ID
|
|
|
Type: int, Greater than 0
|
|
|
:param float_value: The float value that the user will set
|
|
|
Type: double
|
|
|
:return: status: State return value, See detail in GxStatusList
|
|
|
"""
|
|
|
handle_c = c_void_p()
|
|
|
handle_c.value = handle
|
|
|
|
|
|
feature_id_c = c_int()
|
|
|
feature_id_c.value = feature_id
|
|
|
|
|
|
value_c = c_double()
|
|
|
value_c.value = float_value
|
|
|
|
|
|
status = dll.GXSetFloat(handle_c, feature_id_c, value_c)
|
|
|
return status
|
|
|
|
|
|
|
|
|
if hasattr(dll, 'GXGetFloat'):
|
|
|
def gx_get_float(handle, feature_id):
|
|
|
"""
|
|
|
:brief Get the value of float type
|
|
|
:param handle: The handle of the device
|
|
|
Type: Long, Greater than 0
|
|
|
:param feature_id: The feature code ID
|
|
|
Type: int, Greater than 0
|
|
|
:return: status: State return value, See detail in GxStatusList
|
|
|
"""
|
|
|
handle_c = c_void_p()
|
|
|
handle_c.value = handle
|
|
|
|
|
|
feature_id_c = c_int()
|
|
|
feature_id_c.value = feature_id
|
|
|
|
|
|
float_value = c_double()
|
|
|
status = dll.GXGetFloat(handle_c, feature_id_c, byref(float_value))
|
|
|
|
|
|
return status, float_value.value
|
|
|
|
|
|
|
|
|
if hasattr(dll, 'GXGetEnumEntryNums'):
|
|
|
def gx_get_enum_entry_nums(handle, feature_id):
|
|
|
"""
|
|
|
:brief Get the number of the options for the enumeration item
|
|
|
:param handle: The handle of the device
|
|
|
Type: Long, Greater than 0
|
|
|
:param feature_id: The feature code ID
|
|
|
Type: int, Greater than 0
|
|
|
:return: status: State return value, See detail in GxStatusList
|
|
|
enum_num: The number of the options for the enumeration item
|
|
|
"""
|
|
|
handle_c = c_void_p()
|
|
|
handle_c.value = handle
|
|
|
|
|
|
feature_id_c = c_int()
|
|
|
feature_id_c.value = feature_id
|
|
|
|
|
|
enum_nums = c_uint()
|
|
|
status = dll.GXGetEnumEntryNums(handle_c, feature_id_c, byref(enum_nums))
|
|
|
return status, enum_nums.value
|
|
|
|
|
|
|
|
|
if hasattr(dll, 'GXGetEnumDescription'):
|
|
|
def gx_get_enum_description(handle, feature_id, enum_num):
|
|
|
"""
|
|
|
:brief To get the description information of the enumerated type values
|
|
|
the number of enumerated items and the value and descriptions of each item
|
|
|
please reference GxEnumDescription.
|
|
|
:param handle: The handle of the device
|
|
|
Type: Long, Greater than 0
|
|
|
:param feature_id: The feature code ID
|
|
|
Type: int, Greater than 0
|
|
|
:param enum_num: The number of enumerated information
|
|
|
Type: int, Greater than 0
|
|
|
:return: status: State return value, See detail in GxStatusList
|
|
|
enum_description: Enumerated information array(GxEnumDescription)
|
|
|
"""
|
|
|
handle_c = c_void_p()
|
|
|
handle_c.value = handle
|
|
|
|
|
|
feature_id_c = c_int()
|
|
|
feature_id_c.value = feature_id
|
|
|
|
|
|
buf_size_c = c_size_t()
|
|
|
buf_size_c.value = sizeof(GxEnumDescription) * enum_num
|
|
|
|
|
|
enum_description = (GxEnumDescription * enum_num)()
|
|
|
status = dll.GXGetEnumDescription(handle_c, feature_id_c, byref(enum_description), byref(buf_size_c))
|
|
|
return status, enum_description
|
|
|
|
|
|
|
|
|
if hasattr(dll, 'GXGetEnum'):
|
|
|
def gx_get_enum(handle, feature_id):
|
|
|
"""
|
|
|
:brief To get the current enumeration value
|
|
|
:param handle: The handle of the device
|
|
|
Type: Long, Greater than 0
|
|
|
:param feature_id: The feature code ID
|
|
|
Type: int, Greater than 0
|
|
|
:return: status: State return value, See detail in GxStatusList
|
|
|
enum_value: Get the current enumeration value
|
|
|
"""
|
|
|
handle_c = c_void_p()
|
|
|
handle_c.value = handle
|
|
|
feature_id_c = c_int()
|
|
|
feature_id_c.value = feature_id
|
|
|
|
|
|
enum_value = c_int64()
|
|
|
status = dll.GXGetEnum(handle_c, feature_id_c, byref(enum_value))
|
|
|
|
|
|
return status, enum_value.value
|
|
|
|
|
|
|
|
|
if hasattr(dll, 'GXSetEnum'):
|
|
|
def gx_set_enum(handle, feature_id, enum_value):
|
|
|
"""
|
|
|
:brief Set the enumeration value
|
|
|
:param handle: The handle of the device
|
|
|
Type: Long, Greater than 0
|
|
|
:param feature_id: The feature code ID
|
|
|
Type: int, Greater than 0
|
|
|
:param enum_value: Set the enumeration value
|
|
|
Type: int
|
|
|
:return: status: State return value, See detail in GxStatusList
|
|
|
"""
|
|
|
handle_c = c_void_p()
|
|
|
handle_c.value = handle
|
|
|
|
|
|
feature_id_c = c_int()
|
|
|
feature_id_c.value = feature_id
|
|
|
|
|
|
value_c = c_int64()
|
|
|
value_c.value = enum_value
|
|
|
|
|
|
status = dll.GXSetEnum(handle_c, feature_id_c, value_c)
|
|
|
return status
|
|
|
|
|
|
|
|
|
if hasattr(dll, 'GXGetBool'):
|
|
|
def gx_get_bool(handle, feature_id):
|
|
|
"""
|
|
|
:brief Get the value of bool type
|
|
|
:param handle: The handle of the device
|
|
|
Type: Long, Greater than 0
|
|
|
:param feature_id: The feature code ID
|
|
|
Type: int, Greater than 0
|
|
|
:return: status: State return value, See detail in GxStatusList
|
|
|
boot_value: the value of bool type
|
|
|
"""
|
|
|
handle_c = c_void_p()
|
|
|
handle_c.value = handle
|
|
|
|
|
|
feature_id_c = c_int()
|
|
|
feature_id_c.value = feature_id
|
|
|
|
|
|
boot_value = c_bool()
|
|
|
status = dll.GXGetBool(handle_c, feature_id_c, byref(boot_value))
|
|
|
return status, boot_value.value
|
|
|
|
|
|
|
|
|
if hasattr(dll, 'GXSetBool'):
|
|
|
def gx_set_bool(handle, feature_id, bool_value):
|
|
|
"""
|
|
|
:brief Set the value of bool type
|
|
|
:param handle: The handle of the device
|
|
|
Type: Long, Greater than 0
|
|
|
:param feature_id: The feature code ID
|
|
|
Type: int, Greater than 0
|
|
|
:param bool_value: The bool value that the user will set
|
|
|
Type: Bool
|
|
|
:return: status: State return value, See detail in GxStatusList
|
|
|
"""
|
|
|
handle_c = c_void_p()
|
|
|
handle_c.value = handle
|
|
|
|
|
|
feature_id_c = c_int()
|
|
|
feature_id_c.value = feature_id
|
|
|
|
|
|
value_c = c_bool()
|
|
|
value_c.value = bool_value
|
|
|
|
|
|
status = dll.GXSetBool(handle_c, feature_id_c, value_c)
|
|
|
return status
|
|
|
|
|
|
|
|
|
if hasattr(dll, 'GXGetStringLength'):
|
|
|
def gx_get_string_length(handle, feature_id):
|
|
|
"""
|
|
|
:brief Get the current value length of the character string type. Unit: byte
|
|
|
:param handle: The handle of the device
|
|
|
Type: Long, Greater than 0
|
|
|
:param feature_id: The feature code ID
|
|
|
Type: int, Greater than 0
|
|
|
:return: status: State return value, See detail in GxStatusList
|
|
|
string_length: the current value length of the character string type
|
|
|
"""
|
|
|
handle_c = c_void_p()
|
|
|
handle_c.value = handle
|
|
|
|
|
|
feature_id_c = c_int()
|
|
|
feature_id_c.value = feature_id
|
|
|
|
|
|
string_length = c_size_t()
|
|
|
status = dll.GXGetStringLength(handle_c, feature_id_c, byref(string_length))
|
|
|
|
|
|
return status, string_length.value - 1
|
|
|
|
|
|
|
|
|
if hasattr(dll, 'GXGetStringMaxLength'):
|
|
|
def gx_get_string_max_length(handle, feature_id):
|
|
|
"""
|
|
|
:brief Get the maximum length of the string type value, Unit: byte
|
|
|
:param handle: The handle of the device
|
|
|
Type: Long, Greater than 0
|
|
|
:param feature_id: The feature code ID
|
|
|
Type: int, Greater than 0
|
|
|
:return: status: State return value, See detail in GxStatusList
|
|
|
string_max_length: the maximum length of the string type value
|
|
|
"""
|
|
|
handle_c = c_void_p()
|
|
|
handle_c.value = handle
|
|
|
|
|
|
feature_id_c = c_int()
|
|
|
feature_id_c.value = feature_id
|
|
|
|
|
|
string_max_length = c_size_t()
|
|
|
status = dll.GXGetStringMaxLength(handle_c, feature_id, byref(string_max_length))
|
|
|
|
|
|
return status, string_max_length.value - 1
|
|
|
|
|
|
|
|
|
if hasattr(dll, 'GXGetString'):
|
|
|
def gx_get_string(handle, feature_id):
|
|
|
"""
|
|
|
:brief Get the content of the string type value
|
|
|
:param handle: The handle of the device
|
|
|
Type: Long, Greater than 0
|
|
|
:param feature_id: The feature code ID
|
|
|
Type: int, Greater than 0
|
|
|
:return: status: State return value, See detail in GxStatusList
|
|
|
"""
|
|
|
handle_c = c_void_p()
|
|
|
handle_c.value = handle
|
|
|
|
|
|
feature_id_c = c_int()
|
|
|
feature_id_c.value = feature_id
|
|
|
|
|
|
size_c = c_size_t()
|
|
|
status = dll.GXGetString(handle_c, feature_id_c, None, byref(size_c))
|
|
|
|
|
|
content_c = create_string_buffer(size_c.value)
|
|
|
status = dll.GXGetString(handle_c, feature_id_c, byref(content_c), byref(size_c))
|
|
|
|
|
|
content = string_at(content_c, size_c.value-1)
|
|
|
return status, string_decoding(content)
|
|
|
|
|
|
|
|
|
if hasattr(dll, 'GXSetString'):
|
|
|
def gx_set_string(handle, feature_id, content):
|
|
|
"""
|
|
|
:brief Set the content of the string value
|
|
|
:param handle: The handle of the device
|
|
|
Type: Long, Greater than 0
|
|
|
:param feature_id: The feature code ID
|
|
|
Type: int, Greater than 0
|
|
|
:param content: The string will be setting(str)
|
|
|
Type: str
|
|
|
:return: status: State return value, See detail in GxStatusList
|
|
|
"""
|
|
|
handle_c = c_void_p()
|
|
|
handle_c.value = handle
|
|
|
|
|
|
feature_id_c = c_int()
|
|
|
feature_id_c.value = feature_id
|
|
|
|
|
|
content_c = create_string_buffer(string_encoding(content))
|
|
|
|
|
|
status = dll.GXSetString(handle_c, feature_id_c, byref(content_c))
|
|
|
return status
|
|
|
|
|
|
|
|
|
if hasattr(dll, 'GXGetBufferLength'):
|
|
|
def gx_get_buffer_length(handle, feature_id):
|
|
|
"""
|
|
|
:brief Get the length of the chunk data and the unit is byte,
|
|
|
the user can apply the buffer based on the length obtained,
|
|
|
and then call the gx_get_buffer to get the chunk data.
|
|
|
:param handle: The handle of the device
|
|
|
Type: Long, Greater than 0
|
|
|
:param feature_id: The feature code ID
|
|
|
Type: int, Greater than 0
|
|
|
:return: status: State return value, See detail in GxStatusList
|
|
|
buff_length: Buff length, Unit: byte
|
|
|
"""
|
|
|
handle_c = c_void_p()
|
|
|
handle_c.value = handle
|
|
|
|
|
|
feature_id_c = c_int()
|
|
|
feature_id_c.value = feature_id
|
|
|
|
|
|
buff_length = c_size_t()
|
|
|
status = dll.GXGetBufferLength(handle_c, feature_id_c, byref(buff_length))
|
|
|
return status, buff_length.value
|
|
|
|
|
|
|
|
|
if hasattr(dll, 'GXGetBuffer'):
|
|
|
def gx_get_buffer(handle, feature_id):
|
|
|
"""
|
|
|
:brief Get the chunk data
|
|
|
:param handle: The handle of the device
|
|
|
Type: Long, Greater than 0
|
|
|
:param feature_id: The feature code ID
|
|
|
Type: int, Greater than 0
|
|
|
:return: status: State return value, See detail in GxStatusList
|
|
|
buff: chunk data
|
|
|
"""
|
|
|
handle_c = c_void_p()
|
|
|
handle_c.value = handle
|
|
|
|
|
|
feature_id_c = c_int()
|
|
|
feature_id_c.value = feature_id
|
|
|
|
|
|
buff_length_c = c_size_t()
|
|
|
status = dll.GXGetBuffer(handle_c, feature_id_c, None, byref(buff_length_c))
|
|
|
|
|
|
buff_c = (c_ubyte * buff_length_c.value)()
|
|
|
status = dll.GXGetBuffer(handle_c, feature_id_c, byref(buff_c), byref(buff_length_c))
|
|
|
return status, buff_c
|
|
|
|
|
|
|
|
|
if hasattr(dll, 'GXSetBuffer'):
|
|
|
def gx_set_buffer(handle, feature_id, buff, buff_size):
|
|
|
"""
|
|
|
:brief Set the chunk data
|
|
|
:param handle: The handle of the device
|
|
|
:param feature_id: The feature code ID
|
|
|
Type: long, Greater than 0
|
|
|
:param buff: chunk data buff
|
|
|
Type: Ctype array
|
|
|
:param buff_size: chunk data buff size
|
|
|
Type: int, Greater than 0
|
|
|
:return: status: State return value, See detail in GxStatusList
|
|
|
"""
|
|
|
|
|
|
handle_c = c_void_p()
|
|
|
handle_c.value = handle
|
|
|
|
|
|
feature_id_c = c_int()
|
|
|
feature_id_c.value = feature_id
|
|
|
|
|
|
buff_size_c = c_size_t()
|
|
|
buff_size_c.value = buff_size
|
|
|
|
|
|
status = dll.GXSetBuffer(handle_c, feature_id_c, buff, buff_size_c)
|
|
|
return status
|
|
|
|
|
|
|
|
|
if hasattr(dll, 'GXSendCommand'):
|
|
|
def gx_send_command(handle, feature_id):
|
|
|
"""
|
|
|
:brief Send the command
|
|
|
:param handle: The handle of the device
|
|
|
Type: long, Greater than 0
|
|
|
:param feature_id: The feature code ID.
|
|
|
Type: int, Greater than 0
|
|
|
:return: status: State return value, See detail in GxStatusList
|
|
|
"""
|
|
|
handle_c = c_void_p()
|
|
|
handle_c.value = handle
|
|
|
|
|
|
feature_id_c = c_int()
|
|
|
feature_id_c.value = feature_id
|
|
|
|
|
|
status = dll.GXSendCommand(handle_c, feature_id_c)
|
|
|
return status
|
|
|
|
|
|
|
|
|
CAP_CALL = CFUNCTYPE(None, POINTER(GxFrameCallbackParam))
|
|
|
if hasattr(dll, 'GXRegisterCaptureCallback'):
|
|
|
def gx_register_capture_callback(handle, cap_call):
|
|
|
"""
|
|
|
:brief Register the capture callback function
|
|
|
:param handle: The handle of the device
|
|
|
:param cap_call: The callback function that the user will register(@ CAP_CALL)
|
|
|
:return: status: State return value, See detail in GxStatusList
|
|
|
"""
|
|
|
handle_c = c_void_p()
|
|
|
handle_c.value = handle
|
|
|
|
|
|
status = dll.GXRegisterCaptureCallback(handle_c, None, cap_call)
|
|
|
return status
|
|
|
|
|
|
|
|
|
if hasattr(dll, 'GXUnregisterCaptureCallback'):
|
|
|
def gx_unregister_capture_callback(handle):
|
|
|
"""
|
|
|
:brief Unregister the capture callback function
|
|
|
:param handle: The handle of the device
|
|
|
:return: status: State return value, See detail in GxStatusList
|
|
|
"""
|
|
|
handle_c = c_void_p()
|
|
|
handle_c.value = handle
|
|
|
|
|
|
status = dll.GXUnregisterCaptureCallback(handle_c)
|
|
|
return status
|
|
|
|
|
|
|
|
|
if hasattr(dll, 'GXGetImage'):
|
|
|
def gx_get_image(handle, frame_data, time_out=200):
|
|
|
"""
|
|
|
:brief After starting acquisition, you can call this function to get images directly.
|
|
|
Noting that the interface can not be mixed with the callback capture mode.
|
|
|
:param handle: The handle of the device
|
|
|
Type: Long, Greater than 0
|
|
|
:param frame_data: [out]User introduced to receive the image data
|
|
|
Type: GxFrameData
|
|
|
:param time_out: The timeout time of capture image.(unit: ms)
|
|
|
Type: int, minnum: 0
|
|
|
:return: status: State return value, See detail in GxStatusList
|
|
|
"""
|
|
|
handle_c = c_void_p()
|
|
|
handle_c.value = handle
|
|
|
|
|
|
time_out_c = c_uint()
|
|
|
time_out_c.value = time_out
|
|
|
|
|
|
status = dll.GXGetImage(handle_c, byref(frame_data), time_out_c)
|
|
|
return status
|
|
|
|
|
|
if hasattr(dll, "GXDQBuf"):
|
|
|
def gx_dq_buf(handle, pp_frame_buffer, time_out = 200):
|
|
|
"""
|
|
|
:brief After starting acquisition, you can call this function to get images directly.
|
|
|
Noting that the interface can not be mixed with the callback capture mode.
|
|
|
:param handle: The handle of the device
|
|
|
Type: Long, Greater than 0
|
|
|
:param pp_frame_buffer:[out]User introduced to receive the image data
|
|
|
Type: Secondary pointer
|
|
|
:param time_out: The timeout time of capture image.(unit: ms)
|
|
|
Type: int, minnum: 0
|
|
|
:return: status: State return value, See detail in GxStatusList
|
|
|
"""
|
|
|
handle_c = c_void_p()
|
|
|
handle_c.value = handle
|
|
|
|
|
|
time_out_c = c_uint()
|
|
|
time_out_c.value = time_out
|
|
|
|
|
|
dll.GXDQBuf.argtypes = [c_void_p, ctypes.POINTER(ctypes.POINTER(GxFrameBuffer)), c_uint]
|
|
|
dll.GXDQBuf.restype = c_int
|
|
|
|
|
|
status = dll.GXDQBuf(handle_c, pp_frame_buffer, time_out_c)
|
|
|
return status
|
|
|
|
|
|
if hasattr(dll, "GXQBuf"):
|
|
|
def gx_q_buf(handle, p_frame_buffer):
|
|
|
"""
|
|
|
:brief Call this interface to return after using the cache
|
|
|
:param handle: The handle of the device
|
|
|
Type: Long, Greater than 0
|
|
|
:param p_frame_buffer: [out]User introduced to receive the image data
|
|
|
Type: First level pointer
|
|
|
:return: status: State return value, See detail in GxStatusList
|
|
|
"""
|
|
|
handle_c = c_void_p()
|
|
|
handle_c.value = handle
|
|
|
|
|
|
dll.GXQBuf.argtypes = [c_void_p, ctypes.POINTER(GxFrameBuffer)]
|
|
|
dll.GXQBuf.restype = c_int
|
|
|
|
|
|
status = dll.GXQBuf(handle_c, p_frame_buffer)
|
|
|
return status
|
|
|
|
|
|
if hasattr(dll, 'GXFlushQueue'):
|
|
|
def gx_flush_queue(handle):
|
|
|
"""
|
|
|
:brief Empty the cache image in the image output queue.
|
|
|
:param handle: The handle of the device
|
|
|
Type: Long, Greater than 0
|
|
|
:return: status: State return value, See detail in GxStatusList
|
|
|
"""
|
|
|
handle_c = c_void_p()
|
|
|
handle_c.value = handle
|
|
|
|
|
|
status = dll.GXFlushQueue(handle_c)
|
|
|
return status
|
|
|
|
|
|
|
|
|
OFF_LINE_CALL = CFUNCTYPE(None, c_void_p)
|
|
|
if hasattr(dll, 'GXRegisterDeviceOfflineCallback'):
|
|
|
def gx_register_device_offline_callback(handle, call_back):
|
|
|
"""
|
|
|
:brief At present, the mercury GIGE camera provides the device offline notification event mechanism,
|
|
|
the user can call this interface to register the event handle callback function
|
|
|
:param handle: The handle of the device
|
|
|
:param call_back: The user event handle callback function(@ OFF_LINE_CALL)
|
|
|
:return: status: State return value, See detail in GxStatusList
|
|
|
call_back_handle: The handle of offline callback function
|
|
|
the handle is used for unregistering the callback function
|
|
|
"""
|
|
|
handle_c = c_void_p()
|
|
|
handle_c.value = handle
|
|
|
|
|
|
call_back_handle = c_void_p()
|
|
|
|
|
|
status = dll.GXRegisterDeviceOfflineCallback(handle_c, None, call_back, byref(call_back_handle))
|
|
|
return status, call_back_handle.value
|
|
|
|
|
|
|
|
|
if hasattr(dll, 'GXUnregisterDeviceOfflineCallback'):
|
|
|
def gx_unregister_device_offline_callback(handle, call_back_handle):
|
|
|
"""
|
|
|
:brief Unregister event handle callback function
|
|
|
:param handle: The handle of the device
|
|
|
:param call_back_handle: The handle of device offline callback function
|
|
|
:return: status: State return value, See detail in GxStatusList
|
|
|
"""
|
|
|
handle_c = c_void_p()
|
|
|
handle_c.value = handle
|
|
|
|
|
|
call_back_handle_c = c_void_p()
|
|
|
call_back_handle_c.value = call_back_handle
|
|
|
|
|
|
status = dll.GXUnregisterDeviceOfflineCallback(handle_c, call_back_handle_c)
|
|
|
return status
|
|
|
|
|
|
|
|
|
|
|
|
if hasattr(dll, 'GXFlushEvent'):
|
|
|
def gx_flush_event(handle):
|
|
|
"""
|
|
|
:brief Empty the device event, such as the frame exposure to end the event data queue
|
|
|
:param handle: The handle of the device
|
|
|
:return: status: State return value, See detail in GxStatusList
|
|
|
"""
|
|
|
handle_c = c_void_p()
|
|
|
handle_c.value = handle
|
|
|
|
|
|
status = dll.GXFlushEvent(handle_c)
|
|
|
return status
|
|
|
|
|
|
|
|
|
if hasattr(dll, 'GXGetEventNumInQueue'):
|
|
|
def gx_get_event_num_in_queue(handle):
|
|
|
"""
|
|
|
:brief Get the number of the events in the current remote device event queue cache.
|
|
|
:param handle: The handle of the device
|
|
|
:return: status: State return value, See detail in GxStatusList
|
|
|
event_num: event number.
|
|
|
"""
|
|
|
handle_c = c_void_p()
|
|
|
handle_c.value = handle
|
|
|
|
|
|
event_num = c_uint()
|
|
|
|
|
|
status = dll.GXGetEventNumInQueue(handle_c, byref(event_num))
|
|
|
return status, event_num.value
|
|
|
|
|
|
|
|
|
FEATURE_CALL = CFUNCTYPE(None, c_uint, py_object)
|
|
|
if hasattr(dll, 'GXRegisterFeatureCallback'):
|
|
|
def gx_register_feature_callback(handle, call_back, feature_id, args):
|
|
|
"""
|
|
|
:brief Register device attribute update callback function.
|
|
|
When the current value of the device property has updated, or the accessible property is changed,
|
|
|
call this callback function.
|
|
|
:param handle: The handle of the device
|
|
|
:param call_back: The user event handle callback function(@ FEATURE_CALL)
|
|
|
:param feature_id: The feature code ID
|
|
|
:return: status: State return value, See detail in GxStatusList
|
|
|
call_back_handle: The handle of property update callback function,
|
|
|
to unregister the callback function.
|
|
|
"""
|
|
|
handle_c = c_void_p()
|
|
|
handle_c.value = handle
|
|
|
|
|
|
feature_id_c = c_int()
|
|
|
feature_id_c.value = feature_id
|
|
|
|
|
|
call_back_handle = c_void_p()
|
|
|
status = dll.GXRegisterFeatureCallback(handle_c, ctypes.py_object(args), call_back, feature_id_c, byref(call_back_handle))
|
|
|
|
|
|
return status, call_back_handle.value
|
|
|
|
|
|
|
|
|
if hasattr(dll, 'GXUnregisterFeatureCallback'):
|
|
|
"""
|
|
|
"""
|
|
|
def gx_unregister_feature_callback(handle, feature_id, call_back_handle):
|
|
|
"""
|
|
|
:brief Unregister device attribute update callback function
|
|
|
:param handle: The handle of the device
|
|
|
:param feature_id: The feature code ID
|
|
|
:param call_back_handle: Handle of property update callback function
|
|
|
:return: status: State return value, See detail in GxStatusList
|
|
|
"""
|
|
|
handle_c = c_void_p()
|
|
|
handle_c.value = handle
|
|
|
|
|
|
feature_id_c = c_int()
|
|
|
feature_id_c.value = feature_id
|
|
|
|
|
|
call_back_handle_c = c_void_p()
|
|
|
call_back_handle_c.value = call_back_handle
|
|
|
|
|
|
status = dll.GXUnregisterFeatureCallback(handle_c, feature_id_c, call_back_handle_c)
|
|
|
return status
|
|
|
|
|
|
if hasattr(dll, 'GXExportConfigFile'):
|
|
|
def gx_export_config_file(handle, file_path):
|
|
|
"""
|
|
|
:brief Export the current parameter of the camera to the configuration file.
|
|
|
:param handle: The handle of the device
|
|
|
Type: Long, Greater than 0
|
|
|
:param file_path: The path of the configuration file that to be generated
|
|
|
Type: str
|
|
|
:return: status: State return value, See detail in GxStatusList
|
|
|
"""
|
|
|
handle_c = c_void_p()
|
|
|
handle_c.value = handle
|
|
|
|
|
|
file_path_c = create_string_buffer(string_encoding(file_path))
|
|
|
status = dll.GXExportConfigFile(handle_c, byref(file_path_c))
|
|
|
|
|
|
return status
|
|
|
|
|
|
|
|
|
if hasattr(dll, 'GXImportConfigFile'):
|
|
|
def gx_import_config_file(handle, file_path, verify):
|
|
|
"""
|
|
|
:brief Import the configuration file for the camera
|
|
|
:param handle: The handle of the device
|
|
|
Type: Long, Greater than 0
|
|
|
:param file_path: The path of the configuration file(str)
|
|
|
Type: str
|
|
|
:param verify: If this value is true, all imported values will be read out
|
|
|
to check whether they are consistent.
|
|
|
:return: status: State return value, See detail in GxStatusList
|
|
|
"""
|
|
|
handle_c = c_void_p()
|
|
|
handle_c.value = handle
|
|
|
|
|
|
verify_c = c_bool()
|
|
|
verify_c.value = verify
|
|
|
|
|
|
file_path_c = create_string_buffer(string_encoding(file_path))
|
|
|
status = dll.GXImportConfigFile(handle_c, byref(file_path_c), verify_c)
|
|
|
return status
|
|
|
|
|
|
|
|
|
if hasattr(dll, 'GXReadRemoteDevicePort'):
|
|
|
def gx_read_remote_device_port(handle, address, buff, size):
|
|
|
"""
|
|
|
:brief Read data for user specified register.
|
|
|
:param handle: The handle of the device
|
|
|
:param address: Register address
|
|
|
:param buff: Output data buff
|
|
|
:param size: Buff size
|
|
|
:return: status: State return value, See detail in GxStatusList
|
|
|
size: Returns the length of the actual read register
|
|
|
"""
|
|
|
handle_c = c_void_p()
|
|
|
handle_c.value = handle
|
|
|
|
|
|
address_c = c_ulonglong()
|
|
|
address_c.value = address
|
|
|
|
|
|
size_c = c_uint()
|
|
|
size_c.value = size
|
|
|
|
|
|
status = dll.GXReadRemoteDevicePort(handle_c, address_c, byref(buff), byref(size_c))
|
|
|
return status, buff
|
|
|
|
|
|
|
|
|
if hasattr(dll, 'GXWriteRemoteDevicePort'):
|
|
|
def gx_write_remote_device_port(handle, address, buff, size):
|
|
|
"""
|
|
|
:brief Writes user specified data to a user specified register.
|
|
|
:param handle: The handle of the device
|
|
|
:param address: Register address
|
|
|
:param buff: User data
|
|
|
:param size: User data size
|
|
|
:return: status: State return value, See detail in GxStatusList
|
|
|
size: Returns the length of the actual write register
|
|
|
"""
|
|
|
handle_c = c_void_p()
|
|
|
handle_c.value = handle
|
|
|
|
|
|
address_c = c_ulonglong()
|
|
|
address_c.value = address
|
|
|
|
|
|
size_c = c_uint()
|
|
|
size_c.value = size
|
|
|
|
|
|
buff_c = c_int()
|
|
|
buff_c.value = buff
|
|
|
|
|
|
status = dll.GXWriteRemoteDevicePort(handle_c, address_c, byref(buff_c), byref(size_c))
|
|
|
return status, size_c.value
|
|
|
|
|
|
|
|
|
if hasattr(dll, 'GXGigEIpConfiguration'):
|
|
|
def gx_gige_ip_configuration(mac_address, ipconfig_flag, ip_address, subnet_mask, default_gateway, user_id):
|
|
|
"""
|
|
|
"brief Configure the static IP address of the camera
|
|
|
:param mac_address: The MAC address of the device(str)
|
|
|
:param ipconfig_flag: IP Configuration mode(GxIPConfigureModeList)
|
|
|
:param ip_address: The IP address to be set(str)
|
|
|
:param subnet_mask: The subnet mask to be set(str)
|
|
|
:param default_gateway: The default gateway to be set(str)
|
|
|
:param user_id: The user-defined name to be set(str)
|
|
|
:return: status: State return value, See detail in GxStatusList
|
|
|
"""
|
|
|
mac_address_c = create_string_buffer(string_encoding(mac_address))
|
|
|
ip_address_c = create_string_buffer(string_encoding(ip_address))
|
|
|
subnet_mask_c = create_string_buffer(string_encoding(subnet_mask))
|
|
|
default_gateway_c = create_string_buffer(string_encoding(default_gateway))
|
|
|
user_id_c = create_string_buffer(string_encoding(user_id))
|
|
|
|
|
|
status = dll.GXGigEIpConfiguration(mac_address_c, ipconfig_flag,
|
|
|
ip_address_c, subnet_mask_c,
|
|
|
default_gateway_c, user_id_c)
|
|
|
return status
|
|
|
|
|
|
|
|
|
if hasattr(dll, 'GXGigEForceIp'):
|
|
|
def gx_gige_force_ip(mac_address, ip_address, subnet_mask, default_gate_way):
|
|
|
"""
|
|
|
:brief Execute the Force IP
|
|
|
:param mac_address: The MAC address of the device(str)
|
|
|
:param ip_address: The IP address to be set(str)
|
|
|
:param subnet_mask: The subnet mask to be set(str)
|
|
|
:param default_gate_way: The default gateway to be set(str)
|
|
|
:return: status: State return value, See detail in GxStatusList
|
|
|
"""
|
|
|
mac_address_c = create_string_buffer(string_encoding(mac_address))
|
|
|
ip_address_c = create_string_buffer(string_encoding(ip_address))
|
|
|
subnet_mask_c = create_string_buffer(string_encoding(subnet_mask))
|
|
|
default_gate_way_c = create_string_buffer(string_encoding(default_gate_way))
|
|
|
|
|
|
status = dll.GXGigEForceIp(mac_address_c, ip_address_c, subnet_mask_c, default_gate_way_c)
|
|
|
return status
|
|
|
|
|
|
|
|
|
if hasattr(dll, 'GXGigEResetDevice'):
|
|
|
def gx_gige_reset_device(mac_address, reset_device_mode):
|
|
|
"""
|
|
|
:brief Reconnection/Reset
|
|
|
:param mac_address: The MAC address of the device(str)
|
|
|
:param reset_device_mode: Reconnection mode, refer to GxResetDeviceModeEntry
|
|
|
:return: status: State return value, See detail in GxStatusList
|
|
|
"""
|
|
|
mac_address_c = create_string_buffer(string_encoding(mac_address))
|
|
|
reset_device_mode_c = c_uint()
|
|
|
reset_device_mode_c.value = reset_device_mode
|
|
|
|
|
|
status = dll.GXGigEResetDevice(mac_address_c, reset_device_mode_c)
|
|
|
return status
|
|
|
|
|
|
|
|
|
if hasattr(dll, 'GXSetAcqusitionBufferNumber'):
|
|
|
def gx_set_acquisition_buffer_number(handle, buffer_num):
|
|
|
"""
|
|
|
:brief Users Set Acquisition buffer Number
|
|
|
:param handle: The handle of the device
|
|
|
Type: Long, Greater than 0
|
|
|
:param buffer_num: Acquisition buffer Number
|
|
|
Type: int, Greater than 0
|
|
|
:return: status: State return value, See detail in GxStatusList
|
|
|
"""
|
|
|
handle_c = c_void_p()
|
|
|
handle_c.value = handle
|
|
|
|
|
|
buffer_num_c = c_uint64()
|
|
|
buffer_num_c.value = buffer_num
|
|
|
|
|
|
status = dll.GXSetAcqusitionBufferNumber(handle_c, buffer_num_c)
|
|
|
return status
|
|
|
|
|
|
if hasattr(dll,'GXReadRemoteDevicePortStacked'):
|
|
|
def gx_set_read_remote_device_port_stacked(handle, entries, size):
|
|
|
"""
|
|
|
:brief Batch reads the value of the user-specified register (Registers with command values of 4 bytes only)
|
|
|
:entries [in]Batch read register addresses and values
|
|
|
[out]Read the data to the corresponding register
|
|
|
:size [in]Read the number of device registers
|
|
|
[out]The number of registers that were successfully read
|
|
|
:return: status: State return value, See detail in GxStatusList
|
|
|
"""
|
|
|
handle_c = c_void_p()
|
|
|
handle_c.value = handle
|
|
|
|
|
|
size_c = c_uint()
|
|
|
size_c.value = size
|
|
|
|
|
|
status = dll.GXReadRemoteDevicePortStacked(handle_c, entries, byref(size_c))
|
|
|
return status
|
|
|
|
|
|
|
|
|
if hasattr(dll,'GXWriteRemoteDevicePortStacked'):
|
|
|
def gx_set_write_remote_device_port_stacked(handle, entries, size):
|
|
|
"""
|
|
|
:brief Batch reads the value of the user-specified register (Registers with command values of 4 bytes only)
|
|
|
:entries [in]The address and value of the batch write register
|
|
|
:size [in]Sets the number of device registers
|
|
|
[out]The number of registers that were successfully written
|
|
|
:return: status: State return value, See detail in GxStatusList
|
|
|
"""
|
|
|
handle_c = c_void_p()
|
|
|
handle_c.value = handle
|
|
|
|
|
|
size_c = c_uint()
|
|
|
size_c.value = size
|
|
|
|
|
|
status = dll.GXWriteRemoteDevicePortStacked(handle_c, entries, byref(size_c))
|
|
|
return status
|
|
|
|
|
|
'''
|
|
|
if hasattr(dll, 'GXStreamOn'):
|
|
|
def gx_stream_on(handle):
|
|
|
"""
|
|
|
:brief Start acquisition
|
|
|
:param handle: The handle of the device
|
|
|
:return: status: State return value, See detail in GxStatusList
|
|
|
"""
|
|
|
handle_c = c_void_p()
|
|
|
handle_c.value = handle
|
|
|
|
|
|
status = dll.GXStreamOn(handle_c)
|
|
|
return status
|
|
|
|
|
|
|
|
|
if hasattr(dll, 'GXDQBuf'):
|
|
|
def gx_dequeue_buf(handle, time_out):
|
|
|
"""
|
|
|
:brief Get a image
|
|
|
After the image processing is completed, the gx_queue_buf interface needs to be called
|
|
|
otherwise the collection will not be able to continue.
|
|
|
:param handle: The handle of the device
|
|
|
:param time_out: The timeout time of capture image.(unit: ms)
|
|
|
:return: status: State return value, See detail in GxStatusList
|
|
|
frame_data: Image data
|
|
|
frame_data_p: Image buff address
|
|
|
"""
|
|
|
handle_c = c_void_p()
|
|
|
handle_c.value = handle
|
|
|
|
|
|
time_out_c = c_uint()
|
|
|
time_out_c.value = time_out
|
|
|
|
|
|
frame_data_p = c_void_p()
|
|
|
status = dll.GXDQBuf(handle_c, byref(frame_data_p), time_out_c)
|
|
|
|
|
|
frame_data = GxFrameData()
|
|
|
memmove(addressof(frame_data), frame_data_p.value, sizeof(frame_data))
|
|
|
return status, frame_data, frame_data_p.value
|
|
|
|
|
|
|
|
|
if hasattr(dll, 'GXQBuf'):
|
|
|
def gx_queue_buf(handle, frame_data_p):
|
|
|
"""
|
|
|
:brief Put an image Buff back to the GxIAPI library and continue to be used for collection.
|
|
|
:param handle: The handle of the device
|
|
|
:param frame_data_p: Image buff address
|
|
|
:return: status: State return value, See detail in GxStatusList
|
|
|
"""
|
|
|
handle_c = c_void_p()
|
|
|
handle_c.value = handle
|
|
|
|
|
|
frame_data_p_p = c_void_p()
|
|
|
frame_data_p_p.value = frame_data_p
|
|
|
|
|
|
status = dll.GXQBuf(handle_c, frame_data_p_p)
|
|
|
return status
|
|
|
|
|
|
|
|
|
if hasattr(dll, 'GXDQAllBufs'):
|
|
|
def gx_dequeue_all_bufs(handle, buff_num, time_out):
|
|
|
"""
|
|
|
:brief Get images
|
|
|
After the image processing is completed, the gx_queue_all_bufs interface needs to be called
|
|
|
otherwise the collection will not be able to continue.
|
|
|
:param handle: The handle of the device
|
|
|
:param buff_num: The number of images expected to be obtained
|
|
|
:param time_out: The timeout time of capture image.(unit: ms)
|
|
|
:return: status: State return value, See detail in GxStatusList
|
|
|
frame_data: Image data arrays
|
|
|
frame_count: The number of images that are actually returned
|
|
|
"""
|
|
|
handle_c = c_void_p()
|
|
|
handle_c.value = handle
|
|
|
|
|
|
time_out_c = c_uint()
|
|
|
time_out_c.value = time_out
|
|
|
|
|
|
frame_data_p = (c_void_p * buff_num)()
|
|
|
frame_count_c = c_uint()
|
|
|
|
|
|
status = dll.GXDQAllBufs(handle_c, frame_data_p, buff_num, byref(frame_count_c), time_out_c)
|
|
|
frame_data = (GxFrameData * buff_num)()
|
|
|
|
|
|
for i in range(buff_num):
|
|
|
memmove(addressof(frame_data[i]), frame_data_p[i], sizeof(GxFrameData))
|
|
|
|
|
|
return status, frame_data, frame_count_c.value
|
|
|
|
|
|
|
|
|
if hasattr(dll, 'GXQAllBufs'):
|
|
|
def gx_queue_all_bufs(handle):
|
|
|
"""
|
|
|
:brief The image data Buf is returned to the GxIAPI library and used for collection.
|
|
|
:param handle: The handle of the device
|
|
|
:return: status: State return value, See detail in GxStatusList
|
|
|
"""
|
|
|
handle_c = c_void_p()
|
|
|
handle_c.value = handle
|
|
|
|
|
|
status = dll.GXQAllBufs(handle_c)
|
|
|
return status
|
|
|
|
|
|
|
|
|
if hasattr(dll, 'GXStreamOff'):
|
|
|
def gx_stream_off(handle):
|
|
|
"""
|
|
|
:brief Stop acquisition
|
|
|
:param handle: The handle of the device
|
|
|
:return: status: State return value, See detail in GxStatusList
|
|
|
"""
|
|
|
handle_c = c_void_p()
|
|
|
handle_c.value = handle
|
|
|
|
|
|
status = dll.GXStreamOff(handle_c)
|
|
|
return status
|
|
|
'''
|
|
|
|
|
|
def array_decoding(int_array_c):
|
|
|
"""
|
|
|
:breif Python3.X: int array
|
|
|
:param int_array_c : uint_c[]
|
|
|
:return: int_array : python array
|
|
|
"""
|
|
|
int_array = []
|
|
|
for index in range( len( int_array_c)):
|
|
|
int_array.append( int_array_c[index])
|
|
|
return int_array
|
|
|
|
|
|
def string_encoding(string):
|
|
|
"""
|
|
|
:breif Python3.X: String encoded as bytes
|
|
|
:param string
|
|
|
:return:
|
|
|
"""
|
|
|
if sys.version_info.major == 3:
|
|
|
string = string.encode()
|
|
|
return string
|
|
|
|
|
|
|
|
|
def string_decoding(string):
|
|
|
"""
|
|
|
:brief Python3.X: bytes decoded as string
|
|
|
:param string
|
|
|
:return:
|
|
|
"""
|
|
|
if sys.platform == 'linux2' or sys.platform == 'linux':
|
|
|
try:
|
|
|
string = string.decode()
|
|
|
except UnicodeDecodeError:
|
|
|
string = string.decode("gbk")
|
|
|
else:
|
|
|
try:
|
|
|
string = string.decode("gbk")
|
|
|
except UnicodeDecodeError:
|
|
|
string = string.decode()
|
|
|
return string
|
|
|
|
|
|
|
|
|
def range_check(value, min_value, max_value, inc_value=0):
|
|
|
"""
|
|
|
:brief Determine if the input parameter is within range
|
|
|
:param value: input value
|
|
|
:param min_value: max value
|
|
|
:param max_value: min value
|
|
|
:param inc_value: step size, default=0
|
|
|
:return: True/False
|
|
|
"""
|
|
|
if value < min_value:
|
|
|
return False
|
|
|
elif value > max_value:
|
|
|
return False
|
|
|
elif (inc_value != 0) and (value != int(value / inc_value) * inc_value):
|
|
|
return False
|
|
|
return True
|