/** * @file IKapBoard.h * @brief IKapBoard library main header file. * @author iTek OptoElectronics Ltd * @par Copyright (c) iTek OptoElectronics Ltd. * All Rights Reserved * @date 2019:06:11 * @note This file contains the defines necessary to use the IKapBoard "C" user interface. * @version <1.7.0.1> */ /** * @file IKapBoard.h * @brief IKapBoard library main header file. * @author iTek OptoElectronics Ltd * @par Copyright (c) iTek OptoElectronics Ltd. * All Rights Reserved * @date 2018:01:09 * @note This file contains the defines necessary to use the IKapBoard "C" user interface. * @version <1.7.0.1> */ #ifndef _IKAP_BOARD_H #define _IKAP_BOARD_H #if defined(_MSC_VER) || defined(__BORLANDC__) # ifdef IKAPBOARD_EXPORTS # define IKAPBOARDDLL __declspec(dllexport) # else # define IKAPBOARDDLL __declspec(dllimport) # endif # define IKAPBOARD_CC _stdcall # define IKAPBOARD_PACKING 8 #elif defined(__GNUC__) # if __GNC__ >= 4 && defined(IKAPBOARD_EXPORTS) # define IKAPBOARDDLL __attribute__((visibility("default"))) # else # define IKAPBOARDDLL # endif # define IKAPBOARD_CC # define IKAPBOARD_PACKING 8 #else # error Unsupported platform #endif /* Event type */ #define IKEvent_GrabStart (0x00000000) #define IKEvent_FrameReady (0x00000001) #define IKEvent_GrabStop (0x00000002) #define IKEvent_FrameLost (0x00000003) #define IKEvent_TimeOut (0x00000004) #define IKEvent_PixelClock (0x00000005) #define IKEvent_No_PixelClock (0x00000006) #define IKEvent_External_Trigger_Ignored (0x00000007) #define IKEvent_CXP_Over_Current_Protection (0x00000008) #define IKEvent_CXP_CRC_Check_Error (0x00000009) #define IKEvent_CXP_Transfer_Error (0x0000000A) #define IKEvent_Line_Timeout (0x0000000B) #define IKEvent_CXP_Incomplete_Frame (0x0000000C) #define IKEvent_GVB_Incomplete_Frame (0x0000000D) #define IKEvent_GVB_GVSP_CRC_Check_Error (0x0000000E) #define IKEvent_GrabLine (0x00100000) #define IKEvent_GrabLineEnd (0x00200000) #define IKEvent_INPUT_FALLING_EDGE (0x00400000) #define IKEVENT_INPUT_RISING_EDGE (0x00800000) #define IKEvent_Start_Of_Frame (0x01000000) #define IKEvent_End_Of_Frame (0x02000000) #define IKEvent_End_Of_Transfer (0x04000000) /* User defined callback */ typedef void(IKAPBOARD_CC *HookFnPtr)(void *pContext); /* Resource Type */ #define IKBoardUnknown 0xFFFFFFFF #define IKBoardALL 0x00000000 #define IKBoardUSB30 0x00000001 #define IKBoardPCIE 0x00000002 /* Parameter information */ #define IKP_IMAGE_WIDTH (0x10000001) #define IKP_IMAGE_HEIGHT (0x10000002) #define IKP_DATA_FORMAT (0x10000003) #define IKP_BOARD_BIT (0x10000004) #define IKP_TIME_OUT (0x10000005) #define IKP_SCAN_TYPE (0x10000006) #define IKP_FPGA_VERSION (0x10000007) #define IKP_INTERNEL_BUFFER_SIZE (0x10000008) #define IKP_FRAME_SIZE (0x10000009) #define IKP_IMAGE_TYPE (0x1000000a) #define IKP_FRAME_COUNT (0x1000000b) #define IKP_FRAME_TRANSFER_MODE (0x1000000c) #define IKP_FRAME_AUTO_CLEAR (0x1000000d) #define IKP_GRAB_MODE (0x1000000e) #define IKP_FRAME_TIME_STAMP_LOW (0x1000000f) #define IKP_FRAME_TIME_STAMP_HIGH (0x10000010) #define IKP_BLOCK_TIME_STAMP_LOW (0x10000011) #define IKP_BLOCK_TIME_STAMP_HIGH (0x10000012) #define IKP_TAP_NUMBER (0x10000013) #define IKP_TAP_ARRANGEMENT (0x10000014) #define IKP_BAYER_PATTERN (0x10000015) #define IKP_PIXEL_CLOCK (0x10000016) #define IKP_DATA_VALID_ENABLE (0x10000017) #define IKP_CC1_SOURCE (0x10000018) #define IKP_CC2_SOURCE (0x10000019) #define IKP_CC3_SOURCE (0x1000001a) #define IKP_CC4_SOURCE (0x1000001b) #define IKP_BOARD_TRIGGER_MODE (0x1000001c) #define IKP_BOARD_TRIGGER_SOURCE (0x1000001d) #define IKP_GENERAL_INPUT1_SAMPLE_MODE (0x1000001e) #define IKP_GENERAL_INPUT1_PROTECT_MODE (0x1000001f) #define IKP_GENERAL_INPUT1_MINIMUM_INTERVAL (0x10000020) #define IKP_GENERAL_INPUT2_SAMPLE_MODE (0x10000021) #define IKP_GENERAL_INPUT2_PROTECT_MODE (0x10000022) #define IKP_GENERAL_INPUT2_MINIMUM_INTERVAL (0x10000023) #define IKP_SHAFT_ENCODER1_PULSE_DROP (0x10000024) #define IKP_SHAFT_ENCODER1_PROTECT_MODE (0x10000025) #define IKP_SHAFT_ENCODER1_MINIMUM_INTERVAL (0x10000026) #define IKP_INTEGRATION_TRIGGER_SOURCE (0x10000027) #define IKP_INTEGRATION_TRIGGER_FREQUENCY (0x10000028) #define IKP_STROBE_TRIGGER_SOURCE (0x10000029) #define IKP_BOARD_SYNC_OUTPUT1_SOURCE (0x1000002a) #define IKP_BOARD_SYNC_OUTPUT2_SOURCE (0x1000002b) #define IKP_GENERAL_OUTPUT1_SOURCE (0x1000002c) #define IKP_GENERAL_OUTPUT2_SOURCE (0x1000002d) #define IKP_INTEGRATION_METHOD (0x1000002e) #define IKP_INTEGRATION_PARAM1 (0x1000002f) #define IKP_INTEGRATION_PARAM2 (0x10000030) #define IKP_INTEGRATION_PARAM3 (0x10000031) #define IKP_INTEGRATION_PARAM4 (0x10000032) #define IKP_INTEGRATION_POLARITY1 (0x10000033) #define IKP_INTEGRATION_POLARITY2 (0x10000034) #define IKP_STROBE_METHOD (0x10000035) #define IKP_STROBE_PARAM1 (0x10000036) #define IKP_STROBE_PARAM2 (0x10000037) #define IKP_STROBE_PARAM3 (0x10000038) #define IKP_STROBE_PARAM4 (0x10000039) #define IKP_STROBE_POLARITY (0x1000003a) #define IKP_GENERAL_OUTPUT1_POLARITY (0x1000003b) #define IKP_GENERAL_OUTPUT1_DELAY (0x1000003c) #define IKP_GENERAL_OUTPUT2_POLARITY (0x1000003d) #define IKP_GENERAL_OUTPUT2_DELAY (0x1000003e) #define IKP_GENERAL_INPUT1_TRIGGER_MODE (0x1000003f) #define IKP_GENERAL_INPUT2_TRIGGER_MODE (0x10000040) #define IKP_BOARD_SYNC1_TRIGGER_MODE (0x10000041) #define IKP_BOARD_SYNC2_TRIGGER_MODE (0x10000042) #define IKP_SHAFT_ENCODER1_CHANNEL (0x10000043) #define IKP_SHAFT_ENCODER1_MULTIPlY_FACTOR (0x10000044) #define IKP_PCB_VERSION (0x10000045) #define IKP_LVAL_FILTER (0x10000046) #define IKP_FRAME_TRANSFER_PERIOD (0x10000047) #define IKP_LINE_TRANSFER_PERIOD (0x10000048) #define IKP_FPGA_EXTERNAL_TRIGGER_TIMEOUT (0x10000049) #define IKP_IMAGE_OFFSET_X (0x10000050) #define IKP_GENERAL_INPUT1_POLARITY (0x10000051) #define IKP_GENERAL_INPUT1_MIN_WIDTH (0x10000052) #define IKP_GENERAL_INPUT2_POLARITY (0x10000053) #define IKP_GENERAL_INPUT2_MIN_WIDTH (0x10000054) #define IKP_CAMERA_PIXEL_CLOCK (0x10000055) #define IKP_PCIE_KERNAL_BLOCK_SIZE (0x10000056) #define IKP_SOFTWARE_TRIGGER_WIDTH (0x10000057) #define IKP_SOFTWARE_TRIGGER_PERIOD (0x10000058) #define IKP_SOFTWARE_TRIGGER_COUNT (0x10000059) #define IKP_SOFTWARE_TRIGGER_START (0x10000060) #define IKP_SOFTWARE_TRIGGER_DELAY (0x10000061) #define IKP_SFOTWARE_TRIGGER_POLARITY (0x10000062) #define IKP_GRAB_STATUS (0x10000063) #define IKP_CHECK_FRAME_VALID_SIGNAL (0x10000064) #define IKP_PIXEL_CLOCK_POLLING_TIME (0x10000065) #define IKP_SOFTWARE_TRIGGER_SYNC_MODE (0x10000066) #define IKP_HARDWARE_TRIGGER_GENERAL_INPUT1_DELAY (0x10000067) #define IKP_HARDWARE_TRIGGER_GENERAL_INPUT2_DELAY (0x10000068) #define IKP_IMAGE_ROI_X (0x10000069) #define IKP_SHAFT_ENCODER1_MIN_WIDTH (0x10000070) #define IKP_SHAFT_ENCODER1_VALID_DIRECTION (0x10000071) #define IKP_SHAFT_ENCODER1_REVERSE_COMPENSATION (0x10000072) #define IKP_FRAME_SIZE_64_LOW (0x10000073) #define IKP_FRAME_SIZE_64_HIGH (0x10000074) #define IKP_BOARD_TRIGGER_OUTTER_MODE_FRAME_COUNT (0x10000075) #define IKP_SHAFT_ENCODER1_QUAD_FREQUENCY_SOURCE_TYPE (0x10000076) #define IKP_CURRENT_BUFFER_INDEX (0x10000077) /** \~chinese * @brief 多灯频闪个数 * @note 本参数表示多灯频闪个数【RW】。 */ /** \~english * @brief Number of multiple lights * @note This parameter represents the number of multiple lights [RW]. */ #define IKP_MULTIPLE_LIGHT_COUNT (0x1000007D) /** \~chinese * @brief 板间同步信号1最小脉冲宽度 * @note 本参数表示板间同步信号1最小脉冲宽度【RW】。 *
1. 当实际信号的脉冲宽度大于该值认为是有效信号,否则丢弃。 \~english * @brief Minimum pulse width of board synchronous signal1 * @note This parameter represents the minimum pulse width of board synchronous signal1 [RW]. *
1. When pulse width of actual signal is greater than this value, it is considered a valid signal, otherwise it is discarded. */ #define IKP_BOARD_SYNC1_DEBOUNCE (0x10000080) /** \~chinese * @brief 板间同步信号2最小脉冲宽度 * @note 本参数表示板间同步信号2最小脉冲宽度【RW】。 *
1. 当实际信号的脉冲宽度大于该值认为是有效信号,否则丢弃。 \~english * @brief Minimum pulse width of board synchronous signal2 * @note This parameter represents the minimum pulse width of board synchronous signal2 [RW]. *
1. When pulse width of actual signal is greater than this value, it is considered a valid signal, otherwise it is discarded. */ #define IKP_BOARD_SYNC2_DEBOUNCE (0x10000081) /** \~chinese * @brief 采集卡缓冲区chunk最小值 * @note 本参数表示采集卡缓冲区chunk最小值【RW】。 \~english * @brief Minimum value of frame grabber buffer chunk * @note This parameter represents the minimum value of frame grabber buffer chunk [RW]. */ #define IKP_CHUNK_COUNT_MINIMUM (0x10000082) /** \~chinese * @brief 采集卡重叠高度 * @note 本参数表示采集卡重叠高度【RW】。 \~english * @brief Overlapping height of frame grabber * @note This parameter represents overlapping height of frame grabber [RW]. */ #define IKP_OVERLAPPED_HEIGHT (0x10000083) /** \~chinese * @brief 采集卡不定长采图自动清空机制 * @note 本参数表示采集卡不定长采图自动清空机制,适用于CXP/SFP/GVB采集卡【RW】。 \~english * @brief Automatic clearing mechanism of frame grabber for frame active image * @note This parameter represents automatic clearing mechanism of frame grabber for frame active image, which is applicable to CXP/SFP/GVB frame grabbers [RW]. */ #define IKP_FRAME_ACTIVE_AUTO_BLANK (0x10000084) /** \~chinese * @brief 编码器信号倍频系数任意值 * @note 本参数表示编码器信号倍频系数任意值【RW】。 \~english * @brief Encoder signal multiple factor of any value * @note This parameter represents encoder signal multiple factor of any value [RW]. */ #define IKP_SHAFT_ENCODER1_MULTIPlY_FACTOR_ANY (0x10000085) /** \~chinese * @brief CL采集卡all_levels模式下低电平图像高度 * @note 本参数表示CL采集卡all_levels模式下低电平图像高度【RW】。 \~english * @brief Low level image height in all_levels mode of CL frame grabber * @note This parameter represents low level image height in all_levels mode of CL frame grabber [RW]. */ #define IKP_IMAGE_HEIGHT_2ND (0x10000086) /** \~chinese * @brief PFNC标准图像像素格式 * @note 本参数表示采集卡的GenICam PFNC图像像素格式【RW】。 \~english * @brief PFNC image pixel format. * @note This parameter represents the frame grabber PFNC image pixel format [RW]. */ #define IKP_IMAGE_PIXEL_FORMAT_PFNC (0x10000087) /** \~chinese * @brief 图像原始图像宽度 * @note 本参数表示图像的原始图像宽度, 仅在 IKP_ROI_ENABLE 为true时使用【RW】。 \~english * @brief Origin image width * @note This parameter represents origin image width, *
which is only used when IKP_ROI_ENABLE [RW]. */ #define IKP_ORIGIN_IMAGE_WIDTH (0x1000008A) /** \~chinese * @brief ROI使能 * @note 本参数表示ROI是否使能【RW】。 */ /** \~english * @brief ROI ENABLE * @note This parameter represents if roi is enabled [RW]. */ #define IKP_ROI_ENABLE (0x1000008B) /** \~chinese * @brief 多帧融合数量 * @note 本参数表示多帧融合的数量. 如果为1, 则不会进行多帧融合. 【RW】。 \~english * @brief Multi-frame fusion count * @note This parameter represents multi-frame fusion count. [RW]. */ #define IKP_MULTI_FRAME_FUSION_COUNT (0x1000008C) /** \~chinese * @brief DDR空缓冲区大小 * @note 本参数表示当前采集卡空缓冲区的大小(字节). 【RW】。 \~english * @brief The size of empty buffer in the DDR. * @note This parameter represents the Bytes of empty buffer in the DDR. [RW]. */ #define IKP_DDR_EMPTY_BUFFER_SIZE (0x1000008F) /** \~chinese * @brief 使能GPU-Direct-For-Video功能 * @note 使能GPU-Direct-For-Video功能. 【RW】。 \~english * @brief Enable GPU-Direct-For-Video * @note Enable GPU-Direct-For-Video. [RW]. */ #define IKP_ENABLE_GPU_DIRECT_FOR_VIDEO (0x1000008D) /** \~chinese * @brief 分时频闪图像输出模式 * @note 分时频闪图像输出模式. 设置为0的情况下, 输出一个包含多个分时频闪图像的缓冲区. 设置为1的情况下, 输出多个缓冲区分别包含多个分时频闪图像 (不能和 IKP_FRAME_AUTO_CLEAR_VAL_DISABLE 同时使用)【RW】 \~english * @brief Multiple light image output mode. * @note Multiple light image output mode. If set it to 0, output one image contain multiple light images. If set it to 1, output multiple images contain one light image (can not use with IKP_FRAME_AUTO_CLEAR_VAL_DISABLE )[RW]. */ #define IKP_MULTIPLE_LIGHT_OUTPUT_MODE (0x1000008E) /** \~chinese * @brief 采集卡重叠高度模式 * @note 本参数表示采集卡重叠高度模式. 仅适用于CL采集卡. 在该模式为1的时候, 在一个帧信号触发多张图的情况下, 每次帧信号的第一张图不会有重叠的图像【RW】。 */ /** \~english * @brief Overlapped height mode of frame grabber * @note This parameter represents overlapped height mode of frame grabber. Only applicable to CL frame grabbers. When operating in Mode 1, in scenarios where a single frame signal triggers multiple image captures, the first image within each frame signal cycle will not contain overlapping imagery[RW]. */ #define IKP_OVERLAPPED_HEIGHT_MODE (0x1000008F) /** \~chinese * @brief 采集卡拼接的图像数量 * @note 本参数表示采集卡拼接的图像数量, 采集卡会将N张图像(N表示此参数)纵向拼接成一张图像(无算法处理), 仅适用于采集卡的面阵模式. 在此情况下, IKP_IMAGE_HEIGHT 需要设置成相机图像高度的N倍. 当前CL和CXP支持此参数.【RW】。 */ /** \~english * @brief Frame concatenation count * @note This feature performs **vertical image concatenation** (no algorithmic processing). The frame grabber simply joins N camera images vertically in the buffer. Set `IKP_IMAGE_HEIGHT` to (original image height) × N. This setting applies only to the area mode of the frame grabber. CL and CXP(3.5.4 or higher) support this parameter.[RW]. */ #define IKP_FRAME_CONCATENATION_COUNT (0x10000090) /** \~chinese * @brief RGB分离模式 * @note 本参数表示是否开启RGB分离模式, 采集卡会将连续排列的RGB图像转化为平面排列(interleaved->planar). 使用此功能时, 相机需传入RGB图像, 采集卡会输出3倍相机输出图像高度的Mono图像. 当前CXP支持此参数.【RW】。 */ /** \~english * @brief RGB spilt mode * @note This parameter indicates whether to enable the RGB separation mode. * When activated, the frame grabber will convert interleaved RGB images into planar format (interleaved → planar). * When using this function: * The camera must transmit RGB images. * The frame grabber will output Mono images with a height equal to 3 times the original camera output image height. Note: This parameter is currently supported for CXP interfaces.[RW]. */ #define IKP_RGB_SPLIT_MODE (0x10000091) #define IKP_FPGA_SERIAL_NUMBER (0x20000001) #define IKP_PCIE_LINK_STATE (0x20000002) #define IKP_PCIE_SPEED_MISS_REQUIREMENT (0x20000003) #define IKP_PCI_CONFIGURATION (0x20000004) #define IKP_HARDWARE_TRIGGER_GENERAL_INPUT_DELAY_MODE (0x20000005) #define IKP_HARDWARE_TRIGGER_GENERAL_INPUT1_DELAY_IN_LINES (0x20000006) #define IKP_HARDWARE_TRIGGER_GENERAL_INPUT2_DELAY_IN_LINES (0x20000007) #define IKP_EVENT_INPUT_INTERNAL_COUNT (0x20000008) #define IKP_EVENT_INPUT_GENERAL_1_COUNT (0x20000009) #define IKP_EVENT_INPUT_GENERAL_2_COUNT (0x2000000a) #define IKP_EVENT_INPUT_SHAFT_ENCODER_A_COUNT (0x2000000b) #define IKP_EVENT_INPUT_SHAFT_ENCODER_B_COUNT (0x2000000c) #define IKP_EVENT_INPUT_BOARD_SYNC_IN_1_COUNT (0x2000000d) #define IKP_EVENT_INPUT_INTEGRATION_SIG_1_COUNT (0x2000000e) #define IKP_EVENT_INPUT_INTEGRATION_SIG_2_COUNT (0x2000000f) #define IKP_RCV_MORE_DATA_IN_TRIGGER_MODE (0x20000010) #define IKP_DISABLE_IO_EVENT (0x20000011) #define IKP_PUBLIC_VERSION_SUPPORT (0x20000012) #define IKP_SHAFT_ENCODER1_REVERSE_COMPENSATION_LIMIT (0x20000013) #define IKP_SHAFT_ENCODER1_CLOCK_DUTY_COMPENSATION_TYPE (0x20000014) #define IKP_SHAFT_ENCODER1_CLOCK_DUTY_COMPENSATION_WIDTH (0x20000015) #define IKP_CL_VALID_COLUMN (0x20000016) #define IKP_CL_SIGNAL_ENHANCE_MODE (0x20000017) #define IKP_CL_LONG_DISTANCE_TRANSMISSION (0x20000018) #define IKP_FPGA_SERIAL_NUMBER_HIGH (0x20000019) #define IKP_CL_LONG_CABLE_WORKING_MODE (0x20000020) #define IKP_CXP_TEST_IMAGE (0x30000001) #define IKP_CXP_TRIGGER_OUTPUT_SELECTOR (0x30000002) #define IKP_LAST_FRAME_INDEX (0x30000003) #define IKP_CXP_VOLTAGE_SUPPLY_STATUS (0x30000004) #define IKP_CXP_POWER_SWITCH (0x30000005) #define IKP_CXP_POWER_STATUS (0x30000006) #define IKP_CXP_SENSE_CURRENT (0x30000007) #define IKP_CXP_BUS_VOLTAGE (0x30000008) #define IKP_CXP_RESET_OCP (0x30000009) #define IKP_CXP_SENSE_VOLTAGE_HIGH (0x3000000a) #define IKP_CXP_SENSE_VOLTAGE_LOW (0x3000000b) #define IKP_CXP_SUPPLY_VOLTAGE_LOW (0x3000000c) #define IKP_CXP_SUPPLY_CURRENT_LOW (0x3000000d) #define IKP_CXP_FPGA_FRAME_TIMEOUT (0x3000000e) #define IKP_CXP_FPGA_FRAME_TIMEOUT_MULTIPLE (0x3000000f) #define IKP_CXP_CRC_ERROR_COUNT (0x30000010) #define IKP_CXP_PoCXP_CHANNEL (0x30000011) #define IKP_CXP_PoCXP_LOCKED_VOLTAGE (0x30000012) #define IKP_CXP_SHAFT_ENCODER_DEBOUNCE (0x30000013) #define IKP_CXP_SHAFT_ENCODER_TICK_MODE (0x30000014) #define IKP_CXP_SHAFT_ENCODER_TICK_MAX (0x30000015) #define IKP_CXP_SHAFT_ENCODER_TICK_RESET (0x30000016) #define IKP_CXP_SHAFT_ENCODER_TICK_COUNT (0x30000017) #define IKP_CXP_SHAFT_ENCODER_REVERSE_MODE (0x30000018) #define IKP_CXP_SHAFT_ENCODER_REVERSE_MAX (0x30000019) #define IKP_CXP_SHAFT_ENCODER_REVERSE_RESET (0x30000020) #define IKP_CXP_SHAFT_ENCODER_REVERSE_COUNT (0x30000021) #define IKP_CXP_GENERAL_OUTPUT1_THRESHOLD (0x30000022) #define IKP_CXP_GENERAL_OUTPUT2_THRESHOLD (0x30000023) #define IKP_CXP_FIRMWARE_TYPE (0x30000024) #define IKP_GVB_FIRMWARE_TYPE (0x30000024) #define IKP_CXP_TEMPERATURE (0x30000025) #define IKP_GVB_TEMPERATURE (0x30000025) #define IKP_CXP_GENERAL_INPUT_THRESHOLD (0x30000026) #define IKP_CXP_GENERAL_OUTPUT1_SOURCE_CHANNEL (0x30000027) #define IKP_CXP_GENERAL_OUTPUT2_SOURCE_CHANNEL (0x30000028) #define IKP_CXP_GENERAL_INPUT1_TYPE (0x30000029) #define IKP_CXP_GENERAL_INPUT2_TYPE (0x3000002a) #define IKP_CXP_TRANSFER_CHANNEL_SELECTOR (0x3000002b) #define IKP_CXP_CHANNEL_LOST_COUNT (0x3000002c) #define IKP_CXP_CHANNEL_ERROR_COUNT (0x3000002d) #define IKP_TRIGGER_FRAME_ACTIVE_MODE (0x3000002e) #define IKP_JPEG_COMPRESS_ENABLE (0x3000002f) #define IKP_JPEG_COMPRESS_QUALITY (0x30000030) #define IKP_CXP_FRAME_BURST_COUNT (0x30000031) #define IKP_CXP_FRAME_BURST_PERIOD (0x30000032) #define IKP_CXP_CHANNEL_CRC_ERROR_COUNT (0x30000033) #define IKP_CXP_TRIG_EDGE_MODE (0x30000034) #define IKP_CXP_DATA_PACKED_TRANSFER (0x30000035) #define IKP_CXP_TRIG_LEVEL (0x30000036) #define IKP_CXP_BOARD_SYNC1_POLARITY (0x30000037) #define IKP_CXP_BOARD_SYNC2_POLARITY (0x30000038) #define IKP_CXP_BOARD_SYNC1_RISE_COUNT (0x30000039) #define IKP_CXP_BOARD_SYNC1_FALL_COUNT (0x3000003a) #define IKP_CXP_BOARD_SYNC2_RISE_COUNT (0x3000003b) #define IKP_CXP_BOARD_SYNC2_FALL_COUNT (0x3000003c) #define IKP_USE_CUDA_BUFFER_LINUX (0x40000000) /** \~chinese * @brief GVB使能SAccel压缩模式传输 * @note 本参数表示GVB采集卡是否解码SAccel压缩传输的数据【RW】。 \~english * @brief GVB enable SAccel compression transfer * @note This parameter represents if GVB frame grabber decompress the SAccel compressed data that camera transfer [RW]. */ #define IKP_GVB_ENABLE_COMPRESSION_TRANSFER (0x31000001) /** \~chinese * @brief GVB使能重传包 * @note 本参数表示GVB采集卡是否会在解析到错误数据时发送重传包【RW】。 \~english * @brief GVB enable packet resend * @note This parameter represents if GVB send the packet resend when packet is error [RW]. */ #define IKP_GVB_ENABLE_PACKET_RESEND (0x31000002) /** \~chinese * @brief GVB单次重传最大次数 * @note 本参数表示GVB重传发生超时的时候单个包再次重传的最大次数【RW】。 \~english * @brief GVB single packet resend max retry count * @note This parameter represents the maximum times of retransmission of a single packet * that can be resend again if packet-resend timeout occurs [RW]. */ #define IKP_GVB_SINGLE_PACKET_RESEND_RETRY_MAX_TIMES (0x31000003) /** \~chinese * @brief GVB 重传请求的偏移量 * @note GVB 重传请求的偏移量【RW】。 \~english * @brief GVB packet resend offset * @note GVB packet resend offset [RW]. */ #define IKP_GVB_PACKET_RESEND_OFFSET (0x31000004) /** \~chinese * @brief GVB 重传请求超时时间 * @note GVB 重传请求超时时间【RW】。 \~english * @brief GVB packet resend timeout * @note GVB packet resend timeout [RW]. */ #define IKP_GVB_PACKET_RESEND_TIMEOUT (0x31000005) /** \~chinese * @brief GVB有效重传事件计数 * @note 本参数表示GVB有效重传事件计数【RO】。 \~english * @brief GVB valid packet-resend event count * @note This parameter represents the count of GVB valid packet-resend event count [RO]. */ #define IKP_GVB_VALID_PACKET_RESEND_EVENT_COUNT (0x31000006) /** \~chinese * @brief GVB丢包事件计数 * @note 本参数表示GVBGVB丢包事件计数【RO】。 \~english * @brief GVB packet-lost event count * @note This parameter represents the count of GVB packet-lost event count [RO]. */ #define IKP_GVB_PACKET_LOST_EVENT_COUNT (0x31000007) /** \~chinese * @brief GVB重传超时事件次数 * @note 本参数表示GVB重传超时事件次数【RO】。 \~english * @brief GVB packet-resend timeout event count * @note This parameter represents the count of GVB packet-resend timeout event count [RO]. */ #define IKP_GVB_PACKET_RESEND_TIMEOUT_EVENT_COUNT (0x31000008) /************************************************************************/ /*Data Format*/ /************************************************************************/ #define IKP_DATA_FORMAT_VAL_8Bit (8) #define IKP_DATA_FORMAT_VAL_10Bit (10) #define IKP_DATA_FORMAT_VAL_12Bit (12) #define IKP_DATA_FORMAT_VAL_14Bit (14) #define IKP_DATA_FORMAT_VAL_16Bit (16) /************************************************************************/ /*Image Type*/ /************************************************************************/ #define IKP_IMAGE_TYPE_VAL_MONOCHROME (0) #define IKP_IMAGE_TYPE_VAL_COLORFUL (1) #define IKP_IMAGE_TYPE_VAL_RGB (1) #define IKP_IMAGE_TYPE_VAL_RGBC (2) #define IKP_IMAGE_TYPE_VAL_BGR (3) #define IKP_IMAGE_TYPE_VAL_BGRC (4) /************************************************************************/ /*Scan Type*/ /************************************************************************/ #define IKP_SCAN_TYPE_VAL_LINEAR (0) #define IKP_SCAN_TYPE_VAL_AREA (1) /************************************************************************/ /*Grab Start Mode*/ /************************************************************************/ #define IKP_GRAB_BLOCK (0) #define IKP_GRAB_NON_BLOCK (1) /************************************************************************/ /*Frame Transfer Mode*/ /************************************************************************/ #define IKP_FRAME_TRANSFER_SYNCHRONOUS (0) #define IKP_FRAME_TRANSFER_ASYNCHRONOUS (1) #define IKP_FRAME_TRANSFER_SYNCHRONOUS_NEXT_EMPTY_WITH_PROTECT (2) /************************************************************************/ /*Frame Auto Clear*/ /************************************************************************/ #define IKP_FRAME_AUTO_CLEAR_VAL_DISABLE (0) #define IKP_FRAME_AUTO_CLEAR_VAL_ENABLE (1) /************************************************************************/ /*Bayer Pattern*/ /************************************************************************/ #define IKP_BAYER_PATTERN_VAL_NULL (0) #define IKP_BAYER_PATTERN_VAL_BGGR (1) #define IKP_BAYER_PATTERN_VAL_RGGB (2) #define IKP_BAYER_PATTERN_VAL_GBRG (3) #define IKP_BAYER_PATTERN_VAL_GRBG (4) #define IKP_IMAGE_TYPE_VAL_YUV422 (5) /************************************************************************/ /*CC Source*/ /************************************************************************/ #define IKP_CC_SOURCE_VAL_NOT_USE (0) #define IKP_CC_SOURCE_VAL_INTEGRATION_SIGNAL1 (1) #define IKP_CC_SOURCE_VAL_INTEGRATION_SIGNAL2 (2) #define IKP_CC_SOURCE_VAL_LOW (3) #define IKP_CC_SOURCE_VAL_HIGH (4) #define IKP_CC_SOURCE_VAL_SOFTWARE (5) #define IKP_CC_SOURCE_VAL_GENERAL_INPUT1 (6) #define IKP_CC_SOURCE_VAL_GENERAL_INPUT2 (7) #define IKP_CC_SOURCE_VAL_BOARD_SYNC1 (8) #define IKP_CC_SOURCE_VAL_BOARD_SYNC2 (9) #define IKP_CC_SOURCE_VAL_STROBE (10) /************************************************************************/ /*Board Trigger Mode*/ /************************************************************************/ #define IKP_BOARD_TRIGGER_MODE_VAL_INNER (0) #define IKP_BOARD_TRIGGER_MODE_VAL_OUTTER (1) #define IKP_BOARD_TRIGGER_MODE_VAL_CXP_LEVEL_VALID (2) /************************************************************************/ /*Board Trigger Source*/ /************************************************************************/ #define IKP_BOARD_TRIGGER_SOURCE_VAL_GENERAL_INPUT1 (0) #define IKP_BOARD_TRIGGER_SOURCE_VAL_GENERAL_INPUT2 (1) #define IKP_BOARD_TRIGGER_SOURCE_VAL_SHAFT_ENCODER1 (2) #define IKP_BOARD_TRIGGER_SOURCE_VAL_BOARD_SYNC1 (3) #define IKP_BOARD_TRIGGER_SOURCE_VAL_BOARD_SYNC2 (4) #define IKP_BOARD_TRIGGER_SOURCE_VAL_INNER_TRIGGER (5) #define IKP_BOARD_TRIGGER_SOURCE_VAL_SOFTWARE (6) #define IKP_BOARD_TRIGGER_SOURCE_VAL_INTEGRATION_SIGNAL_1 (7) #define IKP_BOARD_TRIGGER_SOURCE_VAL_INTEGRATION_SIGNAL_2 (8) /************************************************************************/ /*General Input Sample Mode*/ /************************************************************************/ #define IKP_GENERAL_INPUT_SAMPLE_MODE_VAL_ACTIVE_HIGH (0) #define IKP_GENERAL_INPUT_SAMPLE_MODE_VAL_ACTIVE_LOW (1) #define IKP_GENERAL_INPUT_SAMPLE_MODE_VAL_RISING_EDGE (2) #define IKP_GENERAL_INPUT_SAMPLE_MODE_VAL_FALLING_EDGE (3) /************************************************************************/ /*General Input Protect Mode*/ /************************************************************************/ #define IKP_GENERAL_INPUT_PROTECT_MODE_VAL_NOT_USE (0) #define IKP_GENERAL_INPUT_PROTECT_MODE_VAL_DELETE (1) #define IKP_GENERAL_INPUT_PROTECT_MODE_VAL_MEMORIZE (2) /************************************************************************/ /*Shaft Encoder Protect Mode*/ /************************************************************************/ #define IKP_SHAFT_ENCODER_PROTECT_MODE_VAL_NOT_USE (0) #define IKP_SHAFT_ENCODER_PROTECT_MODE_VAL_DELETE (1) #define IKP_SHAFT_ENCODER_PROTECT_MODE_VAL_MEMORIZE (2) /************************************************************************/ /*Integration Trigger Source*/ /************************************************************************/ #define IKP_INTEGRATION_TRIGGER_SOURCE_VAL_INTERNAL (0) #define IKP_INTEGRATION_TRIGGER_SOURCE_VAL_GENERAL_INPUT1 (1) #define IKP_INTEGRATION_TRIGGER_SOURCE_VAL_GENERAL_INPUT2 (2) #define IKP_INTEGRATION_TRIGGER_SOURCE_VAL_SHAFT_ENCODER1 (5) #define IKP_INTEGRATION_TRIGGER_SOURCE_VAL_BOARD_SYNC1 (7) #define IKP_INTEGRATION_TRIGGER_SOURCE_VAL_BOARD_SYNC2 (8) #define IKP_INTEGRATION_TRIGGER_SOURCE_VAL_SOFTWARE (9) /************************************************************************/ /*Strobe Trigger Source*/ /************************************************************************/ #define IKP_STROBE_TRIGGER_SOURCE_VAL_INTERNAL (0) #define IKP_STROBE_TRIGGER_SOURCE_VAL_GENERAL_INPUT1 (1) #define IKP_STROBE_TRIGGER_SOURCE_VAL_GENERAL_INPUT2 (2) #define IKP_STROBE_TRIGGER_SOURCE_VAL_SHAFT_ENCODER1 (5) #define IKP_STROBE_TRIGGER_SOURCE_VAL_BOARD_SYNC1 (7) #define IKP_STROBE_TRIGGER_SOURCE_VAL_BOARD_SYNC2 (8) #define IKP_STROBE_TRIGGER_SOURCE_VAL_FRAME_TRANSFER_END (9) #define IKP_STROBE_TRIGGER_SOURCE_VAL_SOFTWARE (10) #define IKP_STROBE_TRIGGER_SOURCE_VAL_FRAME_TRANSFER_START (11) /************************************************************************/ /*Board Sync Output Source*/ /************************************************************************/ #define IKP_BOARD_SYNC_OUTPUT_SOURCE_VAL_NOT_USE (0) #define IKP_BOARD_SYNC_OUTPUT_SOURCE_VAL_INTERNAL (1) #define IKP_BOARD_SYNC_OUTPUT_SOURCE_VAL_GENERAL_INPUT1 (2) #define IKP_BOARD_SYNC_OUTPUT_SOURCE_VAL_GENERAL_INPUT2 (3) #define IKP_BOARD_SYNC_OUTPUT_SOURCE_VAL_SHAFT_ENCODER1 (4) #define IKP_BOARD_SYNC_OUTPUT_SOURCE_VAL_INTEGRATION_SIGNAL1 (5) #define IKP_BOARD_SYNC_OUTPUT_SOURCE_VAL_INTEGRATION_SIGNAL2 (6) #define IKP_BOARD_SYNC_OUTPUT_SOURCE_VAL_STROBLE_SIGNAL1 (7) #define IKP_BOARD_SYNC_OUTPUT_SOURCE_VAL_BOARD_SYNC1 (8) #define IKP_BOARD_SYNC_OUTPUT_SOURCE_VAL_BOARD_SYNC2 (9) /************************************************************************/ /*General Output Source*/ /************************************************************************/ #define IKP_GENERAL_OUTPUT_SOURCE_VAL_INTERNAL (0) #define IKP_GENERAL_OUTPUT_SOURCE_VAL_GENERAL_INPUT1 (1) #define IKP_GENERAL_OUTPUT_SOURCE_VAL_GENERAL_INPUT2 (2) #define IKP_GENERAL_OUTPUT_SOURCE_VAL_SHAFT_ENCODER1 (3) #define IKP_GENERAL_OUTPUT_SOURCE_VAL_INTEGRATION_SIGNAL1 (4) #define IKP_GENERAL_OUTPUT_SOURCE_VAL_INTEGRATION_SIGNAL2 (5) #define IKP_GENERAL_OUTPUT_SOURCE_VAL_STROBLE_SIGNAL1 (6) #define IKP_GENERAL_OUTPUT_SOURCE_VAL_SOFTWARE (7) #define IKP_GENERAL_OUTPUT_SOURCE_VAL_VAL_BOARD_SYNC1 (8) #define IKP_GENERAL_OUTPUT_SOURCE_VAL_VAL_BOARD_SYNC2 (9) /************************************************************************/ /*General Output Polarity*/ /************************************************************************/ #define IKP_GENERAL_OUTPUT_POLARITY_VAL_SAME_TO_SOURCE (0) #define IKP_GENERAL_OUTPUT_POLARITY_VAL_OPPOSITE_TO_SOURCE (1) /************************************************************************/ /*Integration Method*/ /************************************************************************/ #define IKP_INTEGRATION_METHOD_VAL_1 (0) #define IKP_INTEGRATION_METHOD_VAL_2 (1) #define IKP_INTEGRATION_METHOD_VAL_3 (2) #define IKP_INTEGRATION_METHOD_VAL_4 (3) #define IKP_INTEGRATION_METHOD_VAL_5 (4) /************************************************************************/ /*Integration Polarity*/ /************************************************************************/ #define IKP_INTEGRATION_POLARITY_VAL_HIGH (0) #define IKP_INTEGRATION_POLARITY_VAL_LOW (1) /************************************************************************/ /*Strobe Method*/ /************************************************************************/ #define IKP_STROBE_METHOD_VAL_1 (0) #define IKP_STROBE_METHOD_VAL_2 (1) #define IKP_STROBE_METHOD_VAL_3 (2) #define IKP_STROBE_METHOD_VAL_4 (3) /************************************************************************/ /*Strobe Polarity*/ /************************************************************************/ #define IKP_STROBE_POLARITY_VAL_HIGH (0) #define IKP_STROBE_POLARITY_VAL_LOW (1) /* General input trigger mode */ #define IKP_GENERAL_INPUT_TRIGGER_MODE_VAL_EDGE (0) #define IKP_GENERAL_INPUT_TRIGGER_MODE_VAL_LEVEL (1) /* Board synchronization trigger mode */ #define IKP_BOARD_SYNC_TRIGGER_MODE_VAL_EDGE (0) #define IKP_BOARD_SYNC_TRIGGER_MODE_VAL_LEVEL (1) /* Shaft encoder channel */ #define IKP_SHAFT_ENCODER_CHANNEL_VAL_A (0) #define IKP_SHAFT_ENCODER_CHANNLE_VAL_B (1) /* Shaft encoder mutiply factor */ #define IKP_SHAFT_ENCODER_MULTIPLY_FACTOR_VAL_1 (0) #define IKP_SHAFT_ENCODER_MULTIPLY_FACTOR_VAL_2 (1) #define IKP_SHAFT_ENCODER_MULTIPLY_FACTOR_VAL_4 (2) #define IKP_SHAFT_ENCODER_MULTIPLY_FACTOR_VAL_8 (3) #define IKP_SHAFT_ENCODER_MULTIPLY_FACTOR_VAL_16 (4) #define IKP_SHAFT_ENCODER_MULTIPLY_FACTOR_VAL_32 (5) #define IKP_SHAFT_ENCODER_MULTIPLY_FACTOR_VAL_64 (6) #define IKP_SHAFT_ENCODER_MULTIPLY_FACTOR_VAL_128 (7) #define IKP_SHAFT_ENCODER_MULTIPLY_FACTOR_VAL_256 (8) #define IKP_SHAFT_ENCODER_MULTIPLY_FACTOR_VAL_512 (9) /* LVAL Filter Enable */ #define IKP_LVAL_FILTER_DISABLE (0) #define IKP_LVAL_FILTER_ENABLE (1) /* FPGA External Trigger Timeout */ #define IKP_FPGA_EXTERNAL_TRIGGER_TIMEOUT_MIN (8) #define IKP_FPGA_EXTERNAL_TRIGGER_TIMEOUT_MAX (0xFFFFFFFF) /* General input polarity */ #define IKP_GENERAL_INPUT_POLARITY_VAL_HIGH (0) #define IKP_GENERAL_INPUT_POLARITY_VAL_LOW (1) /* General input min valid width */ #define IKP_GENERAL_INPUT_MIN_WIDTH_VAL_MINIMUM (50) /* PCIe Kernal Block Size */ #define IKP_PCIE_KERNAL_BLOCK_SIZE_VAL_4M (1) #define IKP_PCIE_KERNAL_BLOCK_SIZE_VAL_8M (2) #define IKP_PCIE_KERNAL_BLOCK_SIZE_VAL_12M (3) #define IKP_PCIE_KERNAL_BLOCK_SIZE_VAL_16M (4) /* Software trigger polarity */ #define IKP_SOFTWARE_TRIGGER_POLARITY_VAL_HIGH (0) #define IKP_SOFTWARE_TRIGGER_POLARITY_VAL_LOW (1) /* Software trigger sync mode */ #define IKP_SOFTWARE_TRIGGER_SYNC_MODE_VAL_DISABLE (0) #define IKP_SOFTWARE_TRIGGER_SYNC_MODE_VAL_ENABLE (1) /* CoaXPress board trigger output selector */ #define IKP_CXP_TRIGGER_OUTPUT_NO (0) #define IKP_CXP_TRIGGER_OUTPUT_INTEGRATION_SIGNAL1 (1) #define IKP_CXP_TRIGGER_OUTPUT_INTEGRATION_SIGNAL2 (2) #define IKP_CXP_TRIGGER_OUTPUT_BOARD_SYNC1 (3) #define IKP_CXP_TRIGGER_OUTPUT_BOARD_SYNC2 (4) /* Monitor IO type */ #define IKP_EVENT_INPUT_INTERNAL (1 << 0) #define IKP_EVENT_INPUT_GENERAL_1 (1 << 1) #define IKP_EVENT_INPUT_GENERAL_2 (1 << 2) #define IKP_EVENT_INPUT_SHAFT_ENCODER_A (1 << 3) #define IKP_EVENT_INPUT_SHFAT_ENCODER_B (1 << 4) #define IKP_EVENT_INPUT_BOARD_SYNC_IN_1 (1 << 5) #define IKP_EVENT_INPUT_INTEGRATION_SIG_1 (1 << 6) #define IKP_EVENT_INPUT_INTEGRATION_SIG_2 (1 << 7) /* CoaXPress test image for debug usage */ #define IKP_CXP_TEST_IMAGE_OFF (0) #define IKP_CXP_TEST_IMAGE_1 (1) #define IKP_CXP_TEST_IMAGE_2 (2) /* Shaft encoder valid direction */ #define IKP_SHAFT_ENCODER1_VALID_DIR_BOTH (0) #define IKP_SHAFT_ENCODER1_VALID_DIR_FORWARD (1) #define IKP_SHAFT_ENCODER1_VALID_DIR_BACKWARD (2) /* Shaft encoder reverse compensation */ #define IKP_SHAFT_ENCODER1_REVERSE_COMPENSATION_OFF (0) #define IKP_SHAFT_ENCODER1_REVERSE_COMPENSATION_ON (1) /* Shaft encoder debounce period */ #define IKP_CXP_SHAFT_ENCODER1_DEBOUNCE_PERIOD_MIN (0) #define IKP_CXP_SHAFT_ENCODER1_DEBOUNCE_PERIOD_MAX (65535) /* Shaft encoder tick mode */ #define IKP_CXP_SHAFT_ENCODER_TICK_MODE_FOLLOW_DIRECTION (0) #define IKP_CXP_SHAFT_ENCODER_TICK_MODE_ANY_DIRECTION (1) /* CoaXPress firmware type */ #define IKP_CXP_FIRMWARE_TYPE_1_CAMERA (0) #define IKP_CXP_FIRMWARE_TYPE_2_CAMERA (1) #define IKP_CXP_FIRMWARE_TYPE_4_CAMERA (2) #define IKP_CXP_FIRMWARE_TYPE_2_CAMERA_NEW (3) #define IKP_CXP_FIRMWARE_TYPE_8_CAMERA_NEW (6) ///< @brief \~chinese 1拖8 \~english 1-8 #define IKP_CXP_FIRMWARE_TYPE_8_CAMERA (7) /* CoaXPress general output source channel */ #define IKP_CXP_GENERAL_OUTPUT_SOURCE_CHANNEL_A (0) #define IKP_CXP_GENERAL_OUTPUT_SOURCE_CHANNEL_B (1) #define IKP_CXP_GENERAL_OUTPUT_SOURCE_CHANNEL_C (2) #define IKP_CXP_GENERAL_OUTPUT_SOURCE_CHANNEL_D (3) #define IKP_CXP_GENERAL_OUTPUT_SOURCE_CHANNEL_E (4) #define IKP_CXP_GENERAL_OUTPUT_SOURCE_CHANNEL_F (5) #define IKP_CXP_GENERAL_OUTPUT_SOURCE_CHANNEL_G (6) #define IKP_CXP_GENERAL_OUTPUT_SOURCE_CHANNEL_H (7) /* CoaXPress general input type */ #define IKP_CXP_GENERAL_INPUT_TYPE_DIFFERENTIAL (0) #define IKP_CXP_GENERAL_INPUT_TYPE_SINGLE_END (1) /* IKP_CL_VALID_COLUMN */ #define IKP_CL_VALID_COLUMN_ALL (0) #define IKP_CL_VALID_COLUMN_EVEN (1) #define IKP_CL_VALID_COLUMN_ODD (2) /* IKP_CL_ENHANCE_MODE */ #define IKP_CL_SIGNAL_ENHANCE_MODE_OFF (0) #define IKP_CL_SIGNAL_ENHANCE_MODE_ON (3) /* IKP_CL_LONG_DISTANCE_TRANSMISSION */ #define IKP_CL_LONG_DISTANCE_TRANSMISSION_OFF (0) #define IKP_CL_LONG_DISTANCE_TRANSMISSION_ON (1) /* CoaXPress uart serial port index */ #define IKP_CXP_UART_PORT (8) /* Jpeg/Tiff/Png Image Compression flag */ #define IKP_DEFAULT_COMPRESSION (0x0000) //! default compression #define IKP_JPEG_QUALITYSUPERB (0x0001) //! save with superb quality (100:1) #define IKP_JPEG_QUALITYGOOD (0x0002) //! save with good quality (75:1) #define IKP_JPEG_QUALITYNORMAL (0x0003) //! save with normal quality (50:1) #define IKP_JPEG_QUALITYAVERAGE (0x0004) //! save with average quality (25:1) #define IKP_JPEG_QUALITYBAD (0x0005) //! save with bad quality (10:1) #define IKP_TIFF_NONE (0x0100) //! save without any compression #define IKP_TIFF_LZW (0x0101) //! save using LZW compression #define IKP_PNG_Z_NO_COMPRESSION (0x0200) //! save without ZLib compression #define IKP_PNG_Z_BEST_SPEED (0x0201) //! save using ZLib level 1 compression flag (default value is 6) #define IKP_PNG_Z_DEFAULT_COMPRESSION (0x0202) //! save using ZLib level 6 compression flag (default recommended value) #define IKP_PNG_Z_BEST_COMPRESSION (0x0203) //! save using ZLib level 9 compression flag (default value is 6) /* General output threshold */ #define IKP_GENERAL_OUTPUT_THRESHOLD_3V3 (0x0) #define IKP_GENERAL_OUTPUT_THRESHOLD_24V (0x1) /* Shaft encoder debounce value */ #define IKP_SHAFT_ENCODER_DEBOUNCE_MIN (0) #define IKP_SHAFT_ENCODER_DEBOUNCE_MAX (1000 * 1000 * 1000) /* CXP General input threshold */ #define IKP_CXP_GENERAL_INPUT_THRESHOLD_5V (0) #define IKP_CXP_GENERAL_INPUT_THRESHOLD_3V (1) /* General input delay mode */ #define IKP_HARDWARE_TRIGGER_GENERAL_INPUT_DELAY_MODE_IN_LINES (0) #define IKP_HARDWARE_TRIGGER_GENERAL_INPUT_DELAY_MODE_IN_US (1) #define IKP_HARDWARE_TRIGGER_GENERAL_INPUT_DELAY_IN_LINES_MIN (0) #define IKP_HARDWARE_TRIGGER_GENERAL_INPUT_DELAY_IN_LINES_MAX (65535) /* Shaft encoder quad frequency source type */ #define IKP_SHAFT_ENCODER1_QUAD_FREQUENCY_SOURCE_TYPE_VAL_DOUBLE_CHANNEL (0) #define IKP_SHAFT_ENCODER1_QUAD_FREQUENCY_SOURCE_TYPE_VAL_SINGLE_CHANNEL (1) /* IKP_TRIGGER_FRAME_ACTIVE_MODE frame active mode is on or off */ #define IKP_TRIGGER_FRAME_ACTIVE_MODE_OFF (0) #define IKP_TRIGGER_FRAME_ACTIVE_MODE_ON (1) #define IKP_TRIGGER_FRAME_ACTIVE_MODE_ALL_LEVELS (2) ///< @brief \~chinese all_levels模式 \~english all_levels mode /* IKP_JPEG_COMPRESS_ENABLE */ #define IKP_JPEG_COMPRESS_ENABLE_OFF (0) #define IKP_JPEG_COMPRESS_ENABLE_ON (1) /* IKP_JPEG_COMPRESS_QUALITY */ #define IKP_JPEG_COMPRESS_QUALITY_MIN (1) #define IKP_JPEG_COMPRESS_QUALITY_MAX (100) /* IKP_SHAFT_ENCODER1_CLOCK_DUTY_COMPENSATION */ #define IKP_SHAFT_ENCODER1_CLOCK_DUTY_COMPENSATION_RISING_EDGE (0) #define IKP_SHAFT_ENCODER1_CLOCK_DUTY_COMPENSATION_FALLING_EDGE (1) /* IKP_CXP_SHAFT_ENCODER_REVERSE_MODE */ #define IKP_CXP_SHAFT_ENCODER_REVERSE_MODE_FORWARD_ONLY (0) #define IKP_CXP_SHAFT_ENCODER_REVERSE_MODE_ANY_DIRECTION (1) #define IKP_CXP_SHAFT_ENCODER_REVERSE_MODE_BACKWARD_ONLY (2) /* IKP_CXP_TRIG_EDGE_MODE */ #define IKP_CXP_TRIG_EDGE_MODE_DOUBLE_EDGE (0) #define IKP_CXP_TRIG_EDGE_MODE_RISE_ONLY (1) /* IKP_CXP_DATA_PACKED_TRANSFER */ #define IKP_CXP_TRIG_LEVEL_ALL_LOW (0) #define IKP_CXP_TRIG_LEVEL_ALL_HIGH (1) #define IKP_CXP_TRIG_LEVEL_GENERAL_INPUT1 (2) #define IKP_CXP_TRIG_LEVEL_GENERAL_INPUT2 (3) /* Status information */ #define IK_RTN_OK (1) #define IK_RTN_ERROR (0) #define IKStatus_Success 0x00000001 #define IKStatus_BoardNotFound 0x00000002 #define IKStatus_AllocMemoryFail 0x00000003 #define IKStatus_InvalidParameter 0x00000004 #define IKStatus_OpenBoardFail 0x00000005 #define IKStatus_TimeOut 0x00000006 #define IKStatus_WinError 0x00000007 #define IKStatus_BoardNotOpen 0x00000008 #define IKStatus_ConfigFilePathInvalid 0x00000009 #define IKStatus_ConfigParameterInvalid 0x0000000a #define IKStatus_ZLP 0x0000000b #define IKStatus_ThreadUnsetup 0x0000000c #define IKStatus_ThreadExist 0x0000000d #define IKStatus_CameraUnsupport 0x0000000e #define IKStatus_XMLFileLoadFail 0x0000000f #define IKStatus_NodeNotExist 0x00000010 #define IKStatus_WriteSerialFail 0x00000011 #define IKStatus_CommandNotExist 0x00000012 #define IKStatus_CommandCollision 0x00000013 #define IKStatus_CommandMissRequirement 0x00000014 #define IKStatus_CommandNotAllow 0x00000015 #define IKStatus_CommandSyntaxError 0x00000016 #define IKStatus_NodeTypeDismatch 0x00000017 #define IKStatus_FeatureUnSupport 0x00000018 #define IKStatus_CommandResultNoExit 0x00000019 #define IKStatus_CLRegPathNotFound 0x0000001a #define IKStatus_CLDLLNotFound 0x0000001b #define IKStatus_CameraNotFound 0x0000001c #define IKStatus_BufferTooSmall 0x0000001d #define IKStatus_BaudrateNotSupport 0x0000001e #define IKStatus_CameraInUse 0x0000001f #define IKStatus_FPGA_EraseFlashFail 0x00000020 #define IKStatus_FPGA_CheckFail 0x00000021 #define IKStatus_BoardNotBindingCOM 0x00000022 #define IKStatus_ReadRegFail 0x00000023 #define IKStatus_Invalid_Mutex 0x00000024 #define IKStatus_Mutex_Locked 0x00000025 #define IKStatus_Invalid_Handle 0x00000026 #define IKStatus_Set_Info_Error 0x00000027 #define IKStatus_Grab_Pending 0x00000028 #define IKStatus_Insufficient_Resource 0x00000029 #define IKStatus_Grab_Abort 0x0000002a #define IKStatus_Need_Reboot 0x0000002b #define IKStatus_Need_Restart 0x0000002c #define IKStatus_Not_Implement 0x0000002d ///< \~chinese 功能未实现 \~english Function not implemented #define IKStatus_Not_In_Callback \ 0x0000002e ///< \~chinese 该功能应在回调函数中运行,但实际不在 \~english This function should be run in callback ///< function, but actually not #define IKStatus_Not_Match_Driver_Version 0x0000002f ///< \~chinese 驱动版本不匹配 \~english Driver version mismatch #define IKStatus_Prm_Not_Available \ 0x00000030 ///< \~chinese 参数当前不可读不可写 \~english The parameter is currently unreadable and not writable #define IKStatus_Prm_Locked \ 0x00000031 ///< \~chinese 采集卡参数锁定,无法修改 \~english The parameters of frame grabber are locked and cannot be ///< modified #define IKStatus_Logic_Error 0x00000032 ///< \~chinese 逻辑错误 \~english Logic error #define IKStatus_Out_Of_Bounds 0x00000033 ///< \~chinese 参数越界 \~english Out-of-bounds /** * @name Buffer Status * @brief This struct provides general information about the buffer status. */ typedef struct _ikap_buffer_status { unsigned uFull; /**< 指明缓冲区是否为满 */ unsigned uEmpty; /**< 指明缓冲区是否为空 */ unsigned uTransfer; /**< 指明缓冲区是否正在传输 */ unsigned uOverflow; /**< 指明缓冲区是否越界 */ unsigned uLineNum; /**< 对于线扫描相机,该参数指明当前传输的图像有效行数;对于面扫描相机,该参数未定义。 */ } IKAPBUFFERSTATUS, *PIKAPBUFFERSTATUS; typedef struct _ikap_buffer_status_ex { unsigned uFull; /**< 指明缓冲区是否为满 */ unsigned uEmpty; /**< 指明缓冲区是否为空 */ unsigned uTransfer; /**< 指明缓冲区是否正在传输 */ unsigned uOverflow; /**< 指明缓冲区是否越界 */ unsigned uLineNum; /**< 对于线扫描相机,该参数指明当前传输的图像有效行数;对于面扫描相机,该参数未定义。 */ unsigned long long uCompressSize; /**< 对于压缩图像,存储当前缓冲区中有效长度. */ unsigned long long uTimestamp; /**< 缓冲区完成的时间相对于开始采集的时间戳(us). */ double dFrameRate; /**< 计算出的当前缓冲区帧率, 1/(距离上一帧完成的时间), 与从采集卡读取的瞬时帧率不同 */ unsigned uIntegrationSignal1Count; /**< 帧完成成时的IntegrationSignal1计数*/ unsigned long long uThumbnailSize; /**< 位于有效图像数据之前的缩略图大小 */ unsigned long long uTimestampSinceEpoch; /**< 缓冲区完成的纪元时间戳(us). */ unsigned uVaryFrameEnd; /**< CL采集卡不定长采图是否结束. */ unsigned Reserved[54]; } IKAPBUFFERSTATUSEX, *PIKAPBUFFERSTATUSEX; /** * @name Error Handle * @brief This struct provides general information about the error code. */ typedef struct _ikap_error_info { unsigned uBoardType; /**< 采集卡类型 */ unsigned uBoardIndex; /**< 采集卡索引 */ unsigned uErrorCode; /**< 错误代码 */ } IKAPERRORINFO, *PIKAPERRORINFO; /** * @name CoaXPress Board Information * @brief This struct provides CoaXPress frame grabber information */ typedef struct _ikap_cxp_board_info { unsigned BoardIndex; unsigned MasterPort; unsigned SlaveCount; unsigned SlavePort[7]; unsigned CameraIndex; unsigned Topology; char Reserved[248]; } IKAP_CXP_BOARD_INFO, *PIKAP_CXP_BOARD_INFO; typedef struct _ikap_gvb_board_info { unsigned BoardIndex; /**< Master connection board index. */ unsigned MasterPort; /**< Master connection board port. */ char MAC[32]; /**< Device mac. */ char Ip[32]; /**< Device ip. */ char SubNetMask[32]; /**< Device subnet mask. */ char GateWay[32]; /**< Device default gateway. */ char Reserved2[160]; /**< Reserved. */ } IKAP_GVB_BOARD_INFO, *PIKAP_GVB_BOARD_INFO; /** * @name Bus addressable memory * @brief This struct provides bus addressabel memory */ typedef struct _ikap_bus_memory { unsigned long long BusAddress; /**< PCIez总线物理地址 */ unsigned Size; /**< 内存大小 */ void * UserPointer; /**< 用户自定义指针 */ } IKAP_BUS_MEMORY, *PIKAP_BUS_MEMORY; #ifdef __cplusplus extern "C" { #endif // __cplusplus /** * @brief Get current board count * @param[in] resourceType : 0 - All; 1 - USB30; 2 - PCIe * @param[out] resourceCount : current board count * @Return: * - IK_RTN_OK * - IK_RTN_ERROR * * @note * @see IKapGetBoardName */ IKAPBOARDDLL int IKAPBOARD_CC IKapGetBoardCount(unsigned resourceType, unsigned *resourceCount); /** * @brief Get board name * @param[in] resourceType : 0 - All; 1 - USB30; 2 - PCIe * @param[in] resourceIndex : 0 - resource_count - 1 * @param[out] resourceName : board name * @param[out] resoureceNameSize : board name size * @Return: * - IK_RTN_OK * - IK_RTN_ERROR * * @note * @see IKapGetBoardCount */ IKAPBOARDDLL int IKAPBOARD_CC IKapGetBoardName(unsigned resourceType, unsigned resourceIndex, char *resourceName, unsigned *resourceNameSize); /** * @brief Open board * @param[in] resourceType : 0 - All; 1 - USB30; 2 - PCIe * @param[in] resourceIndex : 0 - resource_count - 1 * @Return: * - hDev : board handle * * @note * @see IKapClose */ IKAPBOARDDLL void *IKAPBOARD_CC IKapOpen(unsigned resourceType, unsigned resourceIndex); /** * @brief open CXP board. * @param[in] resourceType : 采集卡接口类型 * @param[in] resourceIndex : 0 - resource_count - 1 * @param[in] info : CoaXPress info * @Return: * - Handle : board handle * * @note * @see IKapClose */ IKAPBOARDDLL void *IKAPBOARD_CC IKapOpenCXP(unsigned resourceType, unsigned resourceIndex, IKAP_CXP_BOARD_INFO info); /** * @brief 打开采集卡设备. * @param[in] resourceType : 采集卡接口类型 * @param[in] resourceIndex : 采集卡索引 * @param[in] info : CoaXPress采集卡信息 * @Return: * - Handle : 采集卡设备句柄 * * @note 使用该函数可以打开CoaXPress接口和GigEVisionBoard接口的采集卡设备; * @see IKapClose */ IKAPBOARDDLL void *IKAPBOARD_CC IKapOpenGVB(unsigned resourceType, unsigned resourceIndex, IKAP_GVB_BOARD_INFO info); /** * @brief Close board * @param[in] hDev : board handle * @Return: * - IK_RTN_OK * - IK_RTN_ERROR * * @note * @see IKapOpen */ IKAPBOARDDLL int IKAPBOARD_CC IKapClose(void *hDev); /** * @brief Load configuration file from local * @param[in] hDev : board handle * @param[in] lpFileName : file name * @Return: * - IK_RTN_OK * - IK_RTN_ERROR * * @note * @see IKapSaveConfigurationToFile */ IKAPBOARDDLL int IKAPBOARD_CC IKapLoadConfigurationFromFile(void *hDev, char *lpFileName); /** * @brief Save configuration file to local. * @param[in] hDev : board handle * @param[in] lpFileName : local file name * @Return: * - IK_RTN_OK * - IK_RTN_ERROR * * @note * @see IKapLoadConfigurationToFile */ IKAPBOARDDLL int IKAPBOARD_CC IKapSaveConfigurationToFile(void *hDev, char *lpFileName); /** * @brief Get board info * @param[in] hDev : board handle * @param[in] uType : info id * @param[out] npValue : info value * @Return: * - IK_RTN_OK * - IK_RTN_ERROR * * @note * @see IKapSetInfo */ IKAPBOARDDLL int IKAPBOARD_CC IKapGetInfo(void *hDev, unsigned int uType, int *npValue); /** * @brief Set device info * @param[in] hdev : device handle * @param[in] uType : info id * @param[in] nValue : info value * @Return: * - IK_RTN_OK * - IK_RTN_ERROR * * @note * @see IKapGetInfo */ IKAPBOARDDLL int IKAPBOARD_CC IKapSetInfo(void *hDev, unsigned int uType, int nValue); /** * @brief Register callback * @param[in] hDev : device handle * @param[in] uEventType : event type * @param[in] fEventFunc : callback function * @param[in] pContext : callback context * @Return: * - IK_RTN_OK * - IK_RTN_ERROR * * @note * @see IKapUnRegisterCallback */ IKAPBOARDDLL int IKAPBOARD_CC IKapRegisterCallback(void *hDev, unsigned uEventType, HookFnPtr fEventFunc, void *pContext); /** * @brief Unregister callback * @param[in] hDev : device handle * @param[in] uEventType : device type * @Return: * - IK_RTN_OK * - IK_RTN_ERROR * * @note * @see IKapRegisterCallback */ IKAPBOARDDLL int IKAPBOARD_CC IKapUnRegisterCallback(void *hDev, unsigned int uEventType); /** * @brief Start grab image * @param[in] hDev : device handle * @param[in] nFrameCount : grab frame count * @Return: * - IK_RTN_OK * - IK_RTN_ERROR * * @note * @see IKapStopGrab */ IKAPBOARDDLL int IKAPBOARD_CC IKapStartGrab(void *hDev, int nFrameCount); /** * @brief Stop grab * @param[in] hDev : device handle * @Return: * - IK_RTN_OK * - IK_RTN_ERROR * * @note * @see IKapStartGrab */ IKAPBOARDDLL int IKAPBOARD_CC IKapStopGrab(void *hDev); /** * @brief Wait grab image done * @param[in] hDev : device handle * @Return: * - IK_RTN_OK * - IK_RTN_ERROR * * @note * @see IKapStartGrab */ IKAPBOARDDLL int IKAPBOARD_CC IKapWaitGrab(void *hDev); /** * @brief Clear grab state * @param[in] hDev : device handle * @Return: * - IK_RTN_OK * - IK_RTN_ERROR * * @note * @see IKapStartGrab */ IKAPBOARDDLL int IKAPBOARD_CC IKapClearGrab(void *hDev); /** * @brief Get transfer buffer address * @param[in] hDev : device handle * @param[in] nFrameNum : grab frame index * @param[out] pAddress : device address * @Return: * - IK_RTN_OK * - IK_RTN_ERROR * * @note * @see IKapGetBufferAddress */ IKAPBOARDDLL int IKAPBOARD_CC IKapGetBufferAddress(void *hDev, int nFrameNum, void **pAddress); /** * @brief Set transfer buffer address * @param[in] hDev : device handle * @param[in] nFrameNum : grab frame index * @param[in] pAddress : buffer address * @Return: * - IK_RTN_OK * - IK_RTN_ERROR * * @note * @see IKapGetBufferAddress */ IKAPBOARDDLL int IKAPBOARD_CC IKapSetBufferAddress(void *hDev, int nFrameNum, void *pAddress); /** * @brief 获取图像缓冲区物理总线映射地址 * @param[in] Handle : 采集卡句柄 * @param[in] nFrameNum : 缓冲区索引 * @param[out] pBusAddress : 物理总线地址 * @Return: * - IK_RTN_OK * - IK_RTN_ERROR * * @note * @see IKapSetBufferBusAddress */ IKAPBOARDDLL int IKAPBOARD_CC IKapGetBufferBusAddress(void *hDev, int nFrameNum, PIKAP_BUS_MEMORY pBusAddress); /** * @brief 设置图像缓冲区物理总线映射地址 * @param[in] Handle : 采集卡句柄 * @param[in] nFrameNum : 缓冲区索引 * @param[in] pBusAddress : 物理总线地址 * @Return: * - IK_RTN_OK * - IK_RTN_ERROR * * @note * @see IKapGetBufferBusAddress */ IKAPBOARDDLL int IKAPBOARD_CC IKapSetBufferBusAddress(void *hDev, int nFrameNum, IKAP_BUS_MEMORY BusAddress); /** * @brief Get buffer statue * @param[in] hDev : device handle * @param[in] nFrameNum : grab frame index * @param[out] pIKapBufferStatus : buffer status * @Return: * - IK_RTN_OK * - IK_RTN_ERROR * * @note * @see IKapGetBufferAddress */ IKAPBOARDDLL int IKAPBOARD_CC IKapGetBufferStatus(void *hDev, int nFrameNum, PIKAPBUFFERSTATUS pIKapBufferStatus); /** * @brief Get buffer statue ex * @param[in] hDev : device handle * @param[in] nFrameNum : grab frame index * @param[out] pIKapBufferStatus : buffer status * @Return: * - IK_RTN_OK * - IK_RTN_ERROR * * @note * @see IKapGetBufferAddress */ IKAPBOARDDLL int IKAPBOARD_CC IKapGetBufferStatusEx(void *hDev, int nFrameNum, PIKAPBUFFERSTATUSEX pIKapBufferStatusEx); /** * @brief release buffer to free state * @param[in] hDev : device handle * @param[in] nFrameNum : frame index * @Return: * - IK_RTN_OK * - IK_RTN_ERROR * * @note * @see IKapGetBufferAddress */ IKAPBOARDDLL int IKAPBOARD_CC IKapReleaseBuffer(void *hDev, int nFrameNum); /** * @brief Get camera status now * @param[in] hDev : device handle * @param[in] npValue : camera status * @Return: * - IK_RTN_OK * - IK_RTN_ERROR * * @note * @see IKapReleaseBuffer */ IKAPBOARDDLL int IKAPBOARD_CC IKapGetCameraStatus(void *hDev, int *npValue); /** * @brief Get last error info * @param[in] pIKapErrorInfo : error info * @param[in] bErrorReset : clear error info * @Return: * - void * * @note * @see */ IKAPBOARDDLL void IKAPBOARD_CC IKapGetLastError(PIKAPERRORINFO pIKapErrorInfo, int bErrorReset); /** * @brief Get map serial port number * @param[in] hDev : device handle * @param[in] npPortNumber : port number * @Return: * - IK_RTN_OK * - IK_RTN_ERROR * * @note * @see */ IKAPBOARDDLL int IKAPBOARD_CC IKapGetSerialPort(void *hDev, int *npPortNumber); /** * @brief Get current frame rate * @param[in] hDev : device handle * @param[in] dpFrameRate : frame rate * @Return: * - IK_RTN_OK * - IK_RTN_ERROR * * @note * @see */ IKAPBOARDDLL int IKAPBOARD_CC IKapGetFrameRate(void *hDev, double *dpFrameRate); /** * @brief 读取CXP串口数据 * @param[in] handle : 调试串口句柄 * @param[in] buffer : 缓冲区数据 * @param[in,out] length : * 作为输入,指示输入缓冲区的长度;作为输出,指示实际读取缓冲区的长度 * @Return: * - Handle : CXP调试串口设备句柄 * * @note * @see IKapClose */ IKAPBOARDDLL int IKAPBOARD_CC IKapReadCXPUart(void *hDev, char *buffer, unsigned *length); /** * @brief 写入CXP串口数据 * @param[in] handle : 调试串口句柄 * @param[in] buffer : 缓冲区数据 * @param[in] length : 作为输入,指示输入缓冲区的长度; * @Return: * - Handle : CXP调试串口设备句柄 * * @note * @see IKapClose */ IKAPBOARDDLL int IKAPBOARD_CC IKapWriteCXPUart(void *hDev, char *buffer, unsigned length); /** * @brief 等待CXP数据有效 * @param[in] handle : 调试串口句柄 * @param[in] timeout : 超时时间 * @Return: * - Handle : CXP调试串口设备句柄 * * @note * @see IKapClose */ IKAPBOARDDLL int IKAPBOARD_CC IKapWaitCXPUart(void *hDev, int timeout); /** * @brief 保存缓冲区到指定位置 * @param[in] Handle : 采集卡句柄 * @param[in] nFrameNum : frame buffer index * @param[in] fileName : frame buffer file name * @param[in] nFlag : Image compression flag * @Return: * - IK_RTN_OK * - IK_RTN_ERROR * * @note * @see IKapLoadBuffer */ IKAPBOARDDLL int IKAPBOARD_CC IKapSaveBuffer(void *hDev, int nFrameNum, const char *fileName, int nFlag); /** * @brief 保存缓冲区到指定位置 * @param[in] Handle : 采集卡句柄 * @param[in] nFrameNum : frame buffer index * @param[in] fileName : frame buffer file name * @Return: * - IK_RTN_OK * - IK_RTN_ERROR * * @note * @see IKapSaveBuffer */ IKAPBOARDDLL int IKAPBOARD_CC IKapLoadBuffer(void *hDev, int nFrameNum, const char *fileName); /** * @brief Read register * @param[in] hDev : board handle * @param[in] bar : board handle * @param[in] addr : * @param[out] npValue : info value * @Return: * - IK_RTN_OK * - IK_RTN_ERROR * * @note * @see IKapReadRegister */ IKAPBOARDDLL int IKAPBOARD_CC IKapReadRegister(void *hDev, unsigned int bar, unsigned int addr, unsigned int *val); /** * @brief Write register * @param[in] hDev : board handle * @param[in] bar : board bar * @param[in] addr : board address * @param[out] val : value * @Return: * - IK_RTN_OK * - IK_RTN_ERROR * * @note * @see IKapReadRegister */ IKAPBOARDDLL int IKAPBOARD_CC IKapWriteRegister(void *hDev, unsigned int bar, unsigned int addr, unsigned int val); /** * @brief 对于某些应用场景, 需要在IKapStartGrab之前使用IKapPrepareGrab * @param[in] Handle : 采集卡句柄 * @Return: * - IK_RTN_OK * - IK_RTN_ERROR * * @note 此函数调用可能会触发采集相关回调, 所以最好在还没有注册采集相关回调时使用 * @see IKapStartGrab */ IKAPBOARDDLL int IKAPBOARD_CC IKapPrepareGrab(void *hDev); #ifdef __cplusplus } #endif // __cplusplus #endif