Как Eclipse Sirius может взаимодействовать с другими системами?

Что я хочу:

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

Что я имею:

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

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

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

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

2 ответа

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

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

С уважением.

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

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

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

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

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

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

Другие вопросы по тегам