Aktivieren Sie JavaScript, um die Website anzuzeigen.

IDS Software Suite 4.95.1

Windows_Logo
Linux_Logo

USB 2.0

USB 3.x

GigE

USB 2.0

USB 3.x

GigE

Syntax

INT is_ImageQueue (HIDS hCam, UINT nCommand, void* pParam, UINT cbSizeOfParams)

Beschreibung

is_ImageQueue() aktiviert/deaktiviert eine Warteschlangen-Funktion für eine bestehende Bildspeichersequenz. Neu eintreffende Bilder werden dann jeweils ans Ende der Sequenz angefügt (FIFO-Prinzip). Die Speichersequenz muss zuvor mit is_AddToSequence() angelegt werden (siehe Sequenz-Bildspeicher und Bildspeicher anlegen).

Bildspeicher aus einer Sequenz mit Warteschlangen-Funktion sind automatisch gelockt. Die Bildspeicher müssen mit is_UnlockSeqBuf() freigegeben werden, um wieder in der Sequenz verwendet werden zu können.

Beachten Sie, dass auch Bildaufnahmefehler wie Bilder in die Warteschlange eingereiht werden. Liefert ein Aufruf von IS_IMAGE_QUEUE_CMD_WAIT den Rückgabewert IS_CAPTURE_STATUS zurück, dann können Sie über einen erneuten Aufruf der Funktion prüfen, ob nach dem Fehler weitere Bilder in die Warteschlange eingereiht wurden.

hint_info

Bildspeichersequenzen können auch ohne die Warteschlangen-Funktion verwendet werden. In diesem Fall muss beim Eintreffen eines Bildaufnahme-Events der aktuelle Bildspeicher abgefragt werden (is_GetActSeqBuf()). Nachteil bei dieser Vorgehensweise ist, dass bei sehr hohen Bildraten zwischen dem Eintreffen des Events und dem Auslesen/Locken des aktiven Speichers bereits weitere Bilder eingetroffen sein können. Diese würden beim Abfragen des zuletzt eingetroffenen Bildes übersprungen.

Bei der Verwendung von is_ImageQueue() hingegen wird immer das älteste noch nicht abgefragte Bild zurückgegeben. Außerdem werden Bildspeicher sofort nach dem Befüllen automatisch gelockt. Damit wird verhindert, dass bei hohen Bildraten und kurzen Sequenzen Bildspeicher vor dem Locken bereits wieder überschrieben werden.

Ü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 IMAGEQUEUEWAITBUFFERS

UINT

timeout

Wartezeit in Millisekunden (ms). Wertebereich 0…232-1

Wenn sich kein Bild in der Sequenz befindet und innerhalb der Wartezeit kein Bild eintrifft, kehrt die Funktion mit IS_TIMED_OUT zurück.

char**

ppcMem

Zeiger auf Variable, in die die Adresse des ältesten Bildes der Sequenz geschrieben wird.

INT*

pnMemId

Zeiger auf Variable, in die die Sequenz-ID (Position in der Sequenzliste) des ältesten Bildes der Sequenz geschrieben wird.

Rückgabewert

IS_ACCESS_VIOLATION

Es ist eine Zugriffsverletzung aufgetreten.

IS_CANT_COMMUNICATE_WITH_DRIVER

Kommunikation mit dem Kameratreiber schlug fehl, weil kein Treiber geladen ist.

IS_CAPTURE_STATUS

Es ist ein Übertragungsfehler aufgetreten oder es war kein Bildspeicher zum Befüllen verfügbar. Mit is_CaptureStatus() kann die Fehlerursache abgefragt werden. So könnte z. B. der Bildspeicher gesperrt sein und mit is_UnlockSeqBuf() zuerst freigegeben werden.

Der Parameter IS_CAPTURE_STATUS ersetzt den bisherigen Parameter IS_TRANSFER_FAILED.

Der Parameter IS_TRANSFER_FAILED wurde in die neue Header-Datei ueye_deprecated.h verschoben, die alle veralteten Funktionsdefinitionen und Konstanten enthält. Falls Bedarf besteht, kann die Header-Datei ueye_deprecated.h zusätzlich zu ueye.h eingebunden werden.

IS_IO_REQUEST_FAILED

Eine IO Anforderung des uEye Treibers schlug fehl. Eventuell passen die Versionen der Dateien ueye_api.dll (API) und ueye_usb.sys bzw. ueye_eth.sys (Treiber) nicht zusammen.

IS_INVALID_CAMERA_HANDLE

Ungültiges Kamera-Handle

IS_INVALID_MEMORY_POINTER

Ungültiger Zeiger oder ungültige Speicher-ID

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_NULL_POINTER

Ungültiges Array

Z. B. eine Variable wurde nicht korrekt initialisiert oder eine Funktion wurde in der falschen Reihenfolge aufgerufen.

IS_OPERATION_ABORTED

Der Vorgang wurde abgebrochen.

Z. B. wurde das Warten auf das nächste Bild abgebrochen.

IS_SUCCESS

Funktion erfolgreich

IS_TIMED_OUT

Ein Timeout trat auf. Eine Bildaufnahme konnte nicht in der vorgeschriebenen Zeit beendet werden.

Verwandte Funktionen

•is_AddToSequence()

•is_UnlockSeqBuf()

Beispiel

// Init the image queue
is_ImageQueue(hCam, IS_IMAGE_QUEUE_CMD_INIT, NULL, 0);
 
// Get number of pending items
UINT numberPending = 0;
is_ImageQueue(hCam, IS_IMAGE_QUEUE_CMD_GET_PENDING, &numberPending, sizeof(numberPending));
 
// Discard pending items
UINT discardItems = numberPending - 1;
is_ImageQueue(hCam, IS_IMAGE_QUEUE_CMD_DISCARD_N_ITEMS, &discardItems, sizeof(discardItems));
 
// Flush image queue
is_ImageQueue(hCam, IS_IMAGE_QUEUE_CMD_FLUSH, NULL, 0);
 
// Wait for another image (maybe in a thread)
char *memory;
int id;
IMAGEQUEUEWAITBUFFER waitBuffer;
waitBuffer.timeout = 10000;
waitBuffer.pnMemId= &id;
waitBuffer.ppcMem = &memory;
is_FreezeVideo(hCam, IS_DONT_WAIT);
is_ImageQueue(hCam, IS_IMAGE_QUEUE_CMD_WAIT, (void*)&waitBuffer, sizeof(waitBuffer));
 
// Now cancel the wait (e.g. shutdown)
is_ImageQueue(hCam, IS_IMAGE_QUEUE_CMD_CANCEL_WAIT, NULL, 0);
 
// Exit the image queue
is_ImageQueue(hCam, IS_IMAGE_QUEUE_CMD_EXIT, NULL, 0);