Доброго времени суток. У меня такой вопрос, есть ли у кого ни будь документация по созданию и по следующему внедрению ActiveX в masterSCADA. Т.е. начиная с того, что рисуем модель и заканчивая тем что настраиваем ее уже в SCADA.
Вид для печати
Доброго времени суток. У меня такой вопрос, есть ли у кого ни будь документация по созданию и по следующему внедрению ActiveX в masterSCADA. Т.е. начиная с того, что рисуем модель и заканчивая тем что настраиваем ее уже в SCADA.
Документация с примерами по созданию AcitveX и ФБ приложена к MasterSCADA - в разделе "документация" - "Разработка драйверов и ФБ".
Спасибо. Еще такой вопрос (пока сильно сам не успел вникнуть), эти элементы только на C# можно писать или С++ тоже подойдет ?
Лучше на C#. В будущем ФБ на С++ поддерживаться не будут.
Спасибо. Учту :)
ActiveX под MasterSCADA писал. Все компоненты довел до конца.
В документации все путево описано, читайте.
Вопросов было много конечно. Можете их тут поискать (апрель-июнь 2012).
В конце концов появилась мысль, что кое что из того что я реализовал как ActiveX было лучше сделать как Функциональный Блок MasterSCADA.
Если что спрашивайте, чем могу, помогу.
А у вас сохранился исходник какого ни будь компонента ? В качестве шаблона чтоб можно было использовать. С документацией я вроде как немного разобрался, но на практике немного пока не сходится с написанным.
Пробую в VS 2005 на C#
Исходники своих компонентов у меня сохранились, но показать их мне не позволяют некоторые соглашения.
Но совет дам.
В папкележит решение с простыми примерами. Сам я в начале работы опирался на один из этих примеров.Цитата:
%MasterSCADA%\API\MasterSCADA\Examples
Как основу для компонента с динамизацией свойств советую Examples.UserControls.PropertiesDynamization
Спасибо! :) Посмотрю, как появятся вопросы, отпишусь ))
Кст, есть вопрос :) В документации где то промелькнуло, что лучше использовать 2005 VS, обязательно ли это ? Или можно и 2010 без проблем использовать ?
И еще такой вопрос. По примеру описанному в документации начинаю делать все как написано, но возникает на начальном этапе проблема:
Вложение 7337
Что означают эти восклицательные знаки ? Я думаю что, что то тут не так )
Я использую 2010. Проблема заключается в том что файл проекта немного отличается у версий 2005 и 2010. Но студия при первом запуске предлагает сконвертировать проект. Это занимает несколько секунд.
Восклицательные знаки, скорее всего, означают что студия не знает где искать эти библиотеки. Нужно ей показать. Они лежат в корневом каталоге MasterSCADA.
я так и подумал ... удалил из списка, снова добавил, и та же ерунда ... но у меня 2005 VS. Возможно проблема в этом :) Завтра переставлю на 2010, отпишусь :)Цитата:
Удалите ее и добавьте снова.
Установил наконец то VS 2010, проблема с подключением dll ушла. Но появилась новая ... Начиню делать все как написано, все оформлено 1 в 1 как в примере, но функция "InitializeComponent();" отказывается восприниматься.
При добавлении dll вылазит такое сообщение:
Вложение 7347
Может в этом причина?
Еще, когда открываю пример от разработчиков, то по началу все выглядит нормально, но если попытаться откомплировать проект, то появляются ошибки что не найдены эти dll.
Нужно в настройках проекта на вкладке Application выбрать "Target framework:" = ".Net Framework 4"
В приложении исправленная версия примеров под NetFramework 4.
Если поставить NET Framework 4 вместо 3.5 в настройках проекта, то ошибки с путями к dll уходят. Но пишет ошибку на счет функции "InitializeComponent" :
Error 1 The name 'InitializeComponent' does not exist in the current context F:\Denis_files\Denis\VS_project\Act iveX_project\Proba_3\Example\Exampl e\MasterSCADAAutomation\MyActiveX.c s 17 13 Example
Хотя все сделал по примеру, все dll и библиотеки в using прописаны как в примере.
Сверьтесь с примерами которые мы приложили в предыдущем сообщении.
Если не поможет - приложите ваш проект.
проверил ваш пример, когда пытаюсь запустить "Build Examples" вылазят такие ошибки:
Цитата:
Error 1 Predefined type 'Microsoft.CSharp.RuntimeBinder.Binder' is not defined or imported Examples
Warning 2 The using directive for 'System.ComponentModel' appeared previously in this namespace D:\Program Files\InSAT\MasterSCADA\API\MasterSCADA\Examples\E xamples\VFB\FormOpening\FormOpeningControl.cs 8 7 Examples
Error 3 One or more types required to compile a dynamic expression cannot be found. Are you missing references to Microsoft.CSharp.dll and System.Core.dll? D:\Program Files\InSAT\MasterSCADA\API\MasterSCADA\Examples\E xamples\FB\WorkWithOperator\WorkWithOperatorExampl e.cs 31 14 Examples
Error 4 One or more types required to compile a dynamic expression cannot be found. Are you missing references to Microsoft.CSharp.dll and System.Core.dll? D:\Program Files\InSAT\MasterSCADA\API\MasterSCADA\Examples\E xamples\FB\WorkWithOperator\WorkWithOperatorExampl e.cs 31 15 Examples
Вот мой проект (точнее его начало). Пока что одна ошибка. Не знает что такое "InitializeComponent();"
Вложение 7360
---------
нашел проблему, проект не правильно создал :) Исправляю ))
Если выполнить пункт
Add- User Control
то должен создаться вспомогательный файл ControlName.Designer.cs
В вашем проекте у MyActiveX.cs такого файла нет. Возможно вы создавали новый класс не как "User Control". Попробуйте удалить его и создать снова.
да да :) я уже понял, все сделал ) Уже получилось вставить в SCADA ))
Ну слава богу с созданием картинки в качестве ActiveX для SCADA я разобрался )) Теперь появилось несколько практических вопросов. Например такой: когда в SCADA выбираю свой компонент, то передвигать его мышкой не получается. Правильно ли я понял, что нужно описывать вручную событие MouseMove для формы в VS ? Или как то проще это делается ?
Должен перемещаться.
Попробуйте выделить его не на самой мнемосхеме, а в дереве элементом мнемосхемы. Вокруг контрола должна появится граница, после этого уже начинайте перемещать его.
так тоже пробовал, не хочет. Даже выделяться не хочет. только через дерево.
p.s. добавляю его в демонстрационный проект "Бак"
p.s.s. исходным файлом ActiveX является только dll или или еще какие то файлы ? Я в SCADA закинул только dll
Вот тут то что просили. Только в проект SCADA не стал добавлять свой компонент. В принципе любой другой может подойти, даже пустой )
Проект
У нас нормально перетаскивается.
У вас в органайзере ActiveX не стоит галочка "Редактируемый в схеме"? Снимите ее
хех) вот я балда :) Спасибо! ))
Назрел новый вопрос. Есть ли какие ни буль статьи, по графике на C#. Суть такая, в SCADA есть Объемные элементы, мне нужно сделать что то подобное, только свое )) Смысл в том что, при масштабировании эти объекты не изменяют свое качество, следовательно они прорисовываются в реальном времени. Было бы хорошо, если бы был пример на С#.
Нужно для создания более качественной модели.
У нас такого примера нет.
Поищите в интернете работу с графикой на .Net, статьи по WPF.
хм... пока выглядит сложновато ) А есть пример, с использованием анимации ? В том же объемном элементе "Цилиндр" можно наблюдать за уровнем. Уровень зависит от входных данных. Нужно что то подобное.
Это не совсем анимация - это простая динамизация.
На вход динамизации приходит значение, а контрол меняет что-то на рисунке.
Начал изучать графику на C#. Нашел подходящий пример, но суть не в этом. Для проверки нужно изменять параметр. В примерах в SCADA есть такой пример:
[DispId(1),
DisplayName("Текст")]
public string TextValue
{
get { return _textBox.Text; }
set { _textBox.Text = value; }
}
как я понял этот фрагмент и делает то что нужно.
А как описывается параметр простой переменной ? Или например значение Value у какого ни будь элемента типа trackbar
Value - это значение которое передает MasterSCADA в контрол.
Вы можете в секции set { _textBox.Text = value; } выполнить нужный вам набор действий. В данном примере присваивается значение текстовому полю, а вы можете изменить заполнение trackbar.
я пробовал так:
set { trackBar.Value = value; }
пишет: Cannot implicitly convert type 'string' to 'int'
Вы объявили переменную как строковую, а пытаетесь присвоить ее числовому параметру.
Точно ) Еще как я понял, данный пример должен добавлять в Свойства объекта в SCADA, параметр, который можно было бы изменять, правильно ?
Да, в свойства контрола тоже должно свойство добавится.
Тогда у меня вышла какая то проблема. Dll скомпилировалась без ошибок, но Свойство не появилось.
А во входах и выходах динамизации оно появилось?