ObjectMemoryTool¶
Das ObjectMemoryTool dient der Übergabe von Objekten/ Werte (Value) über die Grenzen eines Jobs hinaus. Die Objekte werden dazu im Arbeitsspeicher angelegt.
Das Tool bietet Zugriff auf mehrere Speicherobjekte, die durch einen Schlüssel ‚MemoryName‘ addressiert werden. Darin können mehrere Variablen ‚ValueName‘ addressiert werden. Die dazugehörigen Werte ‚Value‘ sind vom Datentyp Objekt.
Die Speicheradressierung erfolgt im Input-Terminal über das Tuple ‚MemoryName‘ und ‚ValueName‘. Zu schreibende Werte werden am Input-Terminal ‚Value‘ gesetzt. Gelesen Werte liegen am Output-Terminal ‚Value‘ an.
Beim ersten Schreibzugriff wird das Memoryobjekt im Speicher für ‚MemoryName‘ und ‚ValueName‘ erstellt und kann anschließend gelesen/ überschrieben werden. Der Fehlerfall Fail/RunError wird ausgelöst, wenn lesend auf ein nicht existentes Memoryobjekt zugegriffen wird.
Ein persistentes Speichern der Objekte über einen Programmstart/PC Start hinaus kann mittels <ProjektName>.makproj konfiguriert werden. Dabei werden bei Progammende alle Objekte in den Projektordner gespeichert. Vgl.: Projektordner und -dateien
<dataStore name="VisionPluginConfig">
<param name="persistObjectMemory" value="True" />
</dataStore>
InputTerminals¶
Über das Register ‚Inputterminal‘ können die Eingänge konfiguriert werden. Alternativ können die Eingänge des Input-Terminals verlinkt und programmgesteuert gesetzt werden. Das Speicherobjekt wird jobübergreifend durch ‚MemoryName‘ und ‚ValueName‘ addressiert.
ObjectMemoryToolInputterminals Register
Clear Löscht das Objekt im Speicher.
GetValue Liest das Objekt vom Speicher ung gibt es auf den Outputs.Value. Falls das Objekt nicht im Speichher existiert erfolgt ein RUN ERROR.
MemoryName Speicherbereichsname
SetValue Übernimmt vom Eingang Inputs.Value das Objekt und schreibt diesen Wert ins Memory. Falls es nicht existiert, wird es angelegt.
Value Objekt, das gespeichert wird.
ValueName Variablenname dem der Wert zugewiesen wird.
Konfiguration¶
Als Speicherbaustein von Objekten ist ‚GetValue‘ und ‚SetValue‘ auf ‚true‘ zu setzen. Das Speicheobjekt muss am ‚Inputs.Value‘ anliegen.
Als Lesebaustein von Objekten aus dem Speicher ist nur ‚GetValue‘ auf ‚true‘ zu setzen. Das Objekt wird entsprechend am ‚Outputs.Value‘ ausgegeben.
ObjectMemory (Overview)¶
ObjectMemory Register
Clear Löscht alle gelisteten Werte der Objecte (null).
Die blaue Spalte zeigt den Speicherbereich ‚MemoryName‘. Darunter sind die dazugehörigen ‚ValueName‘ gelistet. Bei der Verwendung mehrere Speicherbereiche würden diese unterhalb gruppiert werden.
Beispiel¶