Всем Доброго Вечера!
Столкнулся с интересной особенностью Labview, а именно открытие внешнего VI при вызове в незапущенном состоянии. А именно - есть стартовое окно StartTele.vi, в котором задаются параметры работы программы через глобальные переменные, а также запускается главное окно Main 1_5.vi.
При запуске StartTele.vi и нажатии на клавишу OK - глобальные переменные записываются, и открывается главное окно. Но открывается оно в незапущенном состоянии!
При этом, в главном окне такая же конструкция вызывает LogBat.vi, но при этом оно открывается запущенным...
Настройки в окнах Main 1_5.vi и LogBat.vi - идентичны. Но запуска главного окна так и не происходит, приходится вручную нажимать на "стрелку"...
Подскажите пожалуйста, в чем проблема? Заранее спасибо!
Открытие внешнего VI из программы
-
Kosist
- expert
- Сообщения: 1236
- Зарегистрирован: 21 фев 2011, 23:44
- Награды: 2
- Версия LabVIEW: 2013-2020
- Благодарил (а): 23 раза
- Поблагодарили: 30 раз
- Контактная информация:
Re: Открытие внешнего VI из программы
В первом случае у Вас есть временная задержка в 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. Это не особенность , а скорее всего баг в коде...
Попробуйте изменить открытие через Event Structure: повесьте на событие Value Change кнопки OK открытие главной виайки.
Я обычно делаю по-другому; открывая виайки динамически при помощи Invoke Node: FP.Open; а затем RunVI - http://digital.ni.com/public.nsf/allkb/ ... 480069E570. Попробуйте, может так заработает...
P.S. Это не особенность , а скорее всего баг в коде...
Мы делили апельсин - много наших полегло...
-
- beginner
- Сообщения: 14
- Зарегистрирован: 14 окт 2016, 14:18
- Версия LabVIEW: 14
- Контактная информация:
Re: Открытие внешнего VI из программы
Задержек никаких нет, как и ошибок - простой VI.
Пробовал и через Case Structure, и через Event Structure... Не работало, а вот ваш совет помог запустить - спасибо!
Пробовал и через Case Structure, и через Event Structure... Не работало, а вот ваш совет помог запустить - спасибо!
Kosist писал(а):Я обычно делаю по-другому; открывая виайки динамически при помощи Invoke Node: FP.Open; а затем RunVI - http://digital.ni.com/public.nsf/allkb/ ... 480069E570. Попробуйте, может так заработает...
-
dadreamer
- professor
- Сообщения: 3926
- Зарегистрирован: 17 фев 2013, 16:33
- Награды: 4
- Версия LabVIEW: 2.5 — 2022
- Благодарил (а): 11 раз
- Поблагодарили: 127 раз
- Контактная информация:
Re: Открытие внешнего VI из программы
А зря - задержка должна быть, чтобы ЦП не нагружался на 100%, если вы вызываете SubVI так, как показано на рисунке. Ну, или вызывайте в Event-структуре, как уже советовал Kosist.Anton.M писал(а):Задержек никаких нет
Кстати, я проверил сейчас. Даже без задержки SubVI вызывается строго один раз. Так что это не причина того странного поведения, что описано выше. Это больше похоже на баг, причём соль в том, что при вызове FP.Open подприбор не должен открываться в запущенном состоянии - это в справке написано:Kosist писал(а):В первом случае у Вас есть временная задержка в While Loop, в False страницах Case Structure? Если нет, то цикл крутится со страшной скоростью, и я не уверен сколько раз вызовется функция открытия главной виайки, когда кнопка OK = True.
И мне не удалось добиться, чтобы у меня SubVI открылся в таком виде (пробовал в LV 2017 и 8.0).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 просто уже был запущен ранее и скрыт, а повторный вызов FP.Open лишь отобразил его.
-
- leader
- Сообщения: 932
- Зарегистрирован: 17 янв 2016, 15:02
- Награды: 1
- Версия LabVIEW: 6.1,8.5,20
Re: Открытие внешнего VI из программы
Дополнительно к последнему сообщению:
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.
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.
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение