2026-03-28 10:49:55 +08:00
# include "ConfigureCamera.h"
void ConfigureCamera ( pItkCamera pCam , int index , const char * deviceClass )
{
ITKSTATUS res = ITKSTATUS_OK ;
int ret = IK_RTN_OK ;
uint32_t numCameras = 0 ;
/// \~chinese ö<> ٿ<EFBFBD> <D9BF> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ڴ<EFBFBD> <DAB4> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ǰ<EFBFBD> <C7B0> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ItkManGetDeviceCount() <20> <> <EFBFBD> <EFBFBD> \~english Enumerate
/// the number of available cameras. Before opening the camera, ItkManGetDeviceCount() function must be called.
res = ItkManGetDeviceCount ( & numCameras ) ;
CHECK_IKAPC ( res ) ;
if ( numCameras = = 0 | | pCam = = NULL ) {
printf ( " No camera. \n " ) ;
ItkManTerminate ( ) ;
pressEnterToExit ( ) ;
exit ( EXIT_FAILURE ) ;
}
uint32_t i = 0 ;
ITKDEV_INFO di ;
/// \~chinese <20> ɼ<F2BFAAB2> <C9BC> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ӵ<EFBFBD> <D3B5> <EFBFBD> <EFBFBD> <EFBFBD> \~english Open grabber linked camera
for ( ; i < numCameras ; i + + ) {
/// \~chinese <20> <> ȡ<EFBFBD> <C8A1> <EFBFBD> <EFBFBD> <EFBFBD> 豸<EFBFBD> <E8B1B8> Ϣ \~english Get camera device information
res = ItkManGetDeviceInfo ( i , & di ) ;
if ( pCam - > g_SerialNumber ! = NULL ) {
/// \~chinese <20> <> <EFBFBD> 豸<EFBFBD> <E8B1B8> <EFBFBD> к<EFBFBD> <D0BA> <EFBFBD> ȷʱ \~english When the serial number is proper
if ( strcmp ( di . SerialNumber , pCam - > g_SerialNumber ) = = 0 & & strcmp ( di . SerialNumber , " " ) ! = 0 ) {
printf ( " Using camera: serial: %s, name: %s, interface: %s. \n " , di . SerialNumber , di . FullName , di . DeviceClass ) ;
res = ItkDevOpen ( i , ITKDEV_VAL_ACCESS_MODE_EXCLUSIVE , & pCam - > g_hCamera ) ;
CHECK_IKAPC ( res ) ;
break ;
}
} else if ( index > = 0 ) {
/// \~chinese <20> <> <EFBFBD> 豸<EFBFBD> <E8B1B8> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ȷʱ \~english When the index is proper
if ( i = = index ) {
printf ( " Using camera: serial: %s, name: %s, interface: %s. \n " , di . SerialNumber , di . FullName , di . DeviceClass ) ;
res = ItkDevOpen ( i , ITKDEV_VAL_ACCESS_MODE_EXCLUSIVE , & pCam - > g_hCamera ) ;
CHECK_IKAPC ( res ) ;
pCam - > g_index = i ;
break ;
}
} else if ( deviceClass ! = NULL ) {
/// \~chinese <20> <> <EFBFBD> 豸<EFBFBD> <E8B1B8> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ȷʱ \~english When the device class is proper
if ( strcmp ( di . DeviceClass , deviceClass ) = = 0 ) {
printf ( " Using camera: serial: %s, name: %s, interface: %s. \n " , di . SerialNumber , di . FullName , di . DeviceClass ) ;
res = ItkDevOpen ( i , ITKDEV_VAL_ACCESS_MODE_EXCLUSIVE , & pCam - > g_hCamera ) ;
CHECK_IKAPC ( res ) ;
break ;
}
} else {
printf ( " Please set proper attribute to open camera. \n " ) ;
ItkManTerminate ( ) ;
pressEnterToExit ( ) ;
exit ( EXIT_FAILURE ) ;
}
}
if ( i > = numCameras ) {
printf ( " Cannot find proper camera. \n " ) ;
ItkManTerminate ( ) ;
pressEnterToExit ( ) ;
exit ( EXIT_FAILURE ) ;
}
// \~chinese <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ij<EFBFBD> ʱʱ<CAB1> <CAB1> \~english set timeout of camera
uint32_t timeout = 20000 ;
res = ItkDevSetPrm ( pCam - > g_hCamera , ITKDEV_PRM_HEARTBEAT_TIMEOUT , & timeout ) ;
CHECK ( res ) ;
// \~chinese <20> <> ȡ<EFBFBD> <C8A1> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> б <EFBFBD> <D0B1> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ò<EFBFBD> <C3B2> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ÷<EFBFBD> <C3B7> <EFBFBD> \~english Get list of features' name and select parameter
// configure method
GetAllConfigureMethods ( pCam ) ;
pCam - > g_devInfo = di ;
ITK_CXP_DEV_INFO cxp_cam_info = { } ;
ITK_GVB_DEV_INFO gvb_cam_info = { } ;
ITK_CL_DEV_INFO cl_cam_info = { } ;
void * info = NULL ;
if ( strcmp ( di . DeviceClass , " CoaXPress " ) = = 0 ) {
/// \~chinese <20> <> ȡCoaXPress<73> <73> <EFBFBD> <EFBFBD> <EFBFBD> 豸<EFBFBD> <E8B1B8> Ϣ \~english Get CoaXPress camera device information
res = ItkManGetCXPDeviceInfo ( i , & cxp_cam_info ) ;
CHECK_IKAPC ( res ) ;
info = & cxp_cam_info ;
} else if ( strcmp ( di . DeviceClass , " GigEVisionBoard " ) = = 0 ) {
/// \~chinese <20> <> ȡGigEVision<6F> <6E> <EFBFBD> <EFBFBD> <EFBFBD> 豸<EFBFBD> <E8B1B8> Ϣ \~english Get GigEVision camera device information
res = ItkManGetGVBDeviceInfo ( i , & gvb_cam_info ) ;
CHECK_IKAPC ( res ) ;
info = & gvb_cam_info ;
} else if ( strcmp ( di . DeviceClass , " CameraLink " ) = = 0 ) {
/// \~chinese <20> <> ȡCameraLink<6E> <6B> <EFBFBD> <EFBFBD> <EFBFBD> 豸<EFBFBD> <E8B1B8> Ϣ \~english Get CameraLink camera device information
res = ItkManGetCLDeviceInfo ( i , & cl_cam_info ) ;
CHECK_IKAPC ( res ) ;
info = & cl_cam_info ;
} else {
return ;
}
pCam - > g_hBoard = IKapOpenWithSpecificInfo ( info ) ;
if ( pCam - > g_hBoard = = INVALID_HANDLE_VALUE )
CHECK_IKAPBOARD ( IKStatus_OpenBoardFail ) ;
}
void GetAllConfigureMethods ( pItkCamera pCam )
{
ITKSTATUS res = ITKSTATUS_OK ;
ITK_FEATURE_BASE_INFO pFea = { } ;
// width
if ( ItkDevGetFeatureInfo ( pCam - > g_hCamera , " RegionEnable " , & pFea ) = = ITKSTATUS_OK ) {
if ( ItkDevGetFeatureInfo ( pCam - > g_hCamera , " RegionWidth " , & pFea ) = = ITKSTATUS_OK ) {
pCam - > g_configMethod [ ITEK_CAMERA_WIDTH_CONFIG ] = ITEK_CAMERA_WIDTH_CONFIG_METHOD_1 ;
}
} else if ( ItkDevGetFeatureInfo ( pCam - > g_hCamera , " ROIEnable " , & pFea ) = = ITKSTATUS_OK ) {
if ( ItkDevGetFeatureInfo ( pCam - > g_hCamera , " ROIWidth " , & pFea ) = = ITKSTATUS_OK ) {
pCam - > g_configMethod [ ITEK_CAMERA_WIDTH_CONFIG ] = ITEK_CAMERA_WIDTH_CONFIG_METHOD_2 ;
}
} else if ( ItkDevGetFeatureInfo ( pCam - > g_hCamera , " RegionWidth " , & pFea ) = = ITKSTATUS_OK ) {
pCam - > g_configMethod [ ITEK_CAMERA_WIDTH_CONFIG ] = ITEK_CAMERA_WIDTH_CONFIG_METHOD_3 ;
} else if ( ItkDevGetFeatureInfo ( pCam - > g_hCamera , " ROIWidth " , & pFea ) = = ITKSTATUS_OK ) {
pCam - > g_configMethod [ ITEK_CAMERA_WIDTH_CONFIG ] = ITEK_CAMERA_WIDTH_CONFIG_METHOD_4 ;
}
// height
if ( ItkDevGetFeatureInfo ( pCam - > g_hCamera , " RegionEnable " , & pFea ) = = ITKSTATUS_OK ) {
if ( ItkDevGetFeatureInfo ( pCam - > g_hCamera , " RegionHeight " , & pFea ) = = ITKSTATUS_OK ) {
pCam - > g_configMethod [ ITEK_CAMERA_WIDTH_CONFIG ] = ITEK_CAMERA_HEIGHT_CONFIG_METHOD_1 ;
}
} else if ( ItkDevGetFeatureInfo ( pCam - > g_hCamera , " ROIEnable " , & pFea ) = = ITKSTATUS_OK ) {
if ( ItkDevGetFeatureInfo ( pCam - > g_hCamera , " ROIHeight " , & pFea ) = = ITKSTATUS_OK ) {
pCam - > g_configMethod [ ITEK_CAMERA_WIDTH_CONFIG ] = ITEK_CAMERA_HEIGHT_CONFIG_METHOD_2 ;
}
} else if ( ItkDevGetFeatureInfo ( pCam - > g_hCamera , " RegionHeight " , & pFea ) = = ITKSTATUS_OK ) {
pCam - > g_configMethod [ ITEK_CAMERA_WIDTH_CONFIG ] = ITEK_CAMERA_HEIGHT_CONFIG_METHOD_3 ;
} else if ( ItkDevGetFeatureInfo ( pCam - > g_hCamera , " ROIHeight " , & pFea ) = = ITKSTATUS_OK ) {
pCam - > g_configMethod [ ITEK_CAMERA_WIDTH_CONFIG ] = ITEK_CAMERA_HEIGHT_CONFIG_METHOD_4 ;
}
// exposure time
if ( ItkDevGetFeatureInfo ( pCam - > g_hCamera , " ExposureTimeRaw " , & pFea ) = = ITKSTATUS_OK ) {
pCam - > g_configMethod [ ITEK_CAMERA_EXPOSURE_TIME_CONFIG ] = ITEK_CAMERA_EXPOSURE_TIME_CONFIG_METHOD_1 ;
} else if ( ItkDevGetFeatureInfo ( pCam - > g_hCamera , " AreaMode " , & pFea ) = = ITKSTATUS_OK ) {
if ( ItkDevGetFeatureInfo ( pCam - > g_hCamera , " ExposureTime " , & pFea ) = = ITKSTATUS_OK ) {
pCam - > g_configMethod [ ITEK_CAMERA_EXPOSURE_TIME_CONFIG ] = ITEK_CAMERA_EXPOSURE_TIME_CONFIG_METHOD_2 ;
} else if ( ItkDevGetFeatureInfo ( pCam - > g_hCamera , " AreaExposureTime " , & pFea ) = = ITKSTATUS_OK ) {
pCam - > g_configMethod [ ITEK_CAMERA_EXPOSURE_TIME_CONFIG ] = ITEK_CAMERA_EXPOSURE_TIME_CONFIG_METHOD_3 ;
}
} else if ( ItkDevGetFeatureInfo ( pCam - > g_hCamera , " ExposureTime " , & pFea ) = = ITKSTATUS_OK ) {
pCam - > g_configMethod [ ITEK_CAMERA_EXPOSURE_TIME_CONFIG ] = ITEK_CAMERA_EXPOSURE_TIME_CONFIG_METHOD_4 ;
} else if ( ItkDevGetFeatureInfo ( pCam - > g_hCamera , " Area " , & pFea ) = = ITKSTATUS_OK ) {
if ( ItkDevGetFeatureInfo ( pCam - > g_hCamera , " AreaExposureTime " , & pFea ) = = ITKSTATUS_OK ) {
pCam - > g_configMethod [ ITEK_CAMERA_EXPOSURE_TIME_CONFIG ] = ITEK_CAMERA_EXPOSURE_TIME_CONFIG_METHOD_5 ;
}
}
// digital Gain
if ( ItkDevGetFeatureInfo ( pCam - > g_hCamera , " DigitalGain " , & pFea ) = = ITKSTATUS_OK ) {
pCam - > g_configMethod [ ITEK_CAMERA_DIGITAL_GAIN_CONFIG ] = ITEK_CAMERA_DIGITAL_GAIN_CONFIG_METHOD_1 ;
} else if ( ItkDevGetFeatureInfo ( pCam - > g_hCamera , " Gain " , & pFea ) = = ITKSTATUS_OK ) {
pCam - > g_configMethod [ ITEK_CAMERA_DIGITAL_GAIN_CONFIG ] = ITEK_CAMERA_DIGITAL_GAIN_CONFIG_METHOD_2 ;
}
// line Rate
if ( ItkDevGetFeatureInfo ( pCam - > g_hCamera , " LinePeriodTime " , & pFea ) = = ITKSTATUS_OK ) {
pCam - > g_configMethod [ ITEK_CAMERA_LINE_RATE_CONFIG ] = ITEK_CAMERA_LINE_RATE_CONFIG_METHOD_1 ;
} else if ( ItkDevGetFeatureInfo ( pCam - > g_hCamera , " AcquisitionLinePeriod " , & pFea ) = = ITKSTATUS_OK ) {
pCam - > g_configMethod [ ITEK_CAMERA_LINE_RATE_CONFIG ] = ITEK_CAMERA_LINE_RATE_CONFIG_METHOD_2 ;
} else if ( ItkDevGetFeatureInfo ( pCam - > g_hCamera , " AcquisitionLineRate " , & pFea ) = = ITKSTATUS_OK ) {
pCam - > g_configMethod [ ITEK_CAMERA_LINE_RATE_CONFIG ] = ITEK_CAMERA_LINE_RATE_CONFIG_METHOD_3 ;
}
// frame Rate
if ( ItkDevGetFeatureInfo ( pCam - > g_hCamera , " AcquisitionFramePeriodRaw " , & pFea ) = = ITKSTATUS_OK ) {
pCam - > g_configMethod [ ITEK_CAMERA_FRAME_RATE_CONFIG ] = ITEK_CAMERA_FRAME_RATE_CONFIG_METHOD_1 ;
} else if ( ItkDevGetFeatureInfo ( pCam - > g_hCamera , " AcquisitionFramePeriod " , & pFea ) = = ITKSTATUS_OK ) {
if ( ITKFEATURE_VAL_TYPE_INT64 = = pFea . Type ) {
pCam - > g_configMethod [ ITEK_CAMERA_FRAME_RATE_CONFIG ] = ITEK_CAMERA_FRAME_RATE_CONFIG_METHOD_2 ;
}
else if ( ITKFEATURE_VAL_TYPE_DOUBLE = = pFea . Type ) {
pCam - > g_configMethod [ ITEK_CAMERA_FRAME_RATE_CONFIG ] = ITEK_CAMERA_FRAME_RATE_CONFIG_METHOD_3 ;
}
} else if ( ItkDevGetFeatureInfo ( pCam - > g_hCamera , " FramePeriodTime " , & pFea ) = = ITKSTATUS_OK ) {
pCam - > g_configMethod [ ITEK_CAMERA_FRAME_RATE_CONFIG ] = ITEK_CAMERA_FRAME_RATE_CONFIG_METHOD_4 ;
} else if (
ItkDevGetFeatureInfo ( pCam - > g_hCamera , " AcquisitionFrameRateEnable " , & pFea ) = = ITKSTATUS_OK & &
ItkDevGetFeatureInfo ( pCam - > g_hCamera , " AcquisitionFrameRate " , & pFea ) = = ITKSTATUS_OK ) {
pCam - > g_configMethod [ ITEK_CAMERA_FRAME_RATE_CONFIG ] = ITEK_CAMERA_FRAME_RATE_CONFIG_METHOD_5 ;
} else if ( ItkDevGetFeatureInfo ( pCam - > g_hCamera , " AcquisitionFrameRate " , & pFea ) = = ITKSTATUS_OK ) {
pCam - > g_configMethod [ ITEK_CAMERA_FRAME_RATE_CONFIG ] = ITEK_CAMERA_FRAME_RATE_CONFIG_METHOD_6 ;
}
// line Trigger
if ( ItkDevGetFeatureInfo ( pCam - > g_hCamera , " TriggerSelector " , & pFea ) = = ITKSTATUS_OK ) {
if ( ItkDevGetFeatureInfo ( pCam - > g_hCamera , " TriggerMode " , & pFea ) = = ITKSTATUS_OK & &
ItkDevGetFeatureInfo ( pCam - > g_hCamera , " ExposureMode " , & pFea ) = = ITKSTATUS_OK ) {
pCam - > g_configMethod [ ITEK_CAMERA_LINE_TRIGGER_CONFIG ] = ITEK_CAMERA_LINE_TRIGGER_CONFIG_METHOD_1 ;
}
} else if (
ItkDevGetFeatureInfo ( pCam - > g_hCamera , " TriggerMode " , & pFea ) = = ITKSTATUS_OK & &
ItkDevGetFeatureInfo ( pCam - > g_hCamera , " ExposureMode " , & pFea ) = = ITKSTATUS_OK ) {
pCam - > g_configMethod [ ITEK_CAMERA_LINE_TRIGGER_CONFIG ] = ITEK_CAMERA_LINE_TRIGGER_CONFIG_METHOD_2 ;
} else if ( ItkDevGetFeatureInfo ( pCam - > g_hCamera , " SynchronizationMode " , & pFea ) = = ITKSTATUS_OK ) {
pCam - > g_configMethod [ ITEK_CAMERA_LINE_TRIGGER_CONFIG ] = ITEK_CAMERA_LINE_TRIGGER_CONFIG_METHOD_3 ;
}
// frame Trigger
if ( ItkDevGetFeatureInfo ( pCam - > g_hCamera , " TriggerSelector " , & pFea ) = = ITKSTATUS_OK ) {
if ( ItkDevGetFeatureInfo ( pCam - > g_hCamera , " TriggerMode " , & pFea ) = = ITKSTATUS_OK & &
ItkDevGetFeatureInfo ( pCam - > g_hCamera , " ExposureMode " , & pFea ) = = ITKSTATUS_OK ) {
pCam - > g_configMethod [ ITEK_CAMERA_FRAME_TRIGGER_CONFIG ] = ITEK_CAMERA_FRAME_TRIGGER_CONFIG_METHOD_1 ;
}
} else if (
ItkDevGetFeatureInfo ( pCam - > g_hCamera , " FrameTriggerEnable " , & pFea ) = = ITKSTATUS_OK & &
ItkDevGetFeatureInfo ( pCam - > g_hCamera , " FrameTriggerType " , & pFea ) = = ITKSTATUS_OK ) {
pCam - > g_configMethod [ ITEK_CAMERA_FRAME_TRIGGER_CONFIG ] = ITEK_CAMERA_FRAME_TRIGGER_CONFIG_METHOD_2 ;
} else if ( ItkDevGetFeatureInfo ( pCam - > g_hCamera , " ExposureMode " , & pFea ) = = ITKSTATUS_OK ) {
pCam - > g_configMethod [ ITEK_CAMERA_FRAME_TRIGGER_CONFIG ] = ITEK_CAMERA_FRAME_TRIGGER_CONFIG_METHOD_3 ;
}
// trigger source
if ( ItkDevGetFeatureInfo ( pCam - > g_hCamera , " FrameTriggerSource " , & pFea ) = = ITKSTATUS_OK ) {
pCam - > g_configMethod [ ITEK_CAMERA_TRIGGER_SOURCE_CONFIG ] = ITEK_CAMERA_TRIGGER_SOURCE_CONFIG_METHOD_1 ;
} else if ( ItkDevGetFeatureInfo ( pCam - > g_hCamera , " ExternalTriggerSource " , & pFea ) = = ITKSTATUS_OK ) {
pCam - > g_configMethod [ ITEK_CAMERA_TRIGGER_SOURCE_CONFIG ] = ITEK_CAMERA_TRIGGER_SOURCE_CONFIG_METHOD_2 ;
} else if ( ItkDevGetFeatureInfo ( pCam - > g_hCamera , " TriggerSource " , & pFea ) = = ITKSTATUS_OK ) {
pCam - > g_configMethod [ ITEK_CAMERA_TRIGGER_SOURCE_CONFIG ] = ITEK_CAMERA_TRIGGER_SOURCE_CONFIG_METHOD_3 ;
}
// trigger polarity
if ( ItkDevGetFeatureInfo ( pCam - > g_hCamera , " FrameTriggerPolarity " , & pFea ) = = ITKSTATUS_OK ) {
pCam - > g_configMethod [ ITEK_CAMERA_TRIGGER_POLARITY_CONFIG ] = ITEK_CAMERA_TRIGGER_POLARITY_CONFIG_METHOD_1 ;
} else if ( ItkDevGetFeatureInfo ( pCam - > g_hCamera , " ExternalTriggerActivation " , & pFea ) = = ITKSTATUS_OK ) {
pCam - > g_configMethod [ ITEK_CAMERA_TRIGGER_POLARITY_CONFIG ] = ITEK_CAMERA_TRIGGER_POLARITY_CONFIG_METHOD_2 ;
} else if ( ItkDevGetFeatureInfo ( pCam - > g_hCamera , " LinePolarity " , & pFea ) = = ITKSTATUS_OK ) {
pCam - > g_configMethod [ ITEK_CAMERA_TRIGGER_POLARITY_CONFIG ] = ITEK_CAMERA_TRIGGER_POLARITY_CONFIG_METHOD_3 ;
} else if ( ItkDevGetFeatureInfo ( pCam - > g_hCamera , " TriggerActivation " , & pFea ) = = ITKSTATUS_OK ) {
pCam - > g_configMethod [ ITEK_CAMERA_TRIGGER_POLARITY_CONFIG ] = ITEK_CAMERA_TRIGGER_POLARITY_CONFIG_METHOD_4 ;
}
// multi exposure
if ( ItkDevGetFeatureInfo ( pCam - > g_hCamera , " MultiExposureTimeCount " , & pFea ) = =
ITKSTATUS_OK ) {
pCam - > g_configMethod [ ITEK_CAMERA_MULTI_EXPOSURE_CONFIG ] =
ITEK_CAMERA_MULTI_EXPOSURE_CONFIG_METHOD_1 ;
}
// chunk data
if ( ItkDevGetFeatureInfo ( pCam - > g_hCamera , " ChunkModeActive " , & pFea ) = =
ITKSTATUS_OK & &
ItkDevGetFeatureInfo ( pCam - > g_hCamera , " ChunkSelector " , & pFea ) = =
ITKSTATUS_OK & &
ItkDevGetFeatureInfo ( pCam - > g_hCamera , " ChunkEnable " , & pFea ) = =
ITKSTATUS_OK ) {
pCam - > g_configMethod [ ITEK_CAMERA_CHUNK_DATA_CONFIG ] =
ITEK_CAMERA_CHUNK_DATA_CONFIG_METHOD_1 ;
}
}
ITKSTATUS SetWidth ( pItkCamera pCam , int64_t width )
{
ITKSTATUS res = ITKSTATUS_OK ;
int ret = IK_RTN_OK ;
ITK_FEATURE_BASE_INFO pFea = { } ;
uint32_t accMode = ITKFEATURE_VAL_ACCESS_MODE_NA ;
ItkDevGetAccessMode ( pCam - > g_hCamera , " Width " , & accMode ) ;
if ( ItkDevGetFeatureInfo ( pCam - > g_hCamera , " Width " , & pFea ) = = ITKSTATUS_OK & & ITKFEATURE_VAL_ACCESS_MODE_RW = = accMode ) {
return ItkDevSetInt64 ( pCam - > g_hCamera , " Width " , width ) ;
}
switch ( pCam - > g_configMethod [ ITEK_CAMERA_WIDTH_CONFIG ] ) {
case ITEK_CAMERA_WIDTH_CONFIG_METHOD_1 :
res = ItkDevSetBool ( pCam - > g_hCamera , " RegionEnable " , true ) ;
if ( ITKSTATUS_OK ! = res )
return res ;
res = ItkDevSetInt64 ( pCam - > g_hCamera , " RegionWidth " , width ) ;
if ( ITKSTATUS_OK ! = res )
return res ;
break ;
case ITEK_CAMERA_WIDTH_CONFIG_METHOD_2 :
res = ItkDevSetBool ( pCam - > g_hCamera , " ROIEnable " , true ) ;
if ( ITKSTATUS_OK ! = res )
return res ;
res = ItkDevSetInt64 ( pCam - > g_hCamera , " ROIWidth " , width ) ;
if ( ITKSTATUS_OK ! = res )
return res ;
break ;
case ITEK_CAMERA_WIDTH_CONFIG_METHOD_3 :
res = ItkDevSetInt64 ( pCam - > g_hCamera , " RegionWidth " , width ) ;
if ( ITKSTATUS_OK ! = res )
return res ;
break ;
case ITEK_CAMERA_WIDTH_CONFIG_METHOD_4 :
res = ItkDevSetInt64 ( pCam - > g_hCamera , " ROIWidth " , width ) ;
if ( ITKSTATUS_OK ! = res )
return res ;
break ;
default :
return ITKSTATUS_INVALID_ARG ;
break ;
}
if ( pCam - > g_hBoard ! = INVALID_HANDLE_VALUE ) {
ret = IKapSetInfo ( pCam - > g_hBoard , IKP_IMAGE_WIDTH , ( int ) width ) ;
if ( ret ! = IK_RTN_OK ) {
return ITKSTATUS_INVALID_ARG ;
}
}
return res ;
}
ITKSTATUS GetWidth ( pItkCamera pCam , int64_t * width )
{
return ItkDevGetInt64 ( pCam - > g_hCamera , " Width " , width ) ;
}
ITKSTATUS SetHeight ( pItkCamera pCam , int64_t height )
{
ITKSTATUS res = ITKSTATUS_OK ;
int ret = IK_RTN_OK ;
ITK_FEATURE_BASE_INFO pFea = { } ;
uint32_t accMode = ITKFEATURE_VAL_ACCESS_MODE_NA ;
ItkDevGetAccessMode ( pCam - > g_hCamera , " Height " , & accMode ) ;
if ( ItkDevGetFeatureInfo ( pCam - > g_hCamera , " Height " , & pFea ) = = ITKSTATUS_OK & & ITKFEATURE_VAL_ACCESS_MODE_RW = = accMode ) {
return ItkDevSetInt64 ( pCam - > g_hCamera , " Height " , height ) ;
}
switch ( pCam - > g_configMethod [ ITEK_CAMERA_WIDTH_CONFIG ] ) {
case ITEK_CAMERA_HEIGHT_CONFIG_METHOD_1 :
res = ItkDevSetBool ( pCam - > g_hCamera , " RegionEnable " , true ) ;
if ( ITKSTATUS_OK ! = res )
return res ;
res = ItkDevSetInt64 ( pCam - > g_hCamera , " RegionHeight " , height ) ;
if ( ITKSTATUS_OK ! = res )
return res ;
break ;
case ITEK_CAMERA_HEIGHT_CONFIG_METHOD_2 :
res = ItkDevSetBool ( pCam - > g_hCamera , " ROIEnable " , true ) ;
if ( ITKSTATUS_OK ! = res )
return res ;
res = ItkDevSetInt64 ( pCam - > g_hCamera , " ROIHeight " , height ) ;
if ( ITKSTATUS_OK ! = res )
return res ;
break ;
case ITEK_CAMERA_HEIGHT_CONFIG_METHOD_3 :
res = ItkDevSetInt64 ( pCam - > g_hCamera , " RegionHeight " , height ) ;
if ( ITKSTATUS_OK ! = res )
return res ;
break ;
case ITEK_CAMERA_HEIGHT_CONFIG_METHOD_4 :
res = ItkDevSetInt64 ( pCam - > g_hCamera , " ROIHeight " , height ) ;
if ( ITKSTATUS_OK ! = res )
return res ;
break ;
default :
return ITKSTATUS_INVALID_ARG ;
break ;
}
if ( pCam - > g_hBoard ! = INVALID_HANDLE_VALUE ) {
ret = IKapSetInfo ( pCam - > g_hBoard , IKP_IMAGE_HEIGHT , ( int ) height ) ;
if ( ret ! = IK_RTN_OK ) {
return ITKSTATUS_INVALID_ARG ;
}
}
return res ;
}
ITKSTATUS GetHeight ( pItkCamera pCam , int64_t * height )
{
return ItkDevGetInt64 ( pCam - > g_hCamera , " Height " , height ) ;
}
ITKSTATUS SetPixelFormat ( pItkCamera pCam , const char * pixelFormat )
{
return ItkDevFromString ( pCam - > g_hCamera , " PixelFormat " , pixelFormat ) ;
}
ITKSTATUS GetPixelFormat ( pItkCamera pCam , char * pBuffer , uint32_t * count )
{
return ItkDevToString ( pCam - > g_hCamera , " PixelFormat " , pBuffer , count ) ;
}
ITKSTATUS SetExposureTime ( pItkCamera pCam , double exposureTime )
{
ITKSTATUS res = ITKSTATUS_OK ;
int64_t exposureTime_int64 = ( int64_t ) exposureTime ;
bool areaMode = false ;
uint32_t ExposureTimeType = ITKFEATURE_VAL_TYPE_UNDEFINED ;
uint32_t AreaExposureTimeType = ITKFEATURE_VAL_TYPE_UNDEFINED ;
ITK_FEATURE_BASE_INFO featureInfo = { } ;
if ( ITEK_CAMERA_EXPOSURE_TIME_CONFIG_METHOD_2 = = pCam - > g_configMethod [ ITEK_CAMERA_EXPOSURE_TIME_CONFIG ] | |
ITEK_CAMERA_EXPOSURE_TIME_CONFIG_METHOD_4 = = pCam - > g_configMethod [ ITEK_CAMERA_EXPOSURE_TIME_CONFIG ] ) {
res = ItkDevGetFeatureInfo ( pCam - > g_hCamera , " ExposureTime " , & featureInfo ) ;
if ( ITKSTATUS_OK ! = res )
return res ;
ExposureTimeType = featureInfo . Type ;
}
if ( ITEK_CAMERA_EXPOSURE_TIME_CONFIG_METHOD_3 = = pCam - > g_configMethod [ ITEK_CAMERA_EXPOSURE_TIME_CONFIG ] | |
ITEK_CAMERA_EXPOSURE_TIME_CONFIG_METHOD_5 = = pCam - > g_configMethod [ ITEK_CAMERA_EXPOSURE_TIME_CONFIG ] ) {
res = ItkDevGetFeatureInfo ( pCam - > g_hCamera , " AreaExposureTime " , & featureInfo ) ;
if ( ITKSTATUS_OK ! = res )
return res ;
AreaExposureTimeType = featureInfo . Type ;
}
switch ( pCam - > g_configMethod [ ITEK_CAMERA_EXPOSURE_TIME_CONFIG ] ) {
case ITEK_CAMERA_EXPOSURE_TIME_CONFIG_METHOD_1 :
return ItkDevSetInt64 ( pCam - > g_hCamera , " ExposureTimeRaw " , exposureTime_int64 ) ;
break ;
case ITEK_CAMERA_EXPOSURE_TIME_CONFIG_METHOD_2 :
res = ItkDevGetBool ( pCam - > g_hCamera , " AreaMode " , & areaMode ) ;
if ( ITKSTATUS_OK ! = res )
return res ;
if ( false = = areaMode )
return ITKSTATUS_INVALID_ARG ;
if ( ITKFEATURE_VAL_TYPE_INT64 = = ExposureTimeType ) {
return ItkDevSetInt64 ( pCam - > g_hCamera , " ExposureTime " , exposureTime_int64 ) ;
} else if ( ITKFEATURE_VAL_TYPE_DOUBLE = = ExposureTimeType ) {
return ItkDevSetDouble ( pCam - > g_hCamera , " ExposureTime " , exposureTime ) ;
}
break ;
case ITEK_CAMERA_EXPOSURE_TIME_CONFIG_METHOD_3 :
res = ItkDevGetBool ( pCam - > g_hCamera , " AreaMode " , & areaMode ) ;
if ( ITKSTATUS_OK ! = res )
return res ;
if ( false = = areaMode )
return ITKSTATUS_INVALID_ARG ;
if ( ITKFEATURE_VAL_TYPE_INT64 = = AreaExposureTimeType ) {
return ItkDevSetInt64 ( pCam - > g_hCamera , " AreaExposureTime " , exposureTime_int64 ) ;
} else if ( ITKFEATURE_VAL_TYPE_DOUBLE = = ExposureTimeType ) {
return ItkDevSetDouble ( pCam - > g_hCamera , " AreaExposureTime " , exposureTime ) ;
}
break ;
case ITEK_CAMERA_EXPOSURE_TIME_CONFIG_METHOD_4 :
if ( ITKFEATURE_VAL_TYPE_INT64 = = ExposureTimeType ) {
return ItkDevSetInt64 ( pCam - > g_hCamera , " ExposureTime " , exposureTime_int64 ) ;
} else if ( ITKFEATURE_VAL_TYPE_DOUBLE = = ExposureTimeType ) {
return ItkDevSetDouble ( pCam - > g_hCamera , " ExposureTime " , exposureTime ) ;
}
break ;
case ITEK_CAMERA_EXPOSURE_TIME_CONFIG_METHOD_5 :
res = ItkDevGetBool ( pCam - > g_hCamera , " Area " , & areaMode ) ;
if ( ITKSTATUS_OK ! = res )
return res ;
if ( false = = areaMode )
return ITKSTATUS_INVALID_ARG ;
if ( ITKFEATURE_VAL_TYPE_INT64 = = AreaExposureTimeType ) {
return ItkDevSetInt64 ( pCam - > g_hCamera , " AreaExposureTime " , exposureTime_int64 ) ;
}
else if ( ITKFEATURE_VAL_TYPE_DOUBLE = = ExposureTimeType ) {
return ItkDevSetDouble ( pCam - > g_hCamera , " AreaExposureTime " , exposureTime ) ;
}
break ;
default :
break ;
}
return ITKSTATUS_INVALID_ARG ;
}
ITKSTATUS GetExposureTime ( pItkCamera pCam , double * exposureTime )
{
ITKSTATUS res = ITKSTATUS_OK ;
if ( ! exposureTime ) {
return ITKSTATUS_INVALID_ARG ;
}
uint32_t ExposureTimeType = ITKFEATURE_VAL_TYPE_UNDEFINED ;
uint32_t AreaExposureTimeType = ITKFEATURE_VAL_TYPE_UNDEFINED ;
ITK_FEATURE_BASE_INFO featureInfo = { } ;
if ( ITEK_CAMERA_EXPOSURE_TIME_CONFIG_METHOD_2 = = pCam - > g_configMethod [ ITEK_CAMERA_EXPOSURE_TIME_CONFIG ] | |
ITEK_CAMERA_EXPOSURE_TIME_CONFIG_METHOD_4 = = pCam - > g_configMethod [ ITEK_CAMERA_EXPOSURE_TIME_CONFIG ] ) {
res = ItkDevGetFeatureInfo ( pCam - > g_hCamera , " ExposureTime " , & featureInfo ) ;
if ( ITKSTATUS_OK ! = res )
return res ;
ExposureTimeType = featureInfo . Type ;
}
if ( ITEK_CAMERA_EXPOSURE_TIME_CONFIG_METHOD_3 = = pCam - > g_configMethod [ ITEK_CAMERA_EXPOSURE_TIME_CONFIG ] | | ITEK_CAMERA_EXPOSURE_TIME_CONFIG_METHOD_5 = = pCam - > g_configMethod [ ITEK_CAMERA_EXPOSURE_TIME_CONFIG ] ) {
res = ItkDevGetFeatureInfo ( pCam - > g_hCamera , " AreaExposureTime " , & featureInfo ) ;
if ( ITKSTATUS_OK ! = res )
return res ;
AreaExposureTimeType = featureInfo . Type ;
}
int64_t expTime = 0 ;
switch ( pCam - > g_configMethod [ ITEK_CAMERA_EXPOSURE_TIME_CONFIG ] ) {
case ITEK_CAMERA_EXPOSURE_TIME_CONFIG_METHOD_1 :
res = ItkDevGetInt64 ( pCam - > g_hCamera , " ExposureTimeRaw " , & expTime ) ;
if ( res = = ITKSTATUS_OK ) {
* exposureTime = ( double ) expTime ;
}
break ;
case ITEK_CAMERA_EXPOSURE_TIME_CONFIG_METHOD_2 :
case ITEK_CAMERA_EXPOSURE_TIME_CONFIG_METHOD_4 :
if ( ITKFEATURE_VAL_TYPE_INT64 = = ExposureTimeType ) {
res = ItkDevGetInt64 ( pCam - > g_hCamera , " ExposureTime " , & expTime ) ;
if ( res = = ITKSTATUS_OK ) {
* exposureTime = ( double ) expTime ;
}
} else if ( ITKFEATURE_VAL_TYPE_DOUBLE = = ExposureTimeType ) {
res = ItkDevGetDouble ( pCam - > g_hCamera , " ExposureTime " , exposureTime ) ;
} else {
return ITKSTATUS_INVALID_ARG ;
}
break ;
case ITEK_CAMERA_EXPOSURE_TIME_CONFIG_METHOD_3 :
case ITEK_CAMERA_EXPOSURE_TIME_CONFIG_METHOD_5 :
if ( ITKFEATURE_VAL_TYPE_INT64 = = AreaExposureTimeType ) {
res = ItkDevGetInt64 ( pCam - > g_hCamera , " AreaExposureTime " , & expTime ) ;
if ( res = = ITKSTATUS_OK ) {
* exposureTime = ( double ) expTime ;
}
} else if ( ITKFEATURE_VAL_TYPE_DOUBLE = = AreaExposureTimeType ) {
res = ItkDevGetDouble ( pCam - > g_hCamera , " AreaExposureTime " , exposureTime ) ;
} else {
return ITKSTATUS_INVALID_ARG ;
}
break ;
default :
break ;
}
return res ;
}
ITKSTATUS SetDigitalGain ( pItkCamera pCam , double digitalGain )
{
ITKSTATUS res = ITKSTATUS_OK ;
switch ( pCam - > g_configMethod [ ITEK_CAMERA_DIGITAL_GAIN_CONFIG ] ) {
case ITEK_CAMERA_DIGITAL_GAIN_CONFIG_METHOD_1 :
return ItkDevSetDouble ( pCam - > g_hCamera , " DigitalGain " , digitalGain ) ;
;
break ;
case ITEK_CAMERA_DIGITAL_GAIN_CONFIG_METHOD_2 :
return ItkDevSetDouble ( pCam - > g_hCamera , " Gain " , digitalGain ) ;
break ;
default :
break ;
}
return ITKSTATUS_INVALID_ARG ;
}
ITKSTATUS GetDigitalGain ( pItkCamera pCam , double * digitalGain )
{
ITKSTATUS res = ITKSTATUS_OK ;
switch ( pCam - > g_configMethod [ ITEK_CAMERA_DIGITAL_GAIN_CONFIG ] ) {
case ITEK_CAMERA_DIGITAL_GAIN_CONFIG_METHOD_1 :
return ItkDevGetDouble ( pCam - > g_hCamera , " DigitalGain " , digitalGain ) ;
break ;
case ITEK_CAMERA_DIGITAL_GAIN_CONFIG_METHOD_2 :
return ItkDevGetDouble ( pCam - > g_hCamera , " Gain " , digitalGain ) ;
break ;
default :
break ;
}
return ITKSTATUS_INVALID_ARG ;
}
ITKSTATUS SetPixelGain ( pItkCamera pCam , const char * pixelGain )
{
ITKSTATUS res = ITKSTATUS_OK ;
return ItkDevFromString ( pCam - > g_hCamera , " PixelGain " , pixelGain ) ;
}
ITKSTATUS GetPixelGain ( pItkCamera pCam , char * pixelGain , uint32_t * len )
{
ITKSTATUS res = ITKSTATUS_OK ;
return ItkDevToString ( pCam - > g_hCamera , " PixelGain " , pixelGain , len ) ;
}
ITKSTATUS SetLineRate ( pItkCamera pCam , double lineRate )
{
ITKSTATUS res = ITKSTATUS_OK ;
if ( lineRate < = 0 )
return ITKSTATUS_INVALID_ARG ;
double linePeriodTime = 1000000 / lineRate ; // us
switch ( pCam - > g_configMethod [ ITEK_CAMERA_LINE_RATE_CONFIG ] ) {
case ITEK_CAMERA_LINE_RATE_CONFIG_METHOD_1 :
return ItkDevSetDouble ( pCam - > g_hCamera , " LinePeriodTime " , linePeriodTime ) ;
break ;
case ITEK_CAMERA_LINE_RATE_CONFIG_METHOD_2 :
return ItkDevSetDouble ( pCam - > g_hCamera , " AcquisitionLinePeriod " , linePeriodTime ) ;
break ;
case ITEK_CAMERA_LINE_RATE_CONFIG_METHOD_3 :
return ItkDevSetDouble ( pCam - > g_hCamera , " AcquisitionLineRate " , lineRate ) ;
break ;
default :
break ;
}
return ITKSTATUS_INVALID_ARG ;
}
ITKSTATUS GetLineRate ( pItkCamera pCam , double * lineRate )
{
ITKSTATUS res = ITKSTATUS_OK ;
double linePeriodTime = 0 ;
switch ( pCam - > g_configMethod [ ITEK_CAMERA_LINE_RATE_CONFIG ] ) {
case ITEK_CAMERA_LINE_RATE_CONFIG_METHOD_1 :
res = ItkDevGetDouble ( pCam - > g_hCamera , " LinePeriodTime " , & linePeriodTime ) ;
if ( ITKSTATUS_OK ! = res )
return res ;
* lineRate = 1000000 / linePeriodTime ;
return res ;
break ;
case ITEK_CAMERA_LINE_RATE_CONFIG_METHOD_2 :
res = ItkDevGetDouble ( pCam - > g_hCamera , " AcquisitionLinePeriod " , & linePeriodTime ) ;
if ( ITKSTATUS_OK ! = res )
return res ;
* lineRate = 1000000 / linePeriodTime ;
return res ;
break ;
case ITEK_CAMERA_LINE_RATE_CONFIG_METHOD_3 :
return ItkDevGetDouble ( pCam - > g_hCamera , " AcquisitionLineRate " , lineRate ) ;
break ;
default :
break ;
}
return ITKSTATUS_INVALID_ARG ;
}
ITKSTATUS SetFrameRate ( pItkCamera pCam , double frameRate )
{
ITKSTATUS res = ITKSTATUS_OK ;
if ( frameRate < = 0 ) {
return ITKSTATUS_INVALID_ARG ;
}
double framePeriod = 1000000 / frameRate ;
int64_t framePeriod_int64 = ( int64_t ) framePeriod ;
switch ( pCam - > g_configMethod [ ITEK_CAMERA_FRAME_RATE_CONFIG ] ) {
case ITEK_CAMERA_FRAME_RATE_CONFIG_METHOD_1 :
return ItkDevSetInt64 ( pCam - > g_hCamera , " AcquisitionFramePeriodRaw " , framePeriod_int64 ) ;
break ;
case ITEK_CAMERA_FRAME_RATE_CONFIG_METHOD_2 :
return ItkDevSetInt64 ( pCam - > g_hCamera , " AcquisitionFramePeriod " , framePeriod_int64 ) ;
break ;
case ITEK_CAMERA_FRAME_RATE_CONFIG_METHOD_3 :
return ItkDevSetDouble ( pCam - > g_hCamera , " AcquisitionFramePeriod " , framePeriod ) ;
break ;
case ITEK_CAMERA_FRAME_RATE_CONFIG_METHOD_4 :
return ItkDevSetInt64 ( pCam - > g_hCamera , " FramePeriodTime " , framePeriod_int64 ) ;
break ;
case ITEK_CAMERA_FRAME_RATE_CONFIG_METHOD_5 :
res = ItkDevSetBool ( pCam - > g_hCamera , " AcquisitionFrameRateEnable " , true ) ;
if ( ITKSTATUS_OK ! = res )
return res ;
return ItkDevSetDouble ( pCam - > g_hCamera , " AcquisitionFrameRate " , frameRate ) ;
break ;
case ITEK_CAMERA_FRAME_RATE_CONFIG_METHOD_6 :
return ItkDevSetDouble ( pCam - > g_hCamera , " AcquisitionFrameRate " , frameRate ) ;
break ;
default :
break ;
}
return ITKSTATUS_INVALID_ARG ;
}
ITKSTATUS GetFrameRate ( pItkCamera pCam , double * frameRate )
{
ITKSTATUS res = ITKSTATUS_OK ;
int64_t framePeriod_int64 = 0 ;
double framePeriod = 0 ;
switch ( pCam - > g_configMethod [ ITEK_CAMERA_FRAME_RATE_CONFIG ] ) {
case ITEK_CAMERA_FRAME_RATE_CONFIG_METHOD_1 :
res = ItkDevGetInt64 ( pCam - > g_hCamera , " AcquisitionFramePeriodRaw " , & framePeriod_int64 ) ;
if ( framePeriod_int64 > 0 ) {
* frameRate = ( double ) 1000000 / ( double ) framePeriod_int64 ;
}
return res ;
break ;
case ITEK_CAMERA_FRAME_RATE_CONFIG_METHOD_2 :
res = ItkDevGetInt64 ( pCam - > g_hCamera , " AcquisitionFramePeriod " , & framePeriod_int64 ) ;
if ( framePeriod_int64 > 0 ) {
* frameRate = ( double ) 1000000 / ( double ) framePeriod_int64 ;
}
return res ;
break ;
case ITEK_CAMERA_FRAME_RATE_CONFIG_METHOD_3 :
res = ItkDevGetDouble ( pCam - > g_hCamera , " AcquisitionFramePeriod " , & framePeriod ) ;
if ( framePeriod > 0 ) {
* frameRate = 1000000 / framePeriod ;
}
return res ;
break ;
case ITEK_CAMERA_FRAME_RATE_CONFIG_METHOD_4 :
res = ItkDevGetInt64 ( pCam - > g_hCamera , " FramePeriodTime " , & framePeriod_int64 ) ;
if ( framePeriod_int64 > 0 ) {
* frameRate = ( double ) 1000000 / ( double ) framePeriod_int64 ;
}
return res ;
break ;
case ITEK_CAMERA_FRAME_RATE_CONFIG_METHOD_5 :
case ITEK_CAMERA_FRAME_RATE_CONFIG_METHOD_6 :
return ItkDevGetDouble ( pCam - > g_hCamera , " AcquisitionFrameRate " , frameRate ) ;
break ;
default :
break ;
}
return ITKSTATUS_INVALID_ARG ;
}
ITKSTATUS SetFrameTrigger ( pItkCamera pCam , const char * status , bool level )
{
ITKSTATUS res = ITKSTATUS_OK ;
bool bSet = false ;
if ( strcmp ( status , " On " ) = = 0 ) {
bSet = true ;
}
if ( level ) {
switch ( pCam - > g_configMethod [ ITEK_CAMERA_FRAME_TRIGGER_CONFIG ] ) {
case ITEK_CAMERA_FRAME_TRIGGER_CONFIG_METHOD_1 :
res = ItkDevFromString ( pCam - > g_hCamera , " TriggerSelector " , " FrameActive " ) ;
if ( ITKSTATUS_OK ! = res )
return res ;
return ItkDevFromString ( pCam - > g_hCamera , " TriggerMode " , status ) ;
break ;
case ITEK_CAMERA_FRAME_TRIGGER_CONFIG_METHOD_2 :
res = ItkDevSetBool ( pCam - > g_hCamera , " FrameTriggerEnable " , bSet ) ;
if ( ITKSTATUS_OK ! = res )
return res ;
return ItkDevFromString ( pCam - > g_hCamera , " FrameTriggerType " , " LevelSensitive " ) ;
break ;
case ITEK_CAMERA_FRAME_TRIGGER_CONFIG_METHOD_3 :
if ( bSet ) {
return ItkDevFromString ( pCam - > g_hCamera , " ExposureMode " , " TriggerWidth " ) ;
} else {
return ItkDevFromString ( pCam - > g_hCamera , " ExposureMode " , " Timed " ) ;
}
break ;
default :
break ;
}
} else {
switch ( pCam - > g_configMethod [ ITEK_CAMERA_FRAME_TRIGGER_CONFIG ] ) {
case ITEK_CAMERA_FRAME_TRIGGER_CONFIG_METHOD_1 :
res = ItkDevFromString ( pCam - > g_hCamera , " TriggerSelector " , " FrameStart " ) ;
if ( ITKSTATUS_OK ! = res )
return res ;
return ItkDevFromString ( pCam - > g_hCamera , " TriggerMode " , status ) ;
break ;
case ITEK_CAMERA_FRAME_TRIGGER_CONFIG_METHOD_2 :
res = ItkDevSetBool ( pCam - > g_hCamera , " FrameTriggerEnable " , bSet ) ;
if ( ITKSTATUS_OK ! = res )
return res ;
return ItkDevFromString ( pCam - > g_hCamera , " FrameTriggerType " , " EdgeSensitive " ) ;
break ;
case ITEK_CAMERA_FRAME_TRIGGER_CONFIG_METHOD_3 :
if ( bSet ) {
return ItkDevFromString ( pCam - > g_hCamera , " ExposureMode " , " TriggerPulse " ) ;
} else {
return ItkDevFromString ( pCam - > g_hCamera , " ExposureMode " , " Timed " ) ;
}
break ;
default :
break ;
}
}
return ITKSTATUS_INVALID_ARG ;
}
ITKSTATUS SetLineTrigger ( pItkCamera pCam , const char * status , bool level )
{
ITKSTATUS res = ITKSTATUS_OK ;
bool bSet = false ;
if ( strcmp ( status , " On " ) = = 0 ) {
bSet = true ;
}
if ( level ) {
switch ( pCam - > g_configMethod [ ITEK_CAMERA_LINE_TRIGGER_CONFIG ] ) {
case ITEK_CAMERA_LINE_TRIGGER_CONFIG_METHOD_1 :
res = ItkDevFromString ( pCam - > g_hCamera , " TriggerSelector " , " LineStart " ) ;
if ( ITKSTATUS_OK ! = res )
return res ;
case ITEK_CAMERA_LINE_TRIGGER_CONFIG_METHOD_2 :
res = ItkDevFromString ( pCam - > g_hCamera , " TriggerMode " , status ) ;
if ( ITKSTATUS_OK ! = res )
return res ;
if ( bSet ) {
return ItkDevFromString ( pCam - > g_hCamera , " ExposureMode " , " TriggerWidth " ) ;
} else {
return ItkDevFromString ( pCam - > g_hCamera , " ExposureMode " , " Timed " ) ;
}
break ;
case ITEK_CAMERA_LINE_TRIGGER_CONFIG_METHOD_3 :
if ( bSet ) {
return ItkDevFromString ( pCam - > g_hCamera , " SynchronizationMode " , " TriggerWidth " ) ;
} else {
return ItkDevFromString ( pCam - > g_hCamera , " SynchronizationMode " , " Timed " ) ;
}
break ;
default :
break ;
}
} else {
switch ( pCam - > g_configMethod [ ITEK_CAMERA_LINE_TRIGGER_CONFIG ] ) {
case ITEK_CAMERA_LINE_TRIGGER_CONFIG_METHOD_1 :
res = ItkDevFromString ( pCam - > g_hCamera , " TriggerSelector " , " LineStart " ) ;
if ( ITKSTATUS_OK ! = res )
return res ;
case ITEK_CAMERA_LINE_TRIGGER_CONFIG_METHOD_2 :
res = ItkDevFromString ( pCam - > g_hCamera , " TriggerMode " , status ) ;
if ( ITKSTATUS_OK ! = res )
return res ;
return ItkDevFromString ( pCam - > g_hCamera , " ExposureMode " , " Timed " ) ;
break ;
case ITEK_CAMERA_LINE_TRIGGER_CONFIG_METHOD_3 :
if ( bSet ) {
return ItkDevFromString ( pCam - > g_hCamera , " SynchronizationMode " , " TriggerPulse " ) ;
} else {
return ItkDevFromString ( pCam - > g_hCamera , " SynchronizationMode " , " Timed " ) ;
}
break ;
default :
break ;
}
}
return ITKSTATUS_INVALID_ARG ;
}
// ITKSTATUS SetTriggerMode(pItkCamera pCam, const char *triggerSelector,
// const char *exposureMode) {
// ITKSTATUS res = ITKSTATUS_OK;
// if (triggerSelector) {
// res = ItkDevFromString(pCam->g_hCamera, "TriggerSelector", triggerSelector);
// if (res != ITKSTATUS_OK) {
// return res;
// }
// }
// res = ItkDevFromString(pCam->g_hCamera, "TriggerMode", "On");
// if (ITKSTATUS_OK == res)
// return res;
// res = ItkDevSetBool(pCam->g_hCamera, "FrameTriggerEnable", true);
// if (ITKSTATUS_OK == res)
// return res;
// res = ItkDevFromString(pCam->g_hCamera, "ExposureMode", exposureMode);
// if (ITKSTATUS_OK == res)
// return res;
// return ItkDevFromString(pCam->g_hCamera, "SynchronizationMode", exposureMode);
//}
//
// ITKSTATUS GetTriggerMode(pItkCamera pCam, char* triggerSelector, uint32_t* triggerSelectorLen, char*
// TriggerModeOrexposureMode, uint32_t* Len, bool* frameTriggerEnable)
//{
// ITKSTATUS res = ITKSTATUS_OK;
// if (triggerSelector)
// {
// res = ItkDevToString(pCam->g_hCamera, "TriggerSelector",
// triggerSelector, triggerSelectorLen);
// if (res!=ITKSTATUS_OK)
// {
// return res;
// }
// }
// res = ItkDevToString(pCam->g_hCamera, "TriggerMode", TriggerModeOrexposureMode,Len);
// if (res==ITKSTATUS_OK)
// {
// return res;
// }
// if (frameTriggerEnable)
// {
// if (ItkDevGetBool(pCam->g_hCamera, "FrameTriggerEnable", frameTriggerEnable)==ITKSTATUS_OK) {
// return ITKSTATUS_OK;
// }
// }
//
// if (ItkDevToString(pCam->g_hCamera,"ExposureMode", TriggerModeOrexposureMode,Len) == ITKSTATUS_OK ||
// ItkDevToString(pCam->g_hCamera, "SynchronizationMode", TriggerModeOrexposureMode, Len) == ITKSTATUS_OK)
// {
// return ITKSTATUS_OK;
// }
// return ITKSTATUS_INVALID_ARG;
//}
ITKSTATUS SetTriggerSource ( pItkCamera pCam , const char * triggerSource )
{
ITKSTATUS res = ITKSTATUS_OK ;
switch ( pCam - > g_configMethod [ ITEK_CAMERA_TRIGGER_SOURCE_CONFIG ] ) {
case ITEK_CAMERA_TRIGGER_SOURCE_CONFIG_METHOD_1 :
return ItkDevFromString ( pCam - > g_hCamera , " FrameTriggerSource " , triggerSource ) ;
break ;
case ITEK_CAMERA_TRIGGER_SOURCE_CONFIG_METHOD_2 :
return ItkDevFromString ( pCam - > g_hCamera , " ExternalTriggerSource " , triggerSource ) ;
break ;
case ITEK_CAMERA_TRIGGER_SOURCE_CONFIG_METHOD_3 :
return ItkDevFromString ( pCam - > g_hCamera , " TriggerSource " , triggerSource ) ;
break ;
default :
break ;
}
return ITKSTATUS_INVALID_ARG ;
}
ITKSTATUS GetTriggerSource ( pItkCamera pCam , char * triggerSource , uint32_t * len )
{
ITKSTATUS res = ITKSTATUS_OK ;
switch ( pCam - > g_configMethod [ ITEK_CAMERA_TRIGGER_SOURCE_CONFIG ] ) {
case ITEK_CAMERA_TRIGGER_SOURCE_CONFIG_METHOD_1 :
return ItkDevToString ( pCam - > g_hCamera , " FrameTriggerSource " , triggerSource , len ) ;
break ;
case ITEK_CAMERA_TRIGGER_SOURCE_CONFIG_METHOD_2 :
return ItkDevToString ( pCam - > g_hCamera , " ExternalTriggerSource " , triggerSource , len ) ;
break ;
case ITEK_CAMERA_TRIGGER_SOURCE_CONFIG_METHOD_3 :
return ItkDevToString ( pCam - > g_hCamera , " TriggerSource " , triggerSource , len ) ;
break ;
default :
break ;
}
return ITKSTATUS_INVALID_ARG ;
}
ITKSTATUS SetTriggerPolarity ( pItkCamera pCam , const char * triggerPolarity )
{
ITKSTATUS res = ITKSTATUS_OK ;
switch ( pCam - > g_configMethod [ ITEK_CAMERA_TRIGGER_POLARITY_CONFIG ] ) {
case ITEK_CAMERA_TRIGGER_POLARITY_CONFIG_METHOD_1 :
return ItkDevFromString ( pCam - > g_hCamera , " FrameTriggerPolarity " , triggerPolarity ) ;
break ;
case ITEK_CAMERA_TRIGGER_POLARITY_CONFIG_METHOD_2 :
return ItkDevFromString ( pCam - > g_hCamera , " ExternalTriggerActivation " , triggerPolarity ) ;
break ;
case ITEK_CAMERA_TRIGGER_POLARITY_CONFIG_METHOD_3 :
return ItkDevFromString ( pCam - > g_hCamera , " LinePolarity " , triggerPolarity ) ;
break ;
case ITEK_CAMERA_TRIGGER_POLARITY_CONFIG_METHOD_4 :
return ItkDevFromString ( pCam - > g_hCamera , " TriggerActivation " , triggerPolarity ) ;
break ;
default :
break ;
}
return ITKSTATUS_INVALID_ARG ;
}
ITKSTATUS GetTriggerPolarity ( pItkCamera pCam , char * triggerPolarity , uint32_t * len )
{
ITKSTATUS res = ITKSTATUS_OK ;
switch ( pCam - > g_configMethod [ ITEK_CAMERA_TRIGGER_POLARITY_CONFIG ] ) {
case ITEK_CAMERA_TRIGGER_POLARITY_CONFIG_METHOD_1 :
return ItkDevToString ( pCam - > g_hCamera , " FrameTriggerPolarity " , triggerPolarity , len ) ;
break ;
case ITEK_CAMERA_TRIGGER_POLARITY_CONFIG_METHOD_2 :
return ItkDevToString ( pCam - > g_hCamera , " ExternalTriggerActivation " , triggerPolarity , len ) ;
break ;
case ITEK_CAMERA_TRIGGER_POLARITY_CONFIG_METHOD_3 :
return ItkDevToString ( pCam - > g_hCamera , " LinePolarity " , triggerPolarity , len ) ;
break ;
case ITEK_CAMERA_TRIGGER_POLARITY_CONFIG_METHOD_4 :
return ItkDevToString ( pCam - > g_hCamera , " TriggerActivation " , triggerPolarity , len ) ;
break ;
default :
break ;
}
return ITKSTATUS_INVALID_ARG ;
}
ITKSTATUS SetMultiExposureTime ( pItkCamera pCam , char * multiExposureTime )
{
ITKSTATUS res = ITKSTATUS_OK ;
switch ( pCam - > g_configMethod [ ITEK_CAMERA_MULTI_EXPOSURE_CONFIG ] ) {
case ITEK_CAMERA_MULTI_EXPOSURE_CONFIG_METHOD_1 :
return ItkDevFromString ( pCam - > g_hCamera , " MultiExposureTimeCount " , multiExposureTime ) ;
break ;
default :
break ;
}
return ITKSTATUS_INVALID_ARG ;
}
ITKSTATUS GetMultiExposureTime ( pItkCamera pCam , char * multiExposureTime , uint32_t * bufLen )
{
ITKSTATUS res = ITKSTATUS_OK ;
switch ( pCam - > g_configMethod [ ITEK_CAMERA_MULTI_EXPOSURE_CONFIG ] ) {
case ITEK_CAMERA_MULTI_EXPOSURE_CONFIG_METHOD_1 :
return ItkDevToString ( pCam - > g_hCamera , " MultiExposureTimeCount " , multiExposureTime , bufLen ) ;
break ;
default :
break ;
}
return ITKSTATUS_INVALID_ARG ;
}
ITKSTATUS SetChunkData ( pItkCamera pCam , bool benable )
{
ITKSTATUS res = ITKSTATUS_OK ;
switch ( pCam - > g_configMethod [ ITEK_CAMERA_CHUNK_DATA_CONFIG ] ) {
case ITEK_CAMERA_CHUNK_DATA_CONFIG_METHOD_1 : {
res = ItkDevSetBool ( pCam - > g_hCamera , " ChunkModeActive " , benable ) ;
if ( res ! = ITKSTATUS_OK )
{
return res ;
}
if ( benable ) {
ITK_FEATURE_BASE_INFO featureInfo = { } ;
res = ItkDevGetFeatureInfo ( pCam - > g_hCamera , " ChunkSelector " , & featureInfo ) ;
if ( res ! = ITKSTATUS_OK ) {
return res ;
}
uint32_t enumCount = featureInfo . EnumCount ;
if ( enumCount = = 0 ) {
return ITKSTATUS_INVALID_ARG ;
}
for ( int i = 0 ; i < ( int ) enumCount ; i + + ) {
ITK_FEATURE_ENUM_ENTRY_INFO enumEntryInfo = { } ;
res = ItkDevGetEnumEntryFeatureInfo ( pCam - > g_hCamera , " ChunkSelector " , uint64_t ( i ) , & enumEntryInfo ) ;
if ( res ! = ITKSTATUS_OK ) {
return res ;
}
res = ItkDevFromString ( pCam - > g_hCamera , " ChunkSelector " , enumEntryInfo . ValueStr ) ;
if ( res ! = ITKSTATUS_OK ) {
return res ;
}
res = ItkDevSetBool ( pCam - > g_hCamera , " ChunkEnable " , true ) ;
if ( res ! = ITKSTATUS_OK ) {
return res ;
}
}
}
}
break ;
default :
break ;
}
return ITKSTATUS_INVALID_ARG ;
}
ITKSTATUS GetChunkData ( pItkCamera pCam , bool * pbenable )
{
ITKSTATUS res = ITKSTATUS_OK ;
switch ( pCam - > g_configMethod [ ITEK_CAMERA_CHUNK_DATA_CONFIG ] ) {
case ITEK_CAMERA_CHUNK_DATA_CONFIG_METHOD_1 :
return ItkDevGetBool ( pCam - > g_hCamera , " ChunkModeActive " , pbenable ) ;
break ;
default :
break ;
}
return ITKSTATUS_INVALID_ARG ;
}