Please enable JavaScript to view this site.

IDS Software Suite 4.96.1

Navigation: C: Programming > Function descriptions > is_DeviceFeature

Configuring the IDS line scan ("AOI merge mode")

Scroll Previous Top Next More
Windows_Logo
Linux_Logo

USB 3.x

GigE

USB 3.x

GigE

Syntax

INT is_DeviceFeature (HIDS hCam, UINT nCommand, void* pParam, UINT cbSizeOfParam)

Description

Using is_DeviceFeature() you can configure special camera functions provided by specific uEye models:

Set IDS line scan ("AOI merge mode"), see uEye Cockpit: Vertical AOI merge mode

hint_info

The IDS line scan ("AOI merge mode") is currently supported by the following models:

UI-300xSE

UI-304xCP Rev. 2/UI-304xSE/UI-504xCP Rev. 2/UI-504xFA/UI-504xSE Rev. 4

UI-306xCP Rev. 2/UI-306xSE

UI-307xCP Rev. 2/UI-307xSE

UI-308xCP Rev. 2/UI-308xSE

UI-309xSE

UI-313xCP Rev. 2/UI-513xCP Rev. 2/UI-513xFA/UI-513xSE Rev. 4

UI-314xCP Rev. 2/UI-514xCP Rev. 2/UI-514xFA/UI-514xSE Rev. 4

UI-316xCP Rev. 2.1

UI-318xCP Rev. 2.1

UI-320xSE

UI-520xFA/UI-520xSE Rev. 4 (max. 7000 lines)

UI-324xCP Rev. 2/UI-324xLE/UI-324xML/UI-524xCP Rev. 2/UI-524xFA/UI-524xSE Rev. 4

UI-325xCP Rev. 2/UI-325xLE/UI-325xML/UI-525xCP Rev. 2/UI-525xFA/UI-525xSE Rev. 4

UI-326xCP Rev. 2/UI-326xSE/UI-526xCP Rev. 2/UI-526xFA/UI-526xSE Rev. 4

UI-327xCP Rev. 2/UI-527xCP Rev. 2/UI-527xFA/UI-527xSE Rev. 4

UI-328xCP Rev. 2/UI-328xSE/UI-528xCP Rev. 2/UI-528xFA/UI-528xSE Rev. 4

UI-329xSE

UI-529xFA/UI-529xSE Rev. 4 (max. 7000 lines)

UI-336xCP Rev. 2

UI-337xCP Rev. 2/UI-337xSE/UI-537xCP Rev. 2

UI-386xCP Rev. 2/UI-386xSE/UI-586xCP Rev. 2/UI-586xFA/UI-586xSE Rev. 4

UI-388xCP Rev. 2/UI-388xSE/UI-588xCP Rev. 2/UI-588xFA/UI-588xSE Rev. 4

UI-524xCP/UI-524xSE (in freerun mode only)

UI-526xCP (in freerun or software trigger mode only)

UI-536xCP (in freerun or software trigger mode only)

UI-537xCP (in freerun or software trigger mode only)

Flashing per line

Note that depending on the set line rate, the optocoupler of the flash output may be too slow if the flash output is set to flash high active or flash low active. In this case, use a GPIO as flash output because the GPIO have no optocoupler.

The nCommand input parameter is used to select the function mode. The pParam input parameter depends on the selected function mode. If you select functions for setting or returning a value, pParam contains a pointer to a variable of the UINT type. The size of the memory area to which pParam refers is specified in the cbSizeOfParam input parameter.

Input parameters

hCam

Camera handle

pParam

Pointer to a function parameter, whose function depends on nCommand.

cbSizeOfParam

Size (in bytes) of the memory area to which pParam refers.

Status flags from DEVICE_FEATURE_MODE_CAPS

IS_DEVICE_FEATURE_CAP_VERTICAL_AOI_MERGE

Special AOI merge mode which combines the lines of an AOI to a new image.

Example: The AOI merge mode height is 1 line for a monochrome sensor. That means that the image is composed of 8000 "merged" AOIs. If the AOI merge mode height is 10 lines, the image is composed of 800 "merged" AOIs.

Example 1

INT nVerticalAoiMergeMode = 0;
INT nVerticalAoiMergePosition = 0;
 
/* Read current vertical AOI merge mode */
INT nRet = is_DeviceFeature(hCam, IS_DEVICE_FEATURE_CMD_GET_VERTICAL_AOI_MERGE_MODE,
                          (void*)&nVerticalAoiMergeMode, sizeof(nVerticalAoiMergeMode));
