Aktivieren Sie JavaScript, um die Website anzuzeigen.

IDS Software Suite 4.95

Windows_Logo
Linux_Logo

USB 2.0

USB 3.x

GigE

USB 2.0

USB 3.x

GigE

Syntax

INT is_AOI (HIDS hCam, UINT nCommand, void* pParam, UINT nSizeOfParam)

Beschreibung

hint_info

Die Multi-AOI-Funktion wird derzeit von den folgenden Modellen unterstützt:

•UI-124x/UI-324x/UI-524x (max. 4 AOIs, je 2 in X- und Y-Richtung)

•UI-125x/UI-325x/UI-525x (max. 4 AOIs, je 2 in X- und Y-Richtung)

•UI-300x (max. 64 AOIs, je 8 in X- und Y-Richtung)

•UI-304x/UI-504x (max. 4 AOIs, je 2 in X- und Y-Richtung)
Beachten Sie, dass die UI-304xLE die Multi-AOI-Funktion nicht unterstützt.

•UI-306x (max. 16 AOIs, je 4 in X- und Y-Richtung)

•UI-307x (max. 64 AOIs, je 8 in X- und Y-Richtung)

•UI-308x (max. 64 AOIs, je 8 in X- und Y-Richtung)

•UI-309x (max. 64 AOIs, je 8 in X- und Y-Richtung)

•UI-313xLE (max. 4 AOIs, je 2 in X- und Y-Richtung)

•UI-313xCP Rev. 2/UI-513x (max. 8 AOIs, 4 x 2 oder 2 x 4 in X- und Y-Richtung)

•UI-314x/UI-514x (max. 8 AOIs, 4 x 2 oder 2 x 4 in X- und Y-Richtung)

•UI-316x (max. 16 AOIs, je 4 in X- und Y-Richtung)

•UI-318x (max. 16 AOIs, je 4 in X- und Y-Richtung)

•UI-336x/UI-536x (max. 8 AOIs in Y-Richtung)

•UI-337x/UI-537x (max. 8 AOIs in Y-Richtung)

Die Sensoren der Modelle UI-124x/UI-324x/UI-524x und UI-125x/UI-325x/UI-525x unterstützen mehrere AOIs in einer Aufnahme, die gemeinsam als ein Bild übertragen werden. In diesem Modus können 2 oder 4 AOIs angelegt werden, die gemeinsame X- oder Y-Achsen besitzen. Der Sensor wird in diesem Modus schneller.

Die Sensoren der Modelle UI-336x/UI-536x und UI-337x/UI-537x unterstützen mehrere AOI in einer Aufnahme, die gemeinsam als ein Bild übertragen werden. In diesem Modus können maximal 8 AOIs mit bis zu 16 Y-Achsen angelegt werden, es werden jedoch keine X-Achsen unterstützt.

Die Sensoren der Modelle UI-306x und UI-308x unterstützen mehrere AOIs in einer Aufnahme, die gemeinsam als ein Bild übertragen werden. In diesem Modus können für UI-306x bis zu 4 AOIs in horizontaler und vertikaler Richtung angelegt werden und für UI-308x bis zu 8 AOIs.

Die Sensoren der Modelle UI-313x, UI-314x, UI-316x und UI-318x unterstützen mehrere AOIs in einer Aufnahme, die gemeinsam als ein Bild übertragen werden. In diesem Modus können für die Kameras angelegt werden:

•UI-313x und UI-314x: maximal 8 AOIs (horizontal x vertikal: 4 x 2 oder 2 x 4)

