Перехват VI в момент останова с полным выходом?

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

Re: Перехват VI в момент останова с полным выходом?

Postby Select on 01 Sep 2018, 13:42

Да, пример позаимствовал на форуме Ni, у меня под 14 он нормально открывается.
Вариант не работает, запускается окно консоли, но команда не прописывает аргументы, в твоем примере .
В моем случае "cmd.exe /C shutdown -s 0" :dntknw:
LabView 14
User avatar
Select
user
user
 
Posts: 95
Joined: 12 Dec 2017, 23:56
Location: Врата надежды.
LabVIEW Version: 14
Karma: 0

Re: Перехват VI в момент останова с полным выходом?

Postby Select on 01 Sep 2018, 13:50

Так cmd.exe /C shutdown -s 0 работает
Благодарю все получилось :drink:
LabView 14
User avatar
Select
user
user
 
Posts: 95
Joined: 12 Dec 2017, 23:56
Location: Врата надежды.
LabVIEW Version: 14
Karma: 0

Re: Перехват VI в момент останова с полным выходом?

Postby Kosist on 01 Sep 2018, 21:23

Select wrote:На мой взгляд многовато телодвижений, как я понимаю создавать в теле дополнительностью Node процедуру ради отката в блок диаграмму....

Это не ради отката в блок диаграмму, а ради запуска виайки программно. И этим убиваете двух зайцев - виайка запускается при вызове, и нету странных проблем с открытием блок-диаграммы для просмотра/изменения кода.
А телодвижений минимим, + 20 секунд больше кодинга; сбросить на блок-диаграмму два инвоук нода...
Select wrote:И вообще в дальнейшем такая логика выхода exe была пересмотрена в пользу полного SHUTDOWN выхода с выключением PC. В противном случае клиент получает доступ к системе. Оно мне надо?

А вот тут я немного не понял - остановить программу можно и без SHUTDOWN функции. Если все прописано правильно, то программу можно остановить без такого "хардкора", поверьте. Может, многие и не согласятся, но для меня так все и есть - SHUTDOWN сразу убивает приложение; но ведь его можно остановить и нормально. Остановить все параллельные циклы, процессы, лаунчеры - эффект будет тот же.
А доступ к системе обеспечивается настройками системы и ограничиванием прав пользователя, но уж никак не исполняемым :labview: приложением. Если есть возможность у пользователя вызвать консоль, то тут уж ничего не поделаешь, он может делать с системой все, что угодно. Но это такое :dntknw:

Я ведь это к чему - Вы написали, что это "грабли :labview: ", а я считаю, что это "грабли" кода. Так как "со стороны" :labview: все работает так, как должно. А исправить это можно легко и просто. :wink:
Мы делили апельсин - много наших полегло...
User avatar
Kosist
leader
leader
 
Posts: 883
Joined: 21 Feb 2011, 23:44
Medals: 2
Activity (1) Gold (1)
LabVIEW Version: 2013-2017
Karma: 246
CLAD I/O VIP students

Re: Перехват VI в момент останова с полным выходом?

Postby Select on 03 Sep 2018, 13:25

Kosist,
Мухи отдельно, котлеты отдельно, прежде всего я не заинтересован в доступе клиентов к OS, по завершении работы exe. представтье себе как Вы выключаете свой автомобиль, а на медийной панели, вместо потухшего экрана вдруг выпадает окно с виндой :haha:
Такой метод сегодня вполне себя зарекомендовал у многих производителей измерительной аппараиуры, автомобилях, медприборах и т.п. Не понимаю, в чем у Вас возникает с этим проблема? HDD не посыпется, кеш буфер очищается... Ругани OS при последующем запуске нет.
Впрочем для для администрирования девайса я все же подключусь клавиатурой к таблетке и задавлю exe процесс диспетчером.
Что касается изначально поставленного вопроса перехвата vi в момент запуска, в которой закрыто меню :labview: , а так же в прессете запуск происходит в момент загрузки, выход сопровождается процедурой полного выхода с выключением PC, т.е. эта виайка в таком виде не будет даже доступна для ее компиляции в exe или прочих нужд для работы с диаграммой, мало ли вдруг увидел косяк и решил поправить...
Во многих средах разработки всегда присутствует процедура удержания сочетания зарезервированных клавиш во время загрузки для просмотра или правки кода под редактором, конструктором и т.п.
В хелпах и настройках :labview: такого не обнаружил, народ здесь советует для обхода строить такую процедуру и вешать ее на первичный цикл. :dntknw:
Я с этим справляюсь, но это жутко неудобно, каждый раз сохранять на стороне мастер vi.
LabView 14
User avatar
Select
user
user
 
