Открытие внешнего VI из программы

Простейшие вопросы в области инженерной разработки
Ответить
Anton.M
beginner
beginner
Сообщения: 14
Зарегистрирован: 14 окт 2016, 14:18
Версия LabVIEW: 14
Контактная информация:

Открытие внешнего VI из программы

Сообщение Anton.M »

Всем Доброго Вечера!

Столкнулся с интересной особенностью Labview, а именно открытие внешнего VI при вызове в незапущенном состоянии. А именно - есть стартовое окно StartTele.vi, в котором задаются параметры работы программы через глобальные переменные, а также запускается главное окно Main 1_5.vi.
StartTele
StartTele
При запуске StartTele.vi и нажатии на клавишу OK - глобальные переменные записываются, и открывается главное окно. Но открывается оно в незапущенном состоянии!
При этом, в главном окне такая же конструкция вызывает LogBat.vi, но при этом оно открывается запущенным...
Main 1_5.vi
Main 1_5.vi
Настройки в окнах Main 1_5.vi и LogBat.vi - идентичны. Но запуска главного окна так и не происходит, приходится вручную нажимать на "стрелку"...
VI Properties
VI Properties
Подскажите пожалуйста, в чем проблема? Заранее спасибо!
Аватара пользователя
Kosist

Activity Gold
expert
expert
Сообщения: 1236
Зарегистрирован: 21 фев 2011, 23:44
Награды: 2
Версия LabVIEW: 2013-2020
Благодарил (а): 23 раза
Поблагодарили: 30 раз
Контактная информация:

Re: Открытие внешнего VI из программы

Сообщение Kosist »

В первом случае у Вас есть временная задержка в While Loop, в False страницах Case Structure? Если нет, то цикл крутится со страшной скоростью, и я не уверен сколько раз вызовется функция открытия главной виайки, когда кнопка OK = True.
Попробуйте изменить открытие через Event Structure: повесьте на событие Value Change кнопки OK открытие главной виайки.

Я обычно делаю по-другому; открывая виайки динамически при помощи Invoke Node: FP.Open; а затем RunVI - http://digital.ni.com/public.nsf/allkb/ ... 480069E570. Попробуйте, может так заработает...

P.S. Это не особенность :labview: , а скорее всего баг в коде...
Мы делили апельсин - много наших полегло...
Anton.M
beginner
beginner
Сообщения: 14
Зарегистрирован: 14 окт 2016, 14:18
Версия LabVIEW: 14
Контактная информация:

Re: Открытие внешнего VI из программы

Сообщение Anton.M »

Задержек никаких нет, как и ошибок - простой VI.
Пробовал и через Case Structure, и через Event Structure... Не работало, а вот ваш совет помог запустить - спасибо!
Kosist писал(а):Я обычно делаю по-другому; открывая виайки динамически при помощи Invoke Node: FP.Open; а затем RunVI - http://digital.ni.com/public.nsf/allkb/ ... 480069E570. Попробуйте, может так заработает...
Аватара пользователя
dadreamer

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

Re: Открытие внешнего VI из программы

Сообщение dadreamer »

Anton.M писал(а):Задержек никаких нет
А зря - задержка должна быть, чтобы ЦП не нагружался на 100%, если вы вызываете SubVI так, как показано на рисунке. Ну, или вызывайте в Event-структуре, как уже советовал Kosist.
Kosist писал(а):В первом случае у Вас есть временная задержка в While Loop, в False страницах Case Structure? Если нет, то цикл крутится со страшной скоростью, и я не уверен сколько раз вызовется функция открытия главной виайки, когда кнопка OK = True.
Кстати, я проверил сейчас. Даже без задержки SubVI вызывается строго один раз. Так что это не причина того странного поведения, что описано выше. Это больше похоже на баг, причём соль в том, что при вызове FP.Open подприбор не должен открываться в запущенном состоянии - это в справке написано:
LV Help писал(а):Run when opened — Enables a VI to enter run mode and run automatically when you open it. You also can use the Run When Opened property to programmatically run a VI when it opens. To edit a VI set to run when opened, place it on the block diagram of a new, blank VI and double-click it.
Note: LabVIEW ignores this option in the following scenarios:

When you use the VI Server to load the VI.
Use the Run VI method to run a VI you use the VI Server to load.
И мне не удалось добиться, чтобы у меня SubVI открылся в таком виде (пробовал в LV 2017 и 8.0).

Хотя, возможно, что у автора SubVI просто уже был запущен ранее и скрыт, а повторный вызов FP.Open лишь отобразил его.
Blackman

Activity
leader
leader
Сообщения: 932
Зарегистрирован: 17 янв 2016, 15:02
Награды: 1
Версия LabVIEW: 6.1,8.5,20

Re: Открытие внешнего VI из программы

Сообщение Blackman »

Дополнительно к последнему сообщению:
Open VI Reference Function
Miscellaneous Details
If you set the Execution:Run When Opened, Execution:Show Front Panel On Load, or Execution:Show Front Panel On Call properties or the corresponding options in the VI Properties dialog box of the target VI, LabVIEW ignores the settings.
Ответить
  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Для чайников»