Aktivieren Sie JavaScript, um die Website anzuzeigen.

IDS Software Suite 4.96.1

Windows_Logo
Linux_Logo

USB 2.0

USB 3.x

GigE

USB 2.0

USB 3.x

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, Digitale Ein-/Ausgänge und Betriebsmodi.

Wenn Sie die Kamera im Burst-Triggermodus betreiben, können Sie die Blitz-Einstellungen erst ändern, wenn der Burst abgeschlossen ist.

hint_info

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

•Pixeltakt

•Belichtungszeit

Wenn einer dieser Parameter geändert wird, müssen die Werte für Dauer und Auslöseverzögerung des Blitzsignals erneut gesetzt werden.

hint_info

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.

Beispiel 1

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;
}
 
// Apply the global flash params and set the flash params to these values
IO_FLASH_PARAMS flashParams;
INT nRet = is_IO(m_hCam, IS_IO_CMD_FLASH_APPLY_GLOBAL_PARAMS, (void*)&flashParams, sizeof(flashParams));

Beispiel 2

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));

Beispiel 3

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));

Beispiel 4

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));

Beispiel 5

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));

Beispiel 6

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));