if (nRet == IS_SUCCESS)
{
if (nVerticalAoiMergeMode == IS_VERTICAL_AOI_MERGE_MODE_FREERUN)
{
  /* Read current AOI merge position */
  nRet = is_DeviceFeature(hCam, IS_DEVICE_FEATURE_CMD_GET_VERTICAL_AOI_MERGE_POSITION,
                          (void*)&nVerticalAoiMergePosition, sizeof(nVerticalAoiMergePosition));
}
}
 
/* Set vertical AOI merge mode */
nVerticalAoiMergeMode = IS_VERTICAL_AOI_MERGE_MODE_FREERUN;
nRet = is_DeviceFeature(hCam, IS_DEVICE_FEATURE_CMD_SET_VERTICAL_AOI_MERGE_MODE,
                      (void*)&nVerticalAoiMergeMode, sizeof(nVerticalAoiMergeMode));
if (nRet == IS_SUCCESS)
{
/* Read and set new maximum AOI */
SENSORINFO pInfo;
nRet = is_GetSensorInfo(hCam, &pInfo);
INT maxWidth = pInfo.nMaxWidth;
INT maxHeight = pInfo.nMaxHeight;
 
IS_RECT rectAOI;
rectAOI.s32X = 0;
rectAOI.s32Y = 0;
rectAOI.s32Width = maxWidth;
rectAOI.s32Height = maxHeight;
nRet = is_AOI(hCam, IS_AOI_IMAGE_SET_AOI, (void*)&rectAOI, sizeof(rectAOI));
 
/*Set vertical AOI merge position */
INT nVerticalAoiMergePosition = 100;
nRet = is_DeviceFeature(hCam, IS_DEVICE_FEATURE_CMD_SET_VERTICAL_AOI_MERGE_POSITION,
                        (void*)&nVerticalAoiMergePosition, sizeof(nVerticalAoiMergePosition));
}

Example 2

/* Get the default value for the vertical AOI merge mode height */
INT nHeight = 0;
INT nRet = is_DeviceFeature(hCam, IS_DEVICE_FEATURE_CMD_GET_VERTICAL_AOI_MERGE_HEIGHT_DEFAULT,
                          (void*)&nHeight, sizeof(nHeight));
 
/* Get current value of the vertical AOI merge mode height */
nRet = is_DeviceFeature(hCam, IS_DEVICE_FEATURE_CMD_GET_VERTICAL_AOI_MERGE_HEIGHT,
                      (void*)&nHeight, sizeof(nHeight));
 
/* Get the number of elements in the vertical AOI merge mode height list */
INT nVerticalAoiMergeModeHeightNumber;
nRet = is_DeviceFeature(hCam, IS_DEVICE_FEATURE_CMD_GET_VERTICAL_AOI_MERGE_HEIGHT_NUMBER,
                      (void*)&nVerticalAoiMergeModeHeightNumber,
                      sizeof(nVerticalAoiMergeModeHeightNumber));
if (nRet == IS_SUCCESS)
{
UINT* pVerticalAoiMergeModeHeightList = new UINT[nVerticalAoiMergeModeHeightNumber];
 
/* Get the vertical AOI merge mode height list */
nRet = is_DeviceFeature(hCam, IS_DEVICE_FEATURE_CMD_GET_VERTICAL_AOI_MERGE_HEIGHT_LIST,
                        (void*)pVerticalAoiMergeModeHeightList,
                        nVerticalAoiMergeModeHeightNumber * sizeof(UINT));
if (nRet == IS_SUCCESS)
{
  /* Set the maximum possible vertical AOI merge mode height depending on the current image height */
  UINT nMaxHeight = pVerticalAoiMergeModeHeightList[nVerticalAoiMergeModeHeightNumber - 1];
  nRet = is_DeviceFeature(hCam, IS_DEVICE_FEATURE_CMD_SET_VERTICAL_AOI_MERGE_HEIGHT,
                          (void*)&nMaxHeight, sizeof(nMaxHeight));
}
}

Example 3

UINT nModes;
 
/* Get mask with all supported vertical AOI merge line modes */
INT nRet = is_DeviceFeature(hCam, IS_DEVICE_FEATURE_CMD_GET_VERTICAL_AOI_MERGE_MODE_SUPPORTED_LINE_MODES, (void*)&nModes, sizeof(nModes));
 
if (nRet == IS_SUCCESS)
{
  if (nModes & IS_VERTICAL_AOI_MERGE_MODE_LINE_FREERUN)
  {
      // freerun supported
  }
 
  if (nModes & IS_VERTICAL_AOI_MERGE_MODE_LINE_SOFTWARE_TRIGGER)
  {
      // software triggered supported
  }
 
  if (nModes & IS_VERTICAL_AOI_MERGE_MODE_LINE_GPIO_TRIGGER)
  {
      // GPIO triggered supported
  }    
}

© 2022 IDS Imaging Development Systems GmbH