set_framegrabber_callback
— Registrieren einer Callback-Funktion für ein Bildeinzugsgerät.
set_framegrabber_callback( : : AcqHandle, CallbackType, CallbackFunction, UserContext : )
Der Operator set_framegrabber_callback
registriert eine
Callback-Funktion für das durch AcqHandle
angegebene
Bildeinzugsgerät. Der Parameter CallbackFunction
enthält einen
Zeiger auf die zu registrierende Funktion, während CallbackType
angibt, mit welcher Funktion des darunterliegenden API sie verbunden werden
soll.
Typische Werte für CallbackType
sind:
Der Bildeinzug hat eine Fehlerbehandlung ausgelöst.
Die Belichtung des nächsten Bildes ist beendet.
Die Belichtung des nächsten Bildes ist gestartet.
Ein neues Bild ist verfügbar und kann mit
grab_image_async
abgeholt werden.
Abhängig von der Funktionalität des darunterliegenden API sind auch
weitere Werte für CallbackType
möglich. Alle tatsächlich
verfügbaren Callback-Typen für ein bestimmtes Bildeinzugsgerät können durch
den Aufruf von get_framegrabber_param
mit dem Parameter
'available_callback_types'
abgefragt werden. Nähere Informationen
finden sich in der Dokumentation der verwendeten Bildeinzugsschnittstelle.
Sobald der Callback registriert worden ist, wird bei jedem Eintreten
des entsprechenden Ereignisses (z.B. die Benachrichtigung, dass die
Belichtung abgeschlossen ist) die angegebene Callback-Funktion
CallbackFunction
aufgerufen. Ist CallbackFunction
gleich NULL, wird der entsprechende Callback gelöscht.
Die Signatur der Callback-Funktion lautet folgendermaßen: Herror HAcqCallback(void *AcqHandle, void *Context, void *UserContext) Auf Windows 32-Bit-Systemen wird die __stdcall Namenskonvention verwendet: Herror (__stdcall HAcqCallback)(void *AcqHandle, void *Context, void *UserContext)
Der erste Parameter der Callback-Funktion enthält das in AcqHandle
übergebene Handle für das Bildeinzugsgerät, der zweite einen Zeiger auf
schnittstellenabhängige Kontextdaten und der dritte Parameter ist der Zeiger
auf die benutzerspezifischen Kontextdaten, der in UserContext
angegeben wird.
Aus Sicht einer Anwendung mit mehreren Threads bilden alle
Bildeinzugsoperatoren (wie in open_framegrabber
aufgelistet)
eine eigene Gruppe innerhalb der info_framegrabber
,
open_framegrabber
, close_framegrabber
und
close_all_framegrabbers
exklusiv ausgeführt werden.
set_framegrabber_callback
läuft mit allen nicht exklusiven
Operatoren innerhalb und außerhalb der Gruppe parallel.
Dieser Operator modifiziert den Zustand des folgenden Eingabeparameters:
Während der Ausführung dieses Operators muss der Zugriff auf den Wert dieses Parameters synchronisiert werden, wenn er über mehrere Threads hinweg verwendet wird.
AcqHandle
(input_control, Zustand wird modifiziert) framegrabber →
(handle)
Zu benutzendes Bildeinzugsgerät.
CallbackType
(input_control) string →
(string)
Callback-Typ.
Defaultwert: 'transfer_end'
Wertevorschläge: 'exception' , 'exposure_end' , 'exposure_start' , 'transfer_end'
CallbackFunction
(input_control) pointer →
(integer)
Zu setzender Zeiger auf die Callback-Funktion.
UserContext
(input_control) pointer →
(integer)
Zeiger auf benutzerspezifische Kontextdaten.
Ist das Bildeinzugsgerät geöffnet und konnte der angegebene Callback
erfolgreich gesetzt werden, liefert set_framegrabber_callback
den Wert 2 (H_MSG_TRUE). Ansonsten wird eine Fehlerbehandlung durchgeführt.
open_framegrabber
,
set_framegrabber_param
grab_image
,
grab_data
,
grab_image_start
,
grab_image_async
,
grab_data_async
,
get_framegrabber_param
open_framegrabber
,
get_framegrabber_callback
Foundation