is_SetAllocatedImageMem

uEye Kamera-Handbuch Version 4.92


is_SetAllocatedImageMem

Windows_Logo
Linux_Logo

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

•is_AllocImageMem()

•is_FreeImageMem()

•is_AddToSequence()

•is_SetImageMem()

•is_GetColorDepth()

•is_GetImgMemPitch()

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.


© 2019 IDS Imaging Development Systems GmbH
https://de.ids-imaging.com