uEye Kamera-Handbuch Version 4.92
![]() |
![]() |
USB 2.0 USB 3.0 GigE |
USB 2.0 USB 3.0 GigE |
Syntax
INT is_SetAllocatedImageMem (HIDS hCam, INT width, INT height, INT bitspixel, char* pcImgMem, int* pid)
Beschreibung
is_SetAllocatedImageMem() setzt einen vom Benutzer allozierten Speicher als aktiven Speicher, in den digitalisiert werden kann. Der Speicher muss groß genug alloziert werden und muss unbedingt global gesperrt sein.
Je nach eingestelltem Bildformat wird für den Speicher mehr als ein Byte pro Pixel verbraucht:
unsigned int uBytesPerPixel = (bitspixel+7)/8
unsigned int uImageSize = width * height * uBytesPerPixel;
Ein mit is_SetAllocatedImageMem() angegebener Speicher kann mit is_AddToSequence() in eine Sequenz eingebaut werden.
Die Adresse des Speichers wird an den uEye-Treiber übergeben. Dies geschieht mit der Funktion is_SetAllocatedImageMem(). Zusätzlich muss wie bei is_AllocImageMem() die Größe des Bildes angegeben werden. Die zurückgegebene Speicher-ID wird von anderen Funktionen benötigt, um auf den Speicher zuzugreifen.
Der Speicherbereich muss mit der Funktion is_FreeImageMem() wieder aus der Treiberverwaltung genommen werden. Hierbei wird der Speicher jedoch nicht freigegeben. Der Benutzer muss dafür sorgen, dass der Speicher freigegeben wird.
Nach is_SetAllocatedImageMem muss immer ein is_SetImageMem oder is_AddToSequence aufgerufen werden, damit die Bildaufnahme in den Bildspeicher erfolgen kann.
Übergabeparameter
hCam |
Handle auf Kamera |
width |
Breite des Bildes |
height |
Höhe des Bildes |
bitspixel |
Farbtiefe des Bildes (Bits pro Pixel) |
pcImgMem |
Zeiger auf den Speicheranfang des allozierten Speichers |
pid |
Gibt die ID für diesen Speicher zurück |
Rückgabewert
IS_CANT_ADD_TO_SEQUENCE |
Der Bildspeicher befindet sich bereits in der Sequenz und kann nicht doppelt hinzugefügt werden. |
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_OUT_OF_MEMORY |
Es konnte kein Speicher alloziert werden. |
IS_SEQUENCE_BUF_ALREADY_LOCKED |
Der Speicher konnte nicht gelockt werden. Der Zeiger auf den Buffer ist ungültig. |
IS_SUCCESS |
Funktion erfolgreich |
Verwandte Funktionen
Beispiel Windows
HANDLE hMem = GlobalAlloc(0, uImageSize);
char* pcMem = (char*)GlobalLock(hMem);
INT nRet = is_SetAllocatedImageMem(hCam, uWidth, uHeight, uBitspixel, pcMem, &iMemID);
[…]
nRet = is_FreeImageMem(hCam, pcMem, iMemID);
GlobalUnlock(hMem);
GlobalFree(hMem);
Beispiel Linux
char* pcMem = (char*)malloc(uImageSize);
int iRet = mlock(pcMem, uImageSize);
INT nRet = is_SetAllocatedImageMem(hCam, uWidth, uHeight, uBitspixel, pcMem, &iMemID);
[…]
nRet = is_FreeImageMem(hCam, pcMem, iMemID);
iRet = munlock(pcMem, uImageSize);
free(pcMem);
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.