Posts: 95
Joined: 12 Dec 2017, 23:56
Location: Врата надежды.
LabVIEW Version: 14
Karma: 0

Re: Перехват VI в момент останова с полным выходом?

Postby Artem.spb on 03 Sep 2018, 13:54

Может, я что-то не так понял, на всякий случай ещё раз бегло пробежал по теме. И всё равно не понял "недовольства".

Во многих средах разработки всегда присутствует процедура удержания сочетания зарезервированных клавиш во время загрузки для просмотра или правки кода под редактором, конструктором и т.п.

Странная мысль искать исходник там, где его нет. Если программа скомпилирована (exe), то обратно исходники не вернуть. Так что никакие сочетания клавиш не помогут.
А что до "лишних телодвижений". Так это нормально, когда исходник являет собой исходник, а не бросается работать сразу после открытия. При этом в скомпилированном приложении всё как раз запускается сразу (или в порядке, заданном исходниками). И, по-моему, это нормально.
Есть проект, в котором куча :vi: , которые можно править как угодно.
после компиляции прописывается условный main, который запускается первым при запуске приложения. Этот main открывает/закрывает окна и пр.
Ну а выключение системы - дело третье. Опять же очень странно, если исходник ( :vi: ) бросается выключить систему при попытке его (:vi:) закрыть. Для этого должна быть прописана логика, исполняемая только в exe.
Вы же не ставите на кажждый клиентский комп отдельную копию :labview: , из-под которой будет открываться :vi: с запуском при открытии?
Artem.spb
expert
expert
 
Posts: 1401
Joined: 31 Jul 2011, 23:05
Medals: 2
Activity (1) Автор (1)
LabVIEW Version: 12,14,15
Karma: 239
CLD hardware I/O VIP freelance

Re: Перехват VI в момент останова с полным выходом?

Postby Select on 03 Sep 2018, 15:55

Artem.spb,
Есть проект, в котором куча :vi: , которые можно править как угодно.

прикрепляю виайку для експерементов, которую я без понятия как открыть в блок диаграмме.
С момента установки там финального кода в случае случайного закрытия, без компиляции в exe, ее сразу можно выкинуть в мусор? То что и случилось у меня. Вся история в начале поста, повторять нет смысла.
Если кто либо откроет мне эту vi, плз покажите здесь, и поделиться бы опытом. В противном случае, оставлять на стороне, как я это описал.
!Чуть не забыл, нажатие на Stop выгрузит систему :thank:
Attachments
Hak.vi
(286.72 KiB) Downloaded 16 times
LabView 14
User avatar
Select
user
user
 
Posts: 95
Joined: 12 Dec 2017, 23:56
Location: Врата надежды.
LabVIEW Version: 14
Karma: 0

Re: Перехват VI в момент останова с полным выходом?

Postby Blackman on 03 Sep 2018, 16:14

Впрочем для для администрирования девайса я все же подключусь клавиатурой к таблетке и задавлю exe процесс диспетчером.

А что мешает это сделать юзеру ??? :dntknw:
Upd:
Attachments
Hak.png
Last edited by Blackman on 03 Sep 2018, 16:31, edited 1 time in total.
Blackman
leader
leader
 
Posts: 783
Joined: 17 Jan 2016, 15:02
Medals: 1
Activity (1)
LabVIEW Version: 6.1,8.5,20
Karma: 225
VIP

