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

Простейшие вопросы в области инженерной разработки

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

Postby Anton.M on 14 Sep 2017, 20:26

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

Столкнулся с интересной особенностью Labview, а именно открытие внешнего VI при вызове в незапущенном состоянии. А именно - есть стартовое окно StartTele.vi, в котором задаются параметры работы программы через глобальные переменные, а также запускается главное окно Main 1_5.vi.
FImor1Z0Rbc[1].jpg
StartTele


При запуске StartTele.vi и нажатии на клавишу OK - глобальные переменные записываются, и открывается главное окно. Но открывается оно в незапущенном состоянии!
При этом, в главном окне такая же конструкция вызывает LogBat.vi, но при этом оно открывается запущенным...
wjf7v5P4z6U[1].jpg
Main 1_5.vi


Настройки в окнах Main 1_5.vi и LogBat.vi - идентичны. Но запуска главного окна так и не происходит, приходится вручную нажимать на "стрелку"...
jD8OXkIhXig[1].jpg
VI Properties


Подскажите пожалуйста, в чем проблема? Заранее спасибо!
Anton.M
beginner
beginner
 
Posts: 12
Joined: 14 Oct 2016, 14:18
LabVIEW Version: 14
Karma: 0

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

Postby Kosist on 14 Sep 2017, 22:41

В первом случае у Вас есть временная задержка в 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: , а скорее всего баг в коде...
Мы делили апельсин - много наших полегло...
User avatar
Kosist
leader
leader
 
Posts: 783
Joined: 21 Feb 2011, 23:44
Location: СумГУ
Medals: 2
Activity (1) Gold (1)
LabVIEW Version: 2013-2017
Karma: 236
CLAD I/O VIP students

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

Postby Anton.M on 18 Sep 2017, 19:41

Задержек никаких нет, как и ошибок - простой VI.
Пробовал и через Case Structure, и через Event Structure... Не работало, а вот ваш совет помог запустить - спасибо!

Kosist wrote:Я обычно делаю по-другому; открывая виайки динамически при помощи Invoke Node: FP.Open; а затем RunVI - http://digital.ni.com/public.nsf/allkb/ ... 480069E570. Попробуйте, может так заработает...
Anton.M
beginner
beginner
 
Posts: 12
Joined: 14 Oct 2016, 14:18
LabVIEW Version: 14
Karma: 0

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

Postby dadreamer on 18 Sep 2017, 20:59

Anton.M wrote:Задержек никаких нет

А зря - задержка должна быть, чтобы ЦП не нагружался на 100%, если вы вызываете SubVI так, как показано на рисунке. Ну, или вызывайте в Event-структуре, как уже советовал Kosist.

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

Кстати, я проверил сейчас. Даже без задержки SubVI вызывается строго один раз. Так что это не причина того странного поведения, что описано выше. Это больше похоже на баг, причём соль в том, что при вызове FP.Open подприбор не должен открываться в запущенном состоянии - это в справке написано:
LV Help wrote: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 лишь отобразил его.
User avatar
dadreamer
doctor
doctor
 
Posts: 2897
Joined: 17 Feb 2013, 16:33
Medals: 4
Activity (1) Professionalism (1) Автор (2)
LabVIEW Version: 2.5 — 2017
Karma: 709
I/O VIP vision internet

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

Postby Blackman on 18 Sep 2017, 23:13

Дополнительно к последнему сообщению:
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.
Blackman
leader
leader
 
Posts: 685
Joined: 17 Jan 2016, 15:02
Medals: 1
Activity (1)
LabVIEW Version: 6.1,8.5,20
Karma: 171


Return to Для чайников

Who is online

Users browsing this forum: No registered users and 10 guests

cron