![]() |
![]() |
|---|---|
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.
|
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
// 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);