Re: Перехват VI в момент останова с полным выходом?

Postby Artem.spb on 03 Sep 2018, 16:15

прикрепляю виайку для експерементов, которую я без понятия как открыть в блок диаграмме.
С момента установки там финального кода в случае случайного закрытия, без компиляции в exe, ее сразу можно выкинуть в мусор?

В мусор надо отправлять не :vi: , а такой стиль программирования.
Вам уже несколько раз говорили, что нужно не на :labview: ругаться, а на себя, и больше не ставить "run when loaded"
И рецепт "спасения" Иван вам уже давал, что вы там всё ещё
которую я без понятия как открыть в блок диаграмме

Вот ваш код, успешно спасённый через программное изменение параметров
hak.png
Artem.spb
expert
expert
 
Posts: 1401
Joined: 31 Jul 2011, 23:05
Medals: 2
Activity (1) Автор (1)
LabVIEW Version: 12,14,15
Karma: 239
CLD hardware I/O VIP freelance

Re: Перехват VI в момент останова с полным выходом?

Postby taras_33 on 03 Sep 2018, 22:56

Если кто либо откроет мне эту vi, плз покажите здесь, и поделиться бы опытом.

Так вам Kosist писал.
Так как в таком случае можно остановить виайку программно - создаете новую виайку, открываете в ней ссылку на эту, проблемную, и через Invoke Node делаете Abort VI, открываете блок-диаграмму, все что угодно.


Static reference.png
Static reference.png (10.3 KiB) Viewed 340 times


А Blackman постом выше показал как оределить код выполняется в режиме редактирования или run time и затем уже решать что делать....

В чем проблема то?
Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the Universe trying to produce bigger and better idiots.
So far, the Universe is winning!
User avatar
taras_33
adviser
adviser
 
Posts: 235
Joined: 31 Oct 2009, 18:25
Location: Minsk -> Miami
Medals: 1
Activity (1)
LabVIEW Version: 2016
Karma: 118
CLD VIP

Re: Перехват VI в момент останова с полным выходом?

Postby Select on 04 Sep 2018, 00:15

taras_33,
благодарю за линк, на уровне железячника почти понятно, все равно не догоняю я такой подход :labview:, строить дополнительный vi для программного доступа при том, что сидишь под инструментом. Мне нужно посидеть не на одном :labview: курсе, чтоб понять такую философию, как программно выполнить останов процедуры закрытия внешнего vi с выключением PC.
Как ни крути, разработка в :labview: требует от юзера низкоуровневых пониманий в циклов, выходе по условию и т.п.
LabView 14
User avatar
Select
user
user
 
Posts: 95
Joined: 12 Dec 2017, 23:56
Location: Врата надежды.
LabVIEW Version: 14
Karma: 0

Re: Перехват VI в момент останова с полным выходом?

Postby Blackman on 04 Sep 2018, 00:31

Если кто либо откроет мне эту vi, плз покажите здесь, и поделиться бы опытом.

В продолжение варианта Abort VI :wink:
Running VI State.png
Aborted VI State.png

А теперь самый простой и быстрый способ:
1. В GSW щелкнуть мышкой по пункту Blank Project (Создать новый пустой проект)
2. Открыть в Explorer место с проблемным :vi:
3. Мышкой перетащить этот :vi: из Explorer в My Computer проекта созданного в пункте 1)
4. Двойной щелчок мышки по :vi: в окне проекта откроет его в режиме редактирования.
5. ...
Blackman
leader
leader
 
Posts: 783
Joined: 17 Jan 2016, 15:02
Medals: 1
Activity (1)
LabVIEW Version: 6.1,8.5,20
Karma: 225
VIP

Re: Перехват VI в момент останова с полным выходом?

Postby Kosist on 04 Sep 2018, 00:31

Select wrote:taras_33,
благодарю за линк, на уровне железячника почти понятно, все равно не догоняю я такой подход :labview:, строить дополнительный vi для программного доступа при том, что сидишь под инструментом.

Не нужно строить дополнительный :vi: . Вам ведь уже многие писали, что:
- проблему создает свойство виайки Run When Opened или Run When Loaded (не помню точно ее название) + Window Appearance, когда при выполнении прячется toolbar. Вышеупомянутые свойства запускают, выполняют виайку при ее открытии - а тулбар спрятан. Естественно, что Вы не можете ни открыть блок диаграмму, ни остановить ее. Приведу аналогию - Вы открываете двери машины, и она начинает сразу ехать. Оно Вам надо? Вы ведь хотите открыть двери машини, сесть, осмотреться, и уже затем трогаться с места. А у Вас - сразу старт...
Решение:
- убрать галочки с этих свойств;
- добавить на блок диаграмму следующее: This VI Reference функцию + Invoke Node на открытие фронт-панели.
И проблем не будет; и не нужно будет сохранять виайку "на стороне".
Мы делили апельсин - много наших полегло...
User avatar
Kosist
leader
leader
 
Posts: 883
Joined: 21 Feb 2011, 23:44
Medals: 2
Activity (1) Gold (1)
LabVIEW Version: 2013-2017
Karma: 246
CLAD I/O VIP students

Re: Перехват VI в момент останова с полным выходом?

Postby Artem.spb on 04 Sep 2018, 10:51

Kosist wrote:- добавить на блок диаграмму следующее: This VI Reference функцию + Invoke Node на открытие фронт-панели.
И проблем не будет; и не нужно будет сохранять виайку "на стороне".

такие сложности тоже лишние.
Если окно надо открыть в момент вызова (а не хитрО, в процессе работы программы открывать-прятать окно), то проще поставить галку "Show FP when called"
И следующую заодно при необходимости.
Artem.spb
expert
expert
 
Posts: 1401
Joined: 31 Jul 2011, 23:05
Medals: 2
Activity (1) Автор (1)
LabVIEW Version: 12,14,15
Karma: 239
CLD hardware I/O VIP freelance

Re: Перехват VI в момент останова с полным выходом?

Postby Select on 04 Sep 2018, 11:53

Blackman, Kosist, снимаю шляпу.
Artem.spb,
такие сложности тоже лишние.
Если окно надо открыть в момент вызова (а не хитрО, в процессе работы программы открывать-прятать окно), то проще поставить галку "Show FP when called"
И следующую заодно при необходимости.

Если в свойствах vi перед кампиляцией их таким образом выставить, то exeшник мне все это будет отображать, что изначально противоречит логике. Или Как? :dntknw:
LabView 14
User avatar
Select
user
user
 
Posts: 95
Joined: 12 Dec 2017, 23:56
Location: Врата надежды.
LabVIEW Version: 14
Karma: 0

Re: Перехват VI в момент останова с полным выходом?

Postby Artem.spb on 04 Sep 2018, 12:25

Select wrote:Если в свойствах vi перед кампиляцией их таким образом выставить, то exeшник мне все это будет отображать, что изначально противоречит логике. Или Как? :dntknw:

Это можно выставить при создании и спокойно отлаживать программу.
Если стоит Show FP when called, то оно и будет Show в момент called, а не раньше.
У функции есть момент вызова (тогда, когда до неё дойдут все данные), в этот момент она и откроется. если стоит следующая галка то она успешно спрячется, когда отработает. При следущем вызове снова выскочет.
Не путайте с Show FP when loaded. тут окно откроется как раз при загрузке VI, фактически при старте приложения.
С долгоиграющими такое не пройдёт, придётся руками открывать когда в окне возникла потребность и прятать, когда надо скрыть.
Artem.spb
expert
expert
 
Posts: 1401
Joined: 31 Jul 2011, 23:05
Medals: 2
Activity (1) Автор (1)
LabVIEW Version: 12,14,15
Karma: 239
CLD hardware I/O VIP freelance

PreviousNext

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

Who is online

Users browsing this forum: Google and 11 guests

cron