GigE |
GigE |
Syntax
INT is_Transfer (HIDS hCam, UINT nCommand, void* pParam, UINT cbSizeOfParam)
Description
Use is_Transfer() to adjust the latency of the image data transfer of GigE uEye cameras. You can adjust the interval between capturing and transferring an image for each individual camera that is connected. This may be useful to divide available bandwidth amongst cameras running simultaneously on slow networks (e.g. transfer in a wireless or 100 Mbit network). Currently, you can adjust the following parameters:
•Image delay
This value determines the internal camera delay of the image transfer. When the sensor begins outputting data, the camera waits for the specified duration before starting to transfer the image data. In this way you can coordinate the data transfer for several simultaneously triggered cameras.
•Packet interval
GigE uEye cameras transfer image data in several data packets of the same size. The "Packet interval" value determines the interval between the transfer of two successive packets, improving the data transfer of one or several cameras on slow networks.
The usual value for the "Packet interval" in Gigabit Ethernet networks is around 20 µs. Higher values for TRANSFER_CMD_SET_PACKETINTERVAL_US can reduce the transfer speed of the GigE uEye camera considerably. |
Additionally the function can query if the camera supports the memory mode and set its properties (see Using the camera memory (GigE uEye cameras)).
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. |
Contents of the TRANSFER_CAPABILITY_FLAGS enumeration
INT |
TRANSFER_CAP_IMAGEDELAY |
Setting the image transfer delay is supported. |
INT |
TRANSFER_CAP_PACKETINTERVAL |
Setting the packet interval during image transfer is supported. |
Contents of the RANGE_OF_VALUES_U32 structure
UINT |
u32Minimum |
Minimum value |
UINT |
u32Maximum |
Maximum value |
UINT |
u32Increment |
Increment |
UINT |
u32Default |
Standard value |
UINT |
u32Infinite |
Sets the value for "infinite" |
Return values
IS_INVALID_CAMERA_HANDLE |
Invalid camera handle |
IS_INVALID_PARAMETER |
One of the submitted parameters is outside the valid range or is not supported for this sensor or is not available in this mode. |
IS_NO_SUCCESS |
General error message |
IS_NOT_SUPPORTED |
The camera model used here does not support this function or setting. |
IS_SUCCESS |
Function executed successfully |
Related functions
Example 1
#include <ueye.h>
INS_RETURN_CODE nRet = IS_SUCCESS;
HANDLE hCam = myCamHandle;
/* query the transfer capabilities for the device */
unsigned int u32TransferCaps = 0;
nRet = is_Transfer (hCam, TRANSFER_CMD_QUERY_CAPABILITIES, &u32TransferCaps, sizeof(u32TransferCaps));
if (nRet != IS_SUCCESS)
{
/* error handling */
}
/* test for 'image delay' feature to be supported by the device */
if ((u32TransferCaps & TRANSFER_CAP_IMAGEDELAY) == TRANSFER_CAP_IMAGEDELAY)
{
/* device supports 'image delay' feature */
/* query the current value of 'image delay' */
unsigned int u32CurrentImageDelay_us = 0;
nRet = is_Transfer (hCam, TRANSFER_CMD_GET_IMAGEDELAY_US, &u32CurrentImageDelay_us, sizeof(u32CurrentImageDelay_us));
/* query the range of values for 'image delay' and
set 'image delay' to the lowest value above minimum */
RANGE_OF_VALUES_U32 rovImageDelay = {0, 0, 0, 0, 0};
nRet = is_Transfer (hCam, TRANSFER_CMD_GETRANGE_IMAGEDELAY_US, &rovImageDelay, sizeof(rovImageDelay));
if (nRet != IS_SUCCESS)
{
/* error handling */
}
else
{
unsigned int u32NewImageDelay_us = rovImageDelay.u32Minimum + rovImageDelay.u32Increment;
nRet = is_Transfer (hCam, TRANSFER_CMD_SET_IMAGEDELAY_US, &u32NewImageDelay_us, sizeof(u32NewImageDelay_us));
if (nRet != IS_SUCCESS)
{
/* error handling */
}
}
}
INT nRet = IS_SUCCESS;
/* Check if camera memory is supported */
UINT nCaps = 0;
nRet = is_Transfer(hCam, TRANSFER_CMD_GET_IMAGE_DESTINATION_CAPABILITIES, (void*)&nCaps, sizeof(nCaps));
if ((nRet == IS_SUCCESS) && ((nCaps & IS_TRANSFER_DESTINATION_DEVICE_MEMORY) != 0))
{
/* Enable camera memory mode */
TRANSFER_TARGET transferTarget = IS_TRANSFER_DESTINATION_DEVICE_MEMORY;
nRet = is_Transfer(m_Camera.hCam, TRANSFER_CMD_SET_IMAGE_DESTINATION, (void*)&transferTarget, sizeof(transferTarget ));
}