uEye Kamera-Handbuch Version 4.92
![]() |
![]() |
USB 2.0 USB 3.0 GigE |
USB 2.0 USB 3.0 GigE |
Syntax
INT is_IO(HIDS hCam, UINT nCommand, void* pParam, UINT cbSizeOfParam)
Beschreibung
Über die Funktion is_IO() steuern Sie alle Blitz-Funktionen (siehe uEye Cockpit: Eingang/Ausgang ).
•Rolling-Shutter-Kameras:
Mit is_IO() können die benötigten Zeiten ermittelt werden, um eine globale Blitzfunktion für Rolling-Shutter-Kameras zu realisieren. Somit kann eine Rolling-Shutter-Kamera als Global-Shutter-Kamera betrieben werden, wenn außerhalb des Blitzes kein Umgebungslicht auf den Sensor fällt. Wird die Belichtungszeit zu kurz eingestellt, so dass kein globaler Blitz mehr möglich ist, wird IS_NO_SUCCESS zurückgegeben.
•Rolling-Shutter-Kameras mit der Global-Start-Funktion:
Wenn Rolling-Shutter-Kameras mit der Global-Start-Funktion verwendet werden sollen, muss die Funktion is_DeviceFeature() zuerst aufgerufen werden. Andernfalls werden falsche Werte für s32Delay und u32Duration zurückgegeben.
•Global-Shutter-Kameras:
Die Belichtung wird bei Global-Shutter-Kameras im freilaufenden Modus verzögert, wenn die Belichtungszeit nicht auf den Maximalwert gesetzt wird. is_IO() ermittelt die erforderliche Verzögerungszeit, um Belichtung und Blitz zu synchronisieren. Im getriggerten Modus sind die Rückgabewerte für die Verzögerung und die Dauer des Blitzes 0, da hier keine Verzögerung bis zum Anfang der Belichtung benötigt wird.
Im freilaufenden Betrieb (Freerun) besteht seit Treiber 4.40 die Möglichkeit das Belichtungsfenster automatisch zu ermitteln. Für weitere Informationen siehe auch Kapitel Kameragrundlagen: Shutterverfahren, Digitaler Ein-/Ausgang und Betriebsmodi.
Wenn Sie die Kamera im Burst-Triggermodus betreiben, können Sie die Blitz-Einstellungen erst ändern, wenn der Burst abgeschlossen ist.
![]() |
Hinweis: Die Kamerafamilie uEye LE USB 3.1 Gen 1 unterstützt Blitzen nur im getriggerten Betrieb und nicht im Freerun. |
Hinweis zur Genauigkeit der Blitzsynchronisation
Das kamerainterne Timing wird von folgenden Parametern beeinflusst:
•Bildgeometrie (CMOS- und CCD-Sensoren)
•Pixeltakt (CMOS- und CCD-Sensoren)
•Belichtungszeit (CCD-Sensoren)
Wenn einer dieser Parameter geändert wird, müssen die Werte für Dauer und Auslöseverzögerung des Blitzsignals erneut gesetzt werden.
![]() |
Hinweis zu Verzögerungszeiten in Verbindung mit Optokopplern Abhängig von der eingestellten Flanke kommt es bei verbautem Optokoppler zu Verzögerungen im unteren µs-Bereich. So weicht z. B. die eingestellte Blitzdauer von der gemessenen Blitzdauer ab. Diese Verzögerung sollte vor allem bei sehr kleinen Belichtungszeiten berücksichtigt werden, da hier der Blitz verzögert ausgelöst wird. |
Ü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. |
||||||||||||||||||||||||||||||
Inhalte der Struktur IO_FLASH_PARAMS
INT |
s32Delay |
Blitzverzögerung (in μs) |
UINT |
u32Duration |
Blitzdauer (in μs) Wird 0 übergeben, ist der Blitzausgang bis zum Ende der Belichtungsdauer aktiv. Bei Sensoren mit Global-Start-Shutter ist das die Zeit bis zum Belichtungsende der ersten Zeile. |
INT nRet = IS_SUCCESS;
// Read the global flash params
IO_FLASH_PARAMS flashParams;
INT nRet = is_IO(m_hCam, IS_IO_CMD_FLASH_GET_GLOBAL_PARAMS,
(void*)&flashParams, sizeof(flashParams));
if (nRet == IS_SUCCESS)
{
INT nDelay = flashParams.s32Delay;
UINT nDuration = flashParams.u32Duration;
}
// Read the global flash params and set the flash params to these values
INT nRet = is_IO(m_hCam, IS_IO_CMD_FLASH_APPLY_GLOBAL_PARAMS, NULL, 0);
INT nRet = IS_SUCCESS;
IO_FLASH_PARAMS flashParams;
// Get the minimum values for flash delay and flash duration
nRet = is_IO(m_hCam, IS_IO_CMD_FLASH_GET_PARAMS_MIN, (void*)&flashParams, sizeof(flashParams));
if (nRet == IS_SUCCESS)
{
INT nFlashDelayMin = flashParams.s32Delay;
UINT nFlashDurationMin = flashParams.u32Duration;
}
// Get the maximum values for flash delay and flash duration
nRet = is_IO(m_hCam, IS_IO_CMD_FLASH_GET_PARAMS_MAX, (void*)&flashParams, sizeof(flashParams));
if (nRet == IS_SUCCESS)
{
INT nFlashDelayMax = flashParams.s32Delay;
UINT nFlashDurationMax = flashParams.u32Duration;
}
// Get the increment for flash delay and flash duration
nRet = is_IO(m_hCam, IS_IO_CMD_FLASH_GET_PARAMS_INC, (void*)&flashParams, sizeof(flashParams));
if (nRet == IS_SUCCESS)
{
INT nFlashDelayInc = flashParams.s32Delay;
UINT nFlashDurationInc = flashParams.u32Duration;
}
// Get the current values for flash delay and flash duration
nRet = is_IO(m_hCam, IS_IO_CMD_FLASH_GET_PARAMS, (void*)&flashParams, sizeof(flashParams));
if (nRet == IS_SUCCESS)
{
INT nCurrentFlashDelay = flashParams.s32Delay;
UINT nCurrentFlashDuration = flashParams.u32Duration;
}
// Set the current values for flash delay and flash duration
nRet = is_IO(m_hCam, IS_IO_CMD_FLASH_SET_PARAMS, (void*)&flashParams, sizeof(flashParams));
INT nRet = IS_SUCCESS;
// Get all GPIOs that can be used as flash output
UINT nGPIOs_Flash = 0;
INT nRet = is_IO(m_hCam, IS_IO_CMD_FLASH_GET_SUPPORTED_GPIOS, (void*)&nGPIOs_Flash, sizeof(nGPIOs_Flash));
// Get all GPIOs that can be used for the PWM
UINT nGPIOs_PWM = 0;
INT nRet = is_IO(m_hCam, IS_IO_CMD_PWM_GET_SUPPORTED_GPIOS, (void*)&nGPIOs_PWM, sizeof(nGPIOs_PWM));
INT nRet = IS_SUCCESS;
// Disable flash
UINT nMode = IO_FLASH_MODE_OFF;
nRet = is_IO(m_hCam, IS_IO_CMD_FLASH_SET_MODE, (void*)&nMode, sizeof(nMode));
// Set the flash to a constant low output
nMode = IO_FLASH_MODE_CONSTANT_LOW;
nRet = is_IO(m_hCam, IS_IO_CMD_FLASH_SET_MODE, (void*)&nMode, sizeof(nMode));
// Set the flash to a high active pulse for each image in the trigger mode
nMode = IO_FLASH_MODE_TRIGGER_HI_ACTIVE;
nRet = is_IO(m_hCam, IS_IO_CMD_FLASH_SET_MODE, (void*)&nMode, sizeof(nMode));
// Get the current flash mode
nRet = is_IO(m_hCam, IS_IO_CMD_FLASH_GET_MODE, (void*)&nMode, sizeof(nMode));
INT nRet = IS_SUCCESS;
IO_FLASH_PARAMS flashParams;
// Get the minimum values for the GPIO flash delay and flash duration
nRet = is_IO(m_hCam, IS_IO_CMD_FLASH_GET_GPIO_PARAMS_MIN, (void*)&flashParams, sizeof(flashParams));
// Set the minimum values for flash delay and flash duration. Be careful: The normal flash does not work with values < 20 us
nRet = is_IO(m_hCam, IS_IO_CMD_FLASH_SET_GPIO_PARAMS, (void*)&flashParams, sizeof(flashParams));
INT nRet = IS_SUCCESS;
UINT nValue;
// Get the default value for the flash auto freerun
nRet = is_IO(m_hCam, IS_IO_CMD_FLASH_GET_AUTO_FREERUN_DEFAULT, (void*)&nValue, sizeof(nValue));
// Get the current value for the flash auto freerun
nRet = is_IO(m_hCam, IS_IO_CMD_FLASH_GET_AUTO_FREERUN, (void*)&nValue, sizeof(nValue));
// Enable flash auto freerun
nValue = IS_FLASH_AUTO_FREERUN_ON;
nRet = is_IO(m_hCam, IS_IO_CMD_FLASH_SET_AUTO_FREERUN, (void*)&nValue, sizeof(nValue));
Haben Sie Verbesserungshinweise? Senden Sie ein kurzes
Feedback zu diesem Kapitel.
Vielen Dank!
Bei technischen Fragen wenden Sie sich bitte an Ihren lokalen Händler oder nutzen Sie das Support-Formular auf unserer Internetseite.