![]() |
![]() |
|---|---|
USB 3.x GigE |
USB 3.x GigE |
Syntax
INT is_Trigger (HIDS hCam, UINT nCommand, void* pParam, UINT cbSizeOfParam)
Beschreibung
Mit is_Trigger() können Sie für GigE und USB 3 uEye Kameras den Burst-Triggermodus aktivieren. Im Burst-Triggermodus nimmt die Kamera nach Eingang eines Triggersignals mehrere Bilder in Folge auf. Das Triggersignal erfolgt per externem Hardware-Trigger über den digitalen Eingang der Kamera. Für den Bildeinzug wird is_CaptureVideo() verwendet, da mehrere Bilder übertragen werden (siehe Beispiel 3).
Die Bilder eines Bursts werden mit maximaler Geschwindigkeit aufgenommen und übertragen. Die maximale Geschwindigkeit hängt von den Parametern Pixeltakt (siehe is_PixelClock()) und Belichtungszeit (siehe is_Exposure()) ab. Mit is_Transfer() kann zusätzlich bei GigE uEye Kameras die Latenz der Bilddatenübertragung angepasst werden.
|
Der Burst-Triggermodus kann nur im Hardware-Trigger verwendet werden. Für den Bildeinzug wird is_CaptureVideo() verwendet. Ein Trigger wird entweder über den Trigger-Pin der Kamera ausgelöst oder über einen Aufruf von is_ForceTrigger(). Das Modell UI-359xLE und die Kamerafamilie uEye LE USB 3.1 Gen 1 unterstützen den Burst-Triggermodus derzeit nicht. |
Verzögerung des Triggersignals (Trigger Delay) im Burst-Triggermodus
Wenn Sie über die Funktion is_SetTriggerDelay() eine Verzögerung einstellen, wirkt sich diese jeweils nur auf das erste Bild nach einem Triggersignal aus.
Trigger-Vorteiler setzen
Zusätzlich können Sie über die Funktion is_Trigger() einen Trigger-Vorteiler setzen. Über den Trigger-Vorteiler (Frequenzteiler) können Sie festlegen, dass das Triggersignal durch den gesetzten Wert vorgeteilt wird. Dies ist dann der Fall, wenn der Triggergeber mehr Impulse liefert, als eigentlich für die Aufnahmen benötigt werden. Durch den eingestellten Wert, z. B. 40, legen Sie fest, dass die Kamera nur bei jedem 40. Triggersignal eine Aufnahme auslöst (siehe uEye Cockpit: Eigenschaften - Trigger).
|
Der Trigger-Vorteiler wird derzeit von den folgenden Modellen im Hardware-Triggermodus unterstützt: •USB 3 uEye CP Rev. 2 •USB 3 uEye CP •USB 3 uEye LE •USB 3 uEye ML •GigE uEye CP Rev. 2 •GigE uEye CP •GigE uEye FA •GigE uEye SE Rev. 4 |
Ü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 Struktur RANGE_OF_VALUES_U32
UINT |
u32Minimum |
Minimalwert |
UINT |
u32Maximum |
Maximalwert |
UINT |
u32Increment |
Inkrement |
UINT |
u32Default |
Standardwert |
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
UINT nTriggerBurstSizeSupported = 0;
INT nRet = is_Trigger(m_hCam, IS_TRIGGER_CMD_GET_BURST_SIZE_SUPPORTED,
(void*)&nTriggerBurstSizeSupported, sizeof(nTriggerBurstSizeSupported));
if (nRet == IS_SUCCESS)
{
// Burst size supported
if (nTriggerBurstSizeSupported == 1)
{
RANGE_OF_VALUES_U32 rangeBurstSize;
nRet = is_Trigger(m_hCam, IS_TRIGGER_CMD_GET_BURST_SIZE_RANGE,
(void*)&rangeBurstSize, sizeof(rangeBurstSize));
if (nRet == IS_SUCCESS)
{
UINT nMin, nMax;
nMin = rangeBurstSize.u32Minimum;
nMax = rangeBurstSize.u32Maximum;
}
}
}
UINT nTriggerBurstSize = 0;
INT nRet = is_Trigger(m_hCam, IS_TRIGGER_CMD_GET_BURST_SIZE,
(void*)&nTriggerBurstSize, sizeof(nTriggerBurstSize));
nRet = is_Trigger(m_hCam, IS_TRIGGER_CMD_SET_BURST_SIZE,
(void*)&nTriggerBurstSize, sizeof(nTriggerBurstSize));
// Trigger burst with image queue
// Init camera
int BurstSize = 8;
/* Set trigger mode */
nRet = is_SetExternalTrigger(m_hCam, IS_SET_TRIGGER_HI_LO);
/* Set image burst size */
nRet = is_Trigger(m_hCam, IS_TRIGGER_CMD_SET_BURST_SIZE, &BurstSize, sizeof(BurstSize));
/* Start capture */
nRet = is_CaptureVideo(m_hCam, IS_DONT_WAIT);
/* Retrieve images */
for (int i = 0; i < BurstSize; ++i)
{
int memID;
char *memBuffer;
nRet = is_WaitForNextImage(m_hCam, Timeout, &memBuffer, &memID);
if (nRet == IS_SUCCESS)
{
…
}
}
UINT nLinePrescalerSupported = 0;
INT nRet = is_Trigger(m_hCam, IS_TRIGGER_CMD_GET_LINE_PRESCALER_SUPPORTED,
(void*)&nLinePrescalerSupported, sizeof(nLinePrescalerSupported));
if (nRet == IS_SUCCESS)
{
// Prescaler supported
if (nLinePrescalerSupported== 1)
{
RANGE_OF_VALUES_U32 rangePrescaler;
nRet = is_Trigger(m_hCam, IS_TRIGGER_CMD_GET_LINE_PRESCALER_RANGE,
(void*)&rangePrescaler, sizeof(rangePrescaler));
if (nRet == IS_SUCCESS)
{
UINT nMin, nMax;
nMin = rangePrescaler.u32Minimum;
nMax = rangePrescaler.u32Maximum;
}
}
}
UINT nPrescaler = 0;
INT nRet = is_Trigger(m_hCam, IS_TRIGGER_CMD_GET_LINE_PRESCALER,
(void*)&nPrescaler, sizeof(nPrescaler));
nRet = is_Trigger(m_hCam, IS_TRIGGER_CMD_SET_LINE_PRESCALER, (void*)&nPrescaler, sizeof(nPrescaler));
Beispiel 6
UINT nFramePrescalerSupported = 0;
INT nRet = is_Trigger(m_hCam, IS_TRIGGER_CMD_GET_FRAME_PRESCALER_SUPPORTED,
(void*)&nFramePrescalerSupported, sizeof(nFramePrescalerSupported));
if (nRet == IS_SUCCESS)
{
// Prescaler supported
if (nFramePrescalerSupported == 1)
{
RANGE_OF_VALUES_U32 rangePrescaler;
nRet = is_Trigger(m_hCam, IS_TRIGGER_CMD_GET_FRAME_PRESCALER_RANGE,
(void*)&rangePrescaler, sizeof(rangePrescaler));
if (nRet == IS_SUCCESS)
{
UINT nMin, nMax;
nMin = rangePrescaler.u32Minimum;
nMax = rangePrescaler.u32Maximum;
}
}
}
UINT nPrescaler = 0;
INT nRet = is_Trigger(m_hCam, IS_TRIGGER_CMD_GET_FRAME_PRESCALER,
(void*)&nPrescaler, sizeof(nPrescaler));
nRet = is_Trigger(m_hCam, IS_TRIGGER_CMD_SET_FRAME_PRESCALER, (void*)&nPrescaler, sizeof(nPrescaler));