LabView+C#
-
- interested
- Сообщения: 6
- Зарегистрирован: 05 июн 2014, 01:58
- Версия LabVIEW: 2012
- Контактная информация:
LabView+C#
Вопрос заключается в следующем, можно ли создавать например кнопки на панеле, посредству языка C#?
-
- doctor
- Сообщения: 2211
- Зарегистрирован: 28 июн 2012, 09:32
- Награды: 3
- Версия LabVIEW: 2009..2020
- Откуда: город семи холмов
- Благодарил (а): 27 раз
- Поблагодарили: 27 раз
Re: LabView+C#
Никаких проблем: создаете визуальный компонент на C# под .NET и вставляете его в контейнер .NET, доступный через палитру контролов.
P.S. вопрос только в осознанной необходимости изобретать велосипед. Дело в том, что любой из стандартных контролов можно изменить практически до неузнаваемости штатными средствами. Если необходимо кардинально изменить свойства, то возможно создать свой контрол средствами Labview, через инструмент ControlX
P.S. вопрос только в осознанной необходимости изобретать велосипед. Дело в том, что любой из стандартных контролов можно изменить практически до неузнаваемости штатными средствами. Если необходимо кардинально изменить свойства, то возможно создать свой контрол средствами Labview, через инструмент ControlX
-
dadreamer
- professor
- Сообщения: 3926
- Зарегистрирован: 17 фев 2013, 16:33
- Награды: 4
- Версия LabVIEW: 2.5 — 2022
- Благодарил (а): 11 раз
- Поблагодарили: 127 раз
- Контактная информация:
Re: LabView+C#
klo, а вас именно кнопки интересуют? Чем не угодили кнопки в ? Есть же и системные, и классические, ничем не отличающиеся от тех, что в Windows. Требуется какой-то специфический функционал?
-
- interested
- Сообщения: 6
- Зарегистрирован: 05 июн 2014, 01:58
- Версия LabVIEW: 2012
- Контактная информация:
Re: LabView+C#
именно, у меня цель сделать некую динамическую систему, которая принимает формулу и по ней синтезирует уже готовую схему, поэтому интересуюсь возможно ли по средствам ЯП C# создавать любые элементы на панеле.
-
dadreamer
- professor
- Сообщения: 3926
- Зарегистрирован: 17 фев 2013, 16:33
- Награды: 4
- Версия LabVIEW: 2.5 — 2022
- Благодарил (а): 11 раз
- Поблагодарили: 127 раз
- Контактная информация:
Re: LabView+C#
Ну, если во что бы то ни стало нужно на C# создавать кнопки, то лучше обратиться на форум по C#, потому что предстоит непростая задача. Придется создать библиотеку классов (C# Class Library) и экспортировать оттуда все методы и свойства для создания-уничтожения кнопок и работы с ними. Для этого нужно иметь неплохой опыт работы с .NET и соответствующие знания. Если вас это не страшит, то посмотрите для начала пример LabVIEW 2012\examples\comm\dotnet\Calculator.llb . Там как раз используется библиотека, написанная на C#, для выполнения мат. операций, подробное описание и исходник можно посмотреть в контекстной справке , если навести курсор мыши на иконку .
-
- interested
- Сообщения: 6
- Зарегистрирован: 05 июн 2014, 01:58
- Версия LabVIEW: 2012
- Контактная информация:
Re: LabView+C#
c созданием библиотек С# нет проблем, не могу понять, как заставить создавать кнопки через мою dll библиотеку...
-
dadreamer
- professor
- Сообщения: 3926
- Зарегистрирован: 17 фев 2013, 16:33
- Награды: 4
- Версия LabVIEW: 2.5 — 2022
- Благодарил (а): 11 раз
- Поблагодарили: 127 раз
- Контактная информация:
Re: LabView+C#
Тут два варианта могут быть:
1) экспортируете кнопку как объект из библиотеки, после чего её можно вставить в с помощью контейнера на панели инструментов: Containers -> .NET Container. Потом ПКМ на контейнере -> Insert .NET Control -> Browse (в появившемся окне) -> выбираете свою DLL -> выбираете public control из списка;
2) динамически на блочной диаграмме создаете кнопку (в режиме Run-Time), для этого нужно, чтобы библиотека экспортировала конструктор объекта, деструктор и ряд методов/свойств, какие вам нужны.
Очевидно, что в первом случае кнопка будет на панели уже при запуске, во втором кнопку можно создать в любое время в процессе работы программы.
1) экспортируете кнопку как объект из библиотеки, после чего её можно вставить в с помощью контейнера на панели инструментов: Containers -> .NET Container. Потом ПКМ на контейнере -> Insert .NET Control -> Browse (в появившемся окне) -> выбираете свою DLL -> выбираете public control из списка;
2) динамически на блочной диаграмме создаете кнопку (в режиме Run-Time), для этого нужно, чтобы библиотека экспортировала конструктор объекта, деструктор и ряд методов/свойств, какие вам нужны.
Очевидно, что в первом случае кнопка будет на панели уже при запуске, во втором кнопку можно создать в любое время в процессе работы программы.
-
- VIP
- Сообщения: 1337
- Зарегистрирован: 03 фев 2010, 00:42
- Награды: 6
- Версия LabVIEW: 6.1 - 2024
- Откуда: Германия
- Благодарил (а): 1 раз
- Поблагодарили: 44 раза
- Контактная информация:
Re: LabView+C#
Вот тут я не совсем понял - нам ведь под эту кнопку .net контейнер на панели по-любому потребуется, или как?dadreamer писал(а): 2) динамически на блочной диаграмме создаете кнопку (в режиме Run-Time), для этого нужно, чтобы библиотека экспортировала конструктор объекта, деструктор и ряд методов/свойств, какие вам нужны.
... кнопку можно создать в любое время в процессе работы программы.
-
dadreamer
- professor
- Сообщения: 3926
- Зарегистрирован: 17 фев 2013, 16:33
- Награды: 4
- Версия LabVIEW: 2.5 — 2022
- Благодарил (а): 11 раз
- Поблагодарили: 127 раз
- Контактная информация:
Re: LabView+C#
Здесь от реализации контрола дело зависит. Некоторые нестандартные контролы, особенно какие-нибудь shareware, могут быть отображены без контейнера, а например компоненты System.Windows.Forms отображаются только на форме, без формы они будут не видны. В принципе, можно назначить фронтальную панель в качестве родителя (Parent) для стандартных компонентов, но похоже нужно писать для этого обёртку или как-то извращаться (сходу не нашёл способа сделать это). А если создать предварительно форму, то вполне всё работает: Для красоты можно назначить лицевую панель обладателем (owner) формы, для этого нужна DLL отсюда:AndreyDmitriev писал(а):Вот тут я не совсем понял - нам ведь под эту кнопку .net контейнер на панели по-любому потребуется, или как?
-
- interested
- Сообщения: 6
- Зарегистрирован: 05 июн 2014, 01:58
- Версия LabVIEW: 2012
- Контактная информация:
Re: LabView+C#
это конечно все круто, очень даже, спасибо за то что уделили время, но все же, я хотел бы найти способ создавать элементы напрямую на панеле , через класс на C# в котором например указаны параметры(название, положение и тд) и уже по этим параметрам элементы располагались на панеле
-
dadreamer
- professor
- Сообщения: 3926
- Зарегистрирован: 17 фев 2013, 16:33
- Награды: 4
- Версия LabVIEW: 2.5 — 2022
- Благодарил (а): 11 раз
- Поблагодарили: 127 раз
- Контактная информация:
Re: LabView+C#
предоставляет ActiveX интерфейс, которым можно пользоваться из других сред. Посмотрите статью http://www.ni.com/white-paper/5719/en/ , вот тут есть пример на VB, а тут на Матлабе, думаю, на C# сможете сделать.
-
dadreamer
- professor
- Сообщения: 3926
- Зарегистрирован: 17 фев 2013, 16:33
- Награды: 4
- Версия LabVIEW: 2.5 — 2022
- Благодарил (а): 11 раз
- Поблагодарили: 127 раз
- Контактная информация:
Re: LabView+C#
Совершенно случайно наткнулся на очень элегантный способ решения этой проблемы. Сам тред вот, а вся соль в том, что нужно на панели разместить сперва GroupBox стандартным способом: кинуть на FP .NET-контейнер и выбрать в нём System.Windows.Forms.GroupBox. А на диаграмме требуется создать объект System.Windows.Forms.BindingContext, который и будет управлять коллекцией контролов. После этого для GroupBox'а указывается созданный контекст и в GroupBox можно добавлять контролы.dadreamer писал(а):компоненты System.Windows.Forms отображаются только на форме, без формы они будут не видны
- Вложения
-
- NET_Button-2.vi
- lv2011
- (8.81 КБ) 339 скачиваний
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
- 0 Ответы
- 1894 Просмотры
-
Последнее сообщение Anastasia
-
- 3 Ответы
- 2065 Просмотры
-
Последнее сообщение PozhiloyGoblin
-
- 0 Ответы
- 343 Просмотры
-
Последнее сообщение maxim_MA
-
- 23 Ответы
- 2395 Просмотры
-
Последнее сообщение dadreamer
-
- 2 Ответы
- 390 Просмотры
-
Последнее сообщение ujin1