Kommunikation zwischen Plugins und MERLIC
Die Kommunikation zwischen Plugins im Communicator und dem Bildverarbeitungssystem (d. h. MERLIC) erfolgt hauptsächlich über zwei FIFO-Warteschlangen, jeweils eine für jede Richtung:
Aktionen
Aktionen sind Befehle von einem Plugin an MERLIC, die den Zustand des Bildverarbeitungssystems beeinflussen, z. B. Auslösen der Ausführung, Laden von Rezepten usw.
Diese Aktionen werden von den verschiedenen Plugins in die Warteschlange gestellt und vom Bildverarbeitungssystem nacheinander verarbeitet. Außer der Information, dass eine Aktion ordnungsgemäß in die Warteschlange gestellt wurde, erfolgt keine unmittelbare Rückmeldung. Jeder Aktion wird jedoch eine "actionId" zugewiesen, wenn sie in die Warteschlange gestellt wird. Diese kann verwendet werden, um die Ereignisse zuzuordnen, die bei der Verarbeitung der Aktion gesendet werden. Aktionen können Parameter enthalten, um z. B. in der Aktion "PrepareRecipe" die ID des gewünschten Rezepts anzugeben.
Eine Liste der verfügbaren Aktionen und der jeweils zugehörigen Parameter finden Sie unter Available Actions in der Communicator-API-Referenz.
Ereignisse
Ereignisse benachrichtigen die Plugins über Änderungen im aktiven Zustand des Zustandsautomaten des Bildverarbeitungssystems oder über verfügbare Ergebnisse. Sie informieren das Plugin außerdem, wenn eine Aktion nicht verarbeitet werden konnte, weil diese unzulässig oder im aktuellen Zustand von MERLIC nicht verfügbar war.
Die meisten Ereignisse sind das Ergebnis einer Aktion, sodass sie dann die jeweilige "actionId" aufweisen. Der Communicator unterhält eine separate Ereigniswarteschlange für jedes Plugin. Alle Ereignisse werden unabhängig davon, welches Plugin die jeweilige Aktion ausgelöst hat, in die Ereigniswarteschlange der einzelnen Plugins gestellt. Plugins können Ereignisse dann aus den entsprechenden Warteschlangen abrufen. Ereignisse können Parameter enthalten, um z. B. die Ergebnisdaten im Rahmen des "ResultReady"-Ereignisses zu übertragen.
Eine Liste der verfügbaren Aktionen und der jeweils zugehörigen Parameter finden Sie unter Available Events in der Communicator-API-Referenz.