0

我想要的是:

isWorking(boolean)我在真实系统上有一个带有变量的传感器。现在我想要一个查看器来告诉我传感器是否工作。例如传感器节点是绿色或红色。

我有的:

我在 CoDeSys 上有一个带有变量的 softSPS 程序isWorking。使用 JEasyOPC,我可以读取/覆盖此变量并将其打印到 Eclipse 控制台中。我还在 Eclipse 运行时中为我的系统创建了一个 Sirius 模型,正如我发现的所有 Sirius 教程中所示。我看到我可以使用条件样式更改节点的颜色。

所以我有一个节点Sensor和一个变量isWorking,但我不知道如何连接它们。

我在 Sirius 文档中发现了一些关于“外部 Java 操作”的内容。Sirius 论坛中还有一个示例(https://www.eclipse.org/forums/index.php/t/764175/),但我不知道它是否适用于我的问题以及如何将 JEasyOPC 与他们。

我发现的另一种方法是 JFace 数据绑定,但我只找到了一个适用于 EMF 模型而不适用于天狼星图的教程 ( http://www.vogella.com/tutorials/EclipseDataBindingEMF/article.html )。我不想改变我的元模型。

4

2 回答 2

1

我知道 Eclipse 和 Sirius。如果我理解正确,您有一个可用的变量,您希望根据变量值显示具有不同颜色的节点。为此,您必须忙于等待 [1],这不是最佳做法,最佳做法是通过侦听器通知变量值更改。

然后按照您选择的策略,忙于等待(使用循环读取您的变量的线程)或侦听器,您需要更新您的 EMF 模型以让 Sirius 对您的 EMF 模型更改做出反应并让它更改节点的颜色。

此致。

[1] http://en.wikipedia.org/wiki/Busy_waiting

于 2014-09-23T13:16:33.210 回答
1

最好的方法是使用 Sirius Java 服务机制。您需要首先在您的 Viewpoint Specification Project 中的 Viewpoint 上添加扩展类。您右键单击视点并选择New Extension/Java Extension。在那里,您输入包含您要在 Sirius 元素中调用的方法的类名。但是,要调用您的方法,您应该像这样使用service:元素或 Acceleo 表达式[methodName()]

您需要确保您调用该方法的类可供 Sirius 使用。这意味着您需要像这样运行 3-Eclipse 环境:

  • Eclipse 环境编号 1 包含您的模型和包含您的服务方法的类
  • Eclipse 实例编号 2 从没有发射。1,其中包含您的 Sirius 视点规范项目
  • Eclipse 实例编号 3 推出表格号。2 将包含为您的模型实例实例化的图表。

您可以查看更多信息(比 Java 操作更好): https ://www.eclipse.org/sirius/doc/specifier/general/Writing_Queries.html#service_methods

另外请记住,如果您的服务方法需要根据您显示结果的 Sirius 节点而表现不同,则需要确保传递正确的上下文。我也可以提供帮助,请在评论中告诉我。但是,如果您的服务方法只检查一件事然后返回结果(即您的图表中只有一个传感器),那么您无需担心这一点。

于 2015-03-23T17:38:54.547 回答