2014-09-22 1 views
0

Что я хочу:Как Eclipse Sirius взаимодействует с другими системами?

У меня есть датчик с переменной isWorking(boolean) на реальной системе. Теперь я хочу, чтобы зритель показывал мне, работает ли датчик или нет. Например, узел датчика зеленый или красный.

Что у меня есть:

У меня есть программа softSPS на CoDeSys с переменной isWorking. С JEasyOPC я могу прочитать/перезаписать эту переменную и распечатать ее в консоли Eclipse. Я также создал модель Sirius для своей системы в среде выполнения eclipse, как и во всех обучаемых обучаемых Sirius, которые я нашел. Я видел, что я могу изменить цвет узла с Условным стилем.

У меня есть узел Sensor и переменная isWorking, но я не знаю, как их подключить.

Я нашел что-то о «внешнем действии Java» в документации Sirius. В Sirius Forum также есть пример (https://www.eclipse.org/forums/index.php/t/764175/), но я не знаю, работает ли он на мою проблему и как я могу использовать JEasyOPC с ними.

Другим способом, который я нашел, является привязка данных JFace, но я нашел учебник, который работает с моделью EMF, а не с диаграммой Сириуса (http://www.vogella.com/tutorials/EclipseDataBindingEMF/article.html). Я не хочу менять свою метамодель.

ответ

1

Я знаю Eclipse и Sirius. Если я правильно вас понимаю, у вас есть переменная, доступная для отображения узла с разным цветом в соответствии с значением переменной. Чтобы сделать это, вы должны заняться оживлением [1], что не является лучшей практикой, лучше всего будет уведомлять слушателя об изменении значения переменной.

После того, как ваша выбранная стратегия занята оживлением (с потоком, который читает в цикле вашу переменную) или слушателем, вам необходимо обновить вашу модель EMF, чтобы Сириус реагировал на изменение модели EMF и изменил ее цвет.

С наилучшими пожеланиями.

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

+0

Благодарим вас за ответ. Можете ли вы рассказать мне, где я могу подключиться к оживленному ожиданию или слушателю? Должен ли я интегрироваться во внешнее действие Java? Я действительно новый пользователь сириуса и затмения вообще, так что, может быть, вы можете объяснить более подробно. – rivella

1

Лучший способ сделать это, чтобы использовать механизм Sirius Java Services. Вы должны сначала добавить класс расширения в свою точку обзора в свой проект спецификации точки обзора. Вы щелкните правой кнопкой мыши на точке обзора и выберите New Extension/Java Extension. Там вы вводите имя класса, которое содержит метод, который вы хотите вызвать в элементе Sirius. Чтобы вызвать ваш метод, вы должны использовать либо элемент service:, либо выражение Acceleo, подобное этому [methodName()].

Вам необходимо убедиться, что ваш класс, на котором вы называете метод, доступен для использования Sirius. Это означает, что вам необходимо запустить среду 3-Eclipse следующим образом:

  • Eclipse environment no. 1, содержащий вашу модель и класс, который содержит ваш метод обслуживания
  • Eclipse экземпляр №. 2 запущен с №. 1, который содержит ваш проект спецификации точки зрения Sirius
  • Eclipse экземпляр №. 3 запущена форма №. 2, который будет содержать ваши диаграммы, созданные для экземпляра модели.

Вы можете посмотреть на это для получения дополнительной информации (лучше, чем Java действия): https://www.eclipse.org/sirius/doc/specifier/general/Writing_Queries.html#service_methods

Также, пожалуйста, имейте в виду, что если ваш метод обслуживания должен вести себя по-разному в зависимости от узла Sirius вы показывая результат, вам нужно убедиться, что вы передали правильный контекст. Я могу помочь с этим, просто дайте мне знать в комментарии. Однако, если ваш метод обслуживания проверяет только одно, а затем возвращает результат (т. Е. У вас есть только один датчик, который вы видите на диаграмме), вам не нужно об этом беспокоиться.

 Смежные вопросы

  • Нет связанных вопросов^_^