Вертикальное меню

Темы связанные с инженерными разработками, но не подходящие в другие ветки форума
Ответить
Andry
user
user
Сообщения: 96
Зарегистрирован: 14 июн 2013, 12:50
Версия LabVIEW: 2012
Контактная информация:

Вертикальное меню

Сообщение Andry »

Доброго времени суток,уважаемые форумчане!
Есть такая проблемка.Из созданного меню не могу вытянуть параметры для последующего управления.
Т.е. меню есть ,а как понять ,что я кликаю не могу.Перепробовал много способов,ничего не получается.
Буду признателен за любую помощь.
Вложения
Вертикальное меню.zip
(860.73 КБ) 219 скачиваний
Аватара пользователя
dadreamer

Activity Professionalism Автор
professor
professor
Сообщения: 3926
Зарегистрирован: 17 фев 2013, 16:33
Награды: 4
Версия LabVIEW: 2.5 — 2022
Благодарил (а): 11 раз
Поблагодарили: 127 раз
Контактная информация:

Re: Вертикальное меню

Сообщение dadreamer »

Вам нужно зарегистрировать .NET callback, чтобы получить доступ к событиям .NET объекта. Регистрация выполняется через инструмент Connectivity -> .NET -> Register Event Callback. На вход event callback refnum заводите Callback Ref, на event source - Container Ref (это выходы Create Menu.vi), а далее - по мануалу из справки. Если никогда с callback'ами не работали, то сперва прочтите http://zone.ni.com/reference/en-XX/help ... _ax_evnts/ и изучите примеры C:\Program Files (x86)\National Instruments\LabVIEW 2012\examples\comm\dotnet\Events.llb.
Andry
user
user
Сообщения: 96
Зарегистрирован: 14 июн 2013, 12:50
Версия LabVIEW: 2012
Контактная информация:

Re: Вертикальное меню

Сообщение Andry »

Спасибо ,за ответ!Да,действительно не работал калбеком,буду разбираться)
Andry
user
user
Сообщения: 96
Зарегистрирован: 14 июн 2013, 12:50
Версия LabVIEW: 2012
Контактная информация:

Re: Вертикальное меню

Сообщение Andry »

схема.JPG
Не совсем получается,сделал так.Пишет ошибки.Объект,как я понял уже зарегистрирован ?Помогите,пожалуйста)
Аватара пользователя
dadreamer

Activity Professionalism Автор
professor
professor
Сообщения: 3926
Зарегистрирован: 17 фев 2013, 16:33
Награды: 4
Версия LabVIEW: 2.5 — 2022
Благодарил (а): 11 раз
Поблагодарили: 127 раз
Контактная информация:

Re: Вертикальное меню

Сообщение dadreamer »

Andry, невнимательно читали мануал... Сходу вижу, что не выбран Event: нужно нажать ПКМ на инструменте регистрации (Event) и выбрать событие, которое вы хотите отследить. Также на VI Ref заведёна не та ссылка: обработчик для callback'а вам нужно создать вручную - нажимаете ПКМ на инструменте регистрации (VI Ref) -> Create Callback VI. Второе действие делается только после первого. User Parameter определяете сами, что хотите передать в функцию, то и заводите на этот вход. Можно и ничего не заводить.
Для лучшего понимания сабжа рекомендую воссоздать с нуля один из примеров от NI.
Andry
user
user
Сообщения: 96
Зарегистрирован: 14 июн 2013, 12:50
Версия LabVIEW: 2012
Контактная информация:

Re: Вертикальное меню

Сообщение Andry »

Буду пробовать.Но в примера созданы дополнительные vi и зарегистрированы.Ладно ,пока не буду морочить голову,буду пробовать,если не получится,обращусь ,за помощью.
Спасибо за подсказки)
Аватара пользователя
dadreamer

Activity Professionalism Автор
professor
professor
Сообщения: 3926
Зарегистрирован: 17 фев 2013, 16:33
Награды: 4
Версия LabVIEW: 2.5 — 2022
Благодарил (а): 11 раз
Поблагодарили: 127 раз
Контактная информация:

Re: Вертикальное меню

Сообщение dadreamer »

Andry писал(а):Но в примера созданы дополнительные vi и зарегистрированы.
Эти :vi: создаются вручную и являются callback обработчиками событий. Я уже писал выше, как создать callback. Вот краткий разбор примера Passing Data to a .NET Event Callback.vi.
2015-09-11_12-51-37.jpg
2015-09-11_13-03-51.jpg
Суть в том, что когда крутим ручку на Knob'е, индикатор (Meter) обновляется и показывает то же значение, что мы выставили на Knob'е. Обновление индикатора происходит в callback :vi: Callback - EventHappened.vi. При регистрации callback'а мы задаём User Parameter - ссылку на индикатор. Затем ждём в Event Structure событие поворота ручки. Как только возникает это событие, записываем значение ручки Knob в параметр .NET объекта DataWatcher, срабатывает наш callback Callback - EventHappened.vi и в нём меняется значение индикатора (Meter).

Если разобраться, то ничего сложного нет. В случае, если нужно из callback'а вернуть в основной :vi: какие-то параметры, то удобнее при регистрации User Parameter делать в виде User Event или очереди (например, строкового типа) и в самом callback'е писать какие-нибудь параметры, а в основном :vi: читать их.
Ответить

Вернуться в «Общие»