插件与 MERLIC 之间的通讯

Communicator 内部的插件与视觉系统(即 MERLIC)之间的通讯主要利用两个 FIFO 队列,一个队列可用于任一方向:

操作

操作是从插件到 MERLIC 的命令,它们会影响视觉系统的状态,例如触发执行、加载配方等。

这些操作由各种插件加入队列,并由视觉系统依次处理。除了操作已正确排队外,不会提供任何即时反馈。但是,每个操作在排队时都会分配一个 "actionId",这可用于跟踪处理操作时发送的事件。操作可以包含参数,例如,在 "PrepareRecipe" 操作中指定所需配方的 ID。

有关可用操作及其各自参数的列表,请参阅 Communicator API 参考中的主题Available Actions

事件

事件可将视觉状态机器的活动状态的任何更改、可用结果通知给插件,或向插件发出警告,告知某个操作因自身无效或不适用于 MERLIC 的当前状态而无法被处理。

大多数事件是操作的结果,此时,它们带有各自的 "actionId"Communicator 为每个插件提供单独的事件队列。每个事件都会被加入各个插件的事件队列中,而与关联的操作是由哪个插件发出的无关。然后,插件可以从其各自的队列中获取事件。事件可以包含参数,例如,将结果数据作为 "ResultReady" 事件的一部分传输。

有关可用操作及其各自参数的列表,请参阅 Communicator API 参考中的主题Available Events