我想要的是什么:
我在真实系统上有一个带变量isWorking(boolean)
的传感器。现在我想要一个查看器,告诉我传感器是否正常工作。例如,传感器节点为绿色或红色。
我有什么:
我在CoDeSys上有一个带有变量isWorking
的softSPS程序。使用JEasyOPC,我可以读取/覆盖此变量并将其打印到Eclipse控制台中。
我还在eclipse运行时为我的系统创建了一个Sirius模型,就像我发现的所有Sirius教程一样。我看到我可以使用条件样式更改节点的颜色。
所以我有一个节点Sensor
和一个变量isWorking
,但我不知道如何连接它们。
我在Sirius文档中发现了一些关于“外部Java动作”的内容。在Sirius论坛中还有一个例子(https://www.eclipse.org/forums/index.php/t/764175/),但我不知道它是否适用于我的问题以及如何使用JEasyOPC。
我找到的另一种方法是JFace数据绑定,但我只找到了一个适用于EMF模型而不是Sirius Diagram(http://www.vogella.com/tutorials/EclipseDataBindingEMF/article.html)的教程。我不想改变我的元模型。
答案 0 :(得分:1)
我认识Eclipse和Sirius。如果我理解正确,你有一个可用的变量,你想根据变量值显示一个不同颜色的节点。 要做到这一点,你必须忙着等待[1]这不是最好的做法,最好的做法是通过变量值变化的听众通知。
然后按照您选择的策略,忙着等待(使用一个循环读取变量的线程)或监听器,您需要更新您的EMF模型,让Sirius对您的EMF模型更改作出反应并让它更改节点'的颜色。
最诚挚的问候。
答案 1 :(得分:1)
执行此操作的最佳方法是使用Sirius Java Services机制。您需要首先在Viewpoint规范项目中的Viewpoint上添加扩展类。您右键单击视点并选择New Extension/Java Extension
。在那里你输入了一个类名,它包含了你想在Sirius元素中调用的方法。
但是,要调用您的方法,您应该使用service:
元素或此[methodName()]
之类的Acceleo表达式。
您需要确保您调用该方法的类可供Sirius使用。这意味着您需要像这样运行3-Eclipse环境:
您可以查看此信息以获取更多信息(优于Java操作): https://www.eclipse.org/sirius/doc/specifier/general/Writing_Queries.html#service_methods
另请注意,如果您的服务方法需要根据您显示结果的Sirius节点的不同而有所不同,那么您需要确保传递正确的上下文。我也可以帮忙解决这个问题,请在评论中告诉我。但是,如果您的服务方法仅检查一件事,然后返回结果(即您的图表中只有一个传感器),那么您不必担心这一点。