| Operatoren |
create_message — Erzeugen einer neuen Nachricht.
create_message( : : : MessageHandle)
create_message erzeugt eine neue leere Nachricht. Der Ausgabeparameter MessageHandle referenziert das erzeugte Nachrichtenobjekt und wird dazu verwendet, um die Nachricht in den nachfolgenden Operatoraufrufen identifizieren zu können.
Eine Nachricht ist ein Objekt, das ähnlich einem assoziativem Array (Wörterbuch) aufgebaut ist. Es erlaubt eine beliebige Anzahl von Daten zu speichern, welche mit Hilfe eines eindeutigen Schlüsselwortes (String) identifiziert werden. Jedes Schlüsselwort kann entweder einen Tupeldaten-Parameter oder ein ikonisches Objekt referenzieren. Diese Daten werden in der Nachricht mit Hilfe der Operatoren set_message_obj und set_message_tuple gespeichert und können über die Operatoren get_message_obj und get_message_tuple wieder ausgelesen werden.
Die Daten, welche in den Nachrichten referenziert werden, sind stets Kopien ihrer Originale. Damit können die originalen Daten, nachdem sie in der Nachricht durch die Operatoren set_message_tuple oder set_message_obj gespeichert wurden, verändert oder gelöscht werden, ohne die Nachricht selbst zu verändern. Eine Ausnahme bilden Handles, welche von HALCON als üblicher Integerwert behandelt werden. Beim Speichern eines Handles in einer Nachricht wird daher nur der Handle-Wert, nicht aber das Handle-Objekt selbst kopiert.
Die erzeugten Nachrichten können zwischen Threads einfach über eine Warteschlange für Nachrichten ausgetauscht werden. Mit Hilfe des Operators enqueue_message können Nachrichten aus mehreren Erzeuger-Threads an eine Warteschlange angehängt und über den Operator dequeue_message aus mehreren Verbraucher-Threads wieder aus der Warteschlange entnommen werden. All diese Operationen werden intern synchronisiert, so dass der Mechanismus über die Warteschlange ohne externe Synchronisation auskommt. enqueue_message kopiert die Nachricht in die Warteschlange, weshalb das Nachrichtenobjekt sofort wiederverwendet werden kann, nachdem es in die Warteschlange eingereiht wurde.
Wenn die Nachricht nicht mehr verwendet wird, können alle mit der Nachricht verbundenen Ressourcen, insbesondere die gespeicherten Tupeldaten und ikonischen Objekte, mit Hilfe des Operators clear_message freigegeben werden.
Nachrichtenobjekt.
Parameteranzahl: MessageHandle == 1
Zusicherung: MessageHandle != 0
MessageHandles := [] for idx := 0 to 4 by 1 create_message (MessageHandle) MessageHandles[idx]:= MessageHandle endfor * ... clear_message (MessageHandles)
create_message liefert den Wert 2 (H_MSG_TRUE), sofern kein Allokierungsfehler auftritt.
set_message_tuple, set_message_obj
clear_message, set_message_tuple, get_message_tuple, set_message_obj, get_message_obj, set_message_param, get_message_param, enqueue_message, dequeue_message
Foundation
| Operatoren |