•UI-316x und UI-318x: maximal 16 AOIs (horizontal x vertikal: 4 x 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 nSizeOfParam angegeben.

Übergabeparameter

hCam

Handle auf Kamera

pParam

Zeiger auf Funktionsparameter, der abhängig von nCommand unterschiedlich belegt ist.

nSizeOfParam

Größe des Speicherbereichs in Byte, auf den pParam verweist.

Inhalt der Struktur IS_MULTI_AOI_CONTAINER

UINT

nNumberOfAOIs

Anzahl der Einträge in pMultiAOIList

IS_MULTI_AOI_DESCRIPTOR

pMultiAOIList

Daten der einzelnen AOIs

Siehe IS_MULTI_AOI_DESCRIPTOR

Inhalt der Struktur IS_MULTI_AOI_DESCRIPTOR

UINT

nPosX

Startposition der AOI in X-Richtung

Nur UI-336x/UI-536x und UI-337x/UI-537x: nPosX = 0

UINT

nPosY

Startposition der AOI in Y-Richtung

UINT

nWidth

AOI-Breite

Nur UI-336x/UI-536x und UI-337x/UI-537x: nWidth = min. Multi-AOI-Width (siehe IS_AOI_MULTI_GET_AOI | IS_AOI_MULTI_MODE_GET_MINIMUM_SIZE)

UINT

nHeight

AOI-Höhe

UINT

nStatus

Aktueller Status der AOI:

•IS_AOI_MULTI_STATUS_SETBYUSER: Benutzerdefinierte AOI. Muss vom Benutzer gesetzt werden.

•IS_AOI_MULTI_STATUS_COMPLEMENT: Die AOI wurde von der API automatisch ergänzt.

•IS_AOI_MULTI_STATUS_VALID: Die AOI ist gültig und geprüft.

•IS_AOI_MULTI_STATUS_CONFLICT: Die AOI steht im Konflikt mit einer anderen AOI, z. B. durch horizontale oder vertikale Überlappung.

•IS_AOI_MULTI_STATUS_ERROR: Die AOI ist fehlerhaft, z. B. durch eine zu kleine oder ungültige Größe, die maximale Anzahl der AOI (pro Richtung) wurde überschritten oder eine ungültige Position.

•IS_AOI_MULTI_STATUS_UNUSED: Die AOI ist nicht aktiv.

Beispiel 1

/* Struktur anlegen */
IS_MULTI_AOI_CONTAINER * m_psMultiAOIs = new IS_MULTI_AOI_CONTAINER;
m_psMultiAOIs->nNumberOfAOIs = 0;
 
/* Abfrage wie viele AOIs gesetzt werden können */
int m_nMaxNumberMultiAOIs = 0;
is_AOI(m_hCam, IS_AOI_MULTI_GET_AOI | IS_AOI_MULTI_MODE_GET_MAX_NUMBER, (void *)&m_nMaxNumberMultiAOIs, sizeof(m_nMaxNumberMultiAOIs));
 
/* Abfrage der minimalen Größe einer einzelnen AOI im Multi-AOI-Modus */
IS_SIZE_2D rMinSizeAOI;
is_AOI(m_hCam, IS_AOI_MULTI_GET_AOI | IS_AOI_MULTI_MODE_GET_MINIMUM_SIZE, (void *)&rMinSizeAOI, sizeof(rMinSizeAOI));
 
/* Wenn diese Art Multi-AOI unterstützt wird, alloziere den entsprechenden Speicher */
if (m_nMaxNumberMultiAOIs > 1)
{
/* Hinweis: Struktur für Multi-AOI immer für die maximale Anzahl der einstellbaren AOIs anlegen. */
m_psMultiAOIs->nNumberOfAOIs = m_nMaxNumberMultiAOIs;
m_psMultiAOIs->pMultiAOIList = new IS_MULTI_AOI_DESCRIPTOR[m_nMaxNumberMultiAOIs];
ZeroMemory(m_psMultiAOIs->pMultiAOIList, sizeof(IS_MULTI_AOI_DESCRIPTOR) * m_nMaxNumberMultiAOIs);
 
/* AOI setzen an Position (100/200) mit Größe (160/180) */
m_psMultiAOIs->pMultiAOIList[0].nPosX = 100;
m_psMultiAOIs->pMultiAOIList[0].nPosY = 200;
m_psMultiAOIs->pMultiAOIList[0].nWidth = 160;
m_psMultiAOIs->pMultiAOIList[0].nHeight = 180;
m_psMultiAOIs->pMultiAOIList[0].nStatus = IS_AOI_MULTI_STATUS_SETBYUSER; /* Initial definiert als Benutzerdefinierte AOI */
 
/* Weitere AOI setzen an Position (400/800) mit Größe (120/140) (Auf m_nMaxNumberMultiAOIs achten!) */
m_psMultiAOIs->pMultiAOIList[1].nPosX = 400;
m_psMultiAOIs->pMultiAOIList[1].nPosY = 800;
m_psMultiAOIs->pMultiAOIList[1].nWidth = 120;
m_psMultiAOIs->pMultiAOIList[1].nHeight = 140;
m_psMultiAOIs->pMultiAOIList[1].nStatus = IS_AOI_MULTI_STATUS_SETBYUSER;
 
/* Verifiziere die Konfiguration */
int nRet = is_AOI(m_hCam, IS_AOI_MULTI_SET_AOI | IS_AOI_MULTI_MODE_ONLY_VERIFY_AOIS, (void*)m_psMultiAOIs, sizeof(IS_MULTI_AOI_CONTAINER) + sizeof(IS_MULTI_AOI_DESCRIPTOR) * m_psMultiAOIs->nNumberOfAOIs);
 
/* Wenn Konfiguration gültig, setze konfiguration/etc. */
if (nRet == IS_SUCCESS) {
  nRet = is_AOI(m_hCam, IS_AOI_MULTI_SET_AOI, (void*)m_psMultiAOIs, sizeof(IS_MULTI_AOI_CONTAINER) + sizeof(IS_MULTI_AOI_DESCRIPTOR) * m_psMultiAOIs->nNumberOfAOIs);
}
 
/* Frage die aktuelle Konfiguration ab */
is_AOI(m_hCam, IS_AOI_MULTI_GET_AOI, (void *)m_psMultiAOIs, m_psMultiAOIs->nNumberOfAOIs * sizeof(IS_MULTI_AOI_DESCRIPTOR) + sizeof(IS_MULTI_AOI_CONTAINER));
 
/* Zähle die verschiedenen AOIs */
int nUsed = 0;
int nComplemented = 0;
int nErronous = 0;
int nConflicted = 0;
for (int i = 0; i < m_nMaxNumberMultiAOIs; i ++) {
  /* Zähle die verwendeten AOIs */
  if (!(m_psMultiAOIs->pMultiAOIList[i].nStatus & IS_AOI_MULTI_STATUS_UNUSED) && (m_psMultiAOIs->pMultiAOIList[i].nWidth > 0) && (m_psMultiAOIs->pMultiAOIList[i].nHeight > 0)) {
    nUsed++;
  }
 
  /* Zähle die ergänzten AOIs */
  if (m_psMultiAOIs->pMultiAOIList[i].nStatus & IS_AOI_MULTI_STATUS_COMPLEMENT) {
    nComplemented++;
  }
 
  /* Zähle die fehlerhaften AOIs */
  if (m_psMultiAOIs->pMultiAOIList[i].nStatus & IS_AOI_MULTI_STATUS_ERROR) {
    nErronous++;
  }
 
  /* Zähle die konfliktbehafteten AOIs (z.b. Überlappung) */
  if (m_psMultiAOIs->pMultiAOIList[i].nStatus & IS_AOI_MULTI_STATUS_CONFLICT){
    nConflicted++;
  }
}
 
/* Lösche AOI mit Index 1 */
if (IS_SUCCESS == is_AOI(m_hCam, IS_AOI_MULTI_GET_AOI, (void*)m_psMultiAOIs, m_psMultiAOIs->nNumberOfAOIs * sizeof(IS_MULTI_AOI_DESCRIPTOR) + sizeof (IS_MULTI_AOI_CONTAINER))){
  m_psMultiAOIs->pMultiAOIList[1].nPosX = 0;
  m_psMultiAOIs->pMultiAOIList[1].nPosY = 0;
  m_psMultiAOIs->pMultiAOIList[1].nWidth = 0;
  m_psMultiAOIs->pMultiAOIList[1].nHeight = 0;
  m_psMultiAOIs->pMultiAOIList[1].nStatus = IS_AOI_MULTI_STATUS_UNUSED;
  nRet = is_AOI(m_hCam, IS_AOI_MULTI_SET_AOI, (void*)m_psMultiAOIs, sizeof(IS_MULTI_AOI_CONTAINER));
}
 
/* Frage die Standardkonfiguration ab */
is_AOI(m_hCam, IS_AOI_MULTI_GET_AOI | IS_AOI_MULTI_MODE_GET_DEFAULT, (void*)m_psMultiAOIs, sizeof(IS_MULTI_AOI_CONTAINER) + m_psMultiAOIs->nNumberOfAOIs * sizeof (IS_MULTI_AOI_DESCRIPTOR));
}
 
/* Gebe den Speicher wieder frei */
if (m_psMultiAOIs) {
if (m_psMultiAOIs->pMultiAOIList) {
  delete [] m_psMultiAOIs->pMultiAOIList;
}
delete m_psMultiAOIs;
m_psMultiAOIs = NULL;
}

Veraltete Parameter

Die folgenden Parameter für nCommand sind veraltet und sollten nicht mehr verwendet werden.

IS_AOI_MULTI_MODE_X_Y_AXES

Multi-AOI-Modus der Kameramodelle UI-124x/UI-324x/UI-524x und UI-125x/UI-325x/UI-525x mit bis zu vier AOIs (je 4 X- und Y-Achsen). Die Übergabe der Achsen erfolgt über ein UINT Array:

•Array[0] - Array[3] = X1…X4

•Array[4] - Array[8] = Y1…Y4

Achtung: Dieser Parameter wurde mit Version 4.20 umbenannt. In vorherigen Versionen hieß dieser Parameter IS_AOI_MULTI_MODE_AXES.

IS_AOI_MULTI_MODE_Y_AXES

Multi-AOI-Modus der Kameramodelle UI-336x/UI-536x und UI-337x/UI-537x mit bis zu 8 AOIs (16 Y-Achsen). Die Übergabe der Achsen erfolgt über ein UINT Array:

•Array[0] - Array[16] = Y1…Y16

Beispiel 2

// Multi-AOI setzen. Die Übergabe der Achsen erfolgt über ein UINT Array der Länge 8.
UINT nAxes[8];
 
nAxes[0] = 100; // Setzen von X1
nAxes[1] = 120; //Setzen von X2
...
 
INT nRet = is_AOI(hCam, IS_AOI_MULTI_SET_AOI | IS_AOI_MULTI_MODE_X_Y_AXES, (void*)nAxes, sizeof(nAxes));

Beispiel 3

// Multi-AOI lesen
UINT nAxes[8];
INT nRet = is_AOI(hCam, IS_AOI_MULTI_GET_AOI | IS_AOI_MULTI_MODE_X_Y_AXES, (void*)nAxes, sizeof(nAxes));

Beispiel 4

// Multi-AOI deaktivieren
UINT nAxes[8];
INT nRet = is_AOI(hCam, IS_AOI_MULTI_DISABLE_AOI | IS_AOI_MULTI_MODE_X_Y_AXES, NULL, NULL);