![]() |
![]() |
|---|---|
GigE |
GigE |
Syntax
INT is_Transfer (HIDS hCam, UINT nCommand, void* pParam, UINT cbSizeOfParam)
Beschreibung
Mit is_Transfer() kann bei GigE uEye Kameras die Latenz der Bilddatenübertragung angepasst werden. Für jede angeschlossene Kamera lässt sich individuell der Abstand zwischen Bildaufnahme und -übertragung anpassen. Dies kann sinnvoll sein, um bei langsamen Netzwerken die verfügbare Bandbreite zwischen parallel laufenden Kamera aufzuteilen (z. B. Übertragung im WLAN oder 100 Mbit-Netzwerk). Derzeit können folgende Parameter angepasst werden:
•Image Delay
Dieser Wert bestimmt die kamerainterne Verzögerung der Bildübertragung. Wenn der Sensor mit der Datenausgabe beginnt, wartet die Kamera noch für die eingestellte Dauer, bis sie mit der Übertragung der Bilddaten beginnt. Damit kann die Datenübertragung mehrerer gleichzeitig getriggerter Kameras koordiniert werden.
•Packet interval
GigE uEye Kameras übertragen Bilddaten in mehreren, gleich großen Datenpaketen. Der Wert "Packet interval" bestimmt den Abstand zwischen der Übertragung zweier aufeinander folgender Pakete. Damit kann die Datenübertragung einer oder mehrerer Kameras in langsamen Netzwerken verbessert werden.
|
Der übliche Wert für das "Packet interval" liegt in Gigabit-Ethernet-Netzwerken bei etwa 20 µs. Höhere Werte für TRANSFER_CMD_SET_PACKETINTERVAL_US verringern die Übertragungsgeschwindigkeit der GigE uEye Kamera unter Umständen deutlich. |
Zusätzlich kann mit der Funktion abgefragt werden, ob die Kamera den Memory-Modus unterstützt und dessen Eigenschaften gesetzt werden (siehe Kameraspeicher verwenden (GigE uEye Kameras)).
Über den Übergabeparameter nCommand wird dabei der Funktionsmodus gewählt. Der Übergabeparameter pParam ist abhängig vom Funktionsmodus unterschiedlich belegt; bei Funktionen zum Setzen oder Rücklesen eines Wertes enthält pParam einen Zeiger auf eine Variable vom Typ UINT. Die Größe des Speicherbereichs, auf den pParam verweist, wird im Übergabeparameter cbSizeOfParam angegeben.
Übergabeparameter
hCam |
Handle auf Kamera |
pParam |
Zeiger auf Funktionsparameter, der abhängig von nCommand unterschiedlich belegt ist. |
cbSizeOfParam |
Größe des Speicherbereichs in Byte, auf den pParam verweist. |
Inhalt der Enumeration TRANSFER_CAPABILITY_FLAGS
INT |
TRANSFER_CAP_IMAGEDELAY |
Einstellung der Verzögerung der Bildübertragung wird unterstützt. |
INT |
TRANSFER_CAP_PACKETINTERVAL |
Einstellung des Paketabstand bei der Bildübertragung wird unterstützt. |
Inhalt der Struktur RANGE_OF_VALUES_U32
UINT |
u32Minimum |
Minimalwert |
UINT |
u32Maximum |
Maximalwert |
UINT |
u32Increment |
Inkrement |
UINT |
u32Default |
Standardwert |
UINT |
u32Infinite |
Setzt den Wert für "unendlich" |
Rückgabewerte
IS_INVALID_CAMERA_HANDLE |
Ungültiges Kamera-Handle |
IS_INVALID_PARAMETER |
Einer der übergebenen Parameter ist außerhalb des gültigen Bereichs, oder für diesen Sensor nicht unterstützt, bzw. in diesem Modus nicht zugänglich. |
IS_NO_SUCCESS |
Allgemeine Fehlermeldung |
IS_NOT_SUPPORTED |
Das verwendete Kameramodell unterstützt diese Funktion oder Einstellung nicht. |
IS_SUCCESS |
Funktion erfolgreich |
Verwandte Funktionen
Beispiel 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 ));
}