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

Простейшие вопросы в области инженерной разработки
Аватара пользователя
Select
developer
developer
Сообщения: 281
Зарегистрирован: 12 дек 2017, 23:56
Версия LabVIEW: 18
Откуда: Врата надежды.
Поблагодарили: 2 раза

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

Сообщение Select »

Да, пример позаимствовал на форуме Ni, у меня под 14 он нормально открывается.
Вариант не работает, запускается окно консоли, но команда не прописывает аргументы, в твоем примере .
В моем случае "cmd.exe /C shutdown -s 0" :dntknw:
LabView 14,18
Аватара пользователя
Select
developer
developer
Сообщения: 281
Зарегистрирован: 12 дек 2017, 23:56
Версия LabVIEW: 18
Откуда: Врата надежды.
Поблагодарили: 2 раза

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

Сообщение Select »

Так cmd.exe /C shutdown -s 0 работает
Благодарю все получилось :drink:
LabView 14,18
Аватара пользователя
Kosist

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

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

Сообщение Kosist »

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

Я ведь это к чему - Вы написали, что это "грабли :labview: ", а я считаю, что это "грабли" кода. Так как "со стороны" :labview: все работает так, как должно. А исправить это можно легко и просто. :wink:
Мы делили апельсин - много наших полегло...
Аватара пользователя
Select
developer
developer
Сообщения: 281
Зарегистрирован: 12 дек 2017, 23:56
Версия LabVIEW: 18
Откуда: Врата надежды.
Поблагодарили: 2 раза

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

Сообщение Select »

Kosist,
Мухи отдельно, котлеты отдельно, прежде всего я не заинтересован в доступе клиентов к OS, по завершении работы exe. представтье себе как Вы выключаете свой автомобиль, а на медийной панели, вместо потухшего экрана вдруг выпадает окно с виндой :haha:
Такой метод сегодня вполне себя зарекомендовал у многих производителей измерительной аппараиуры, автомобилях, медприборах и т.п. Не понимаю, в чем у Вас возникает с этим проблема? HDD не посыпется, кеш буфер очищается... Ругани OS при последующем запуске нет.
Впрочем для для администрирования девайса я все же подключусь клавиатурой к таблетке и задавлю exe процесс диспетчером.
Что касается изначально поставленного вопроса перехвата vi в момент запуска, в которой закрыто меню :labview: , а так же в прессете запуск происходит в момент загрузки, выход сопровождается процедурой полного выхода с выключением PC, т.е. эта виайка в таком виде не будет даже доступна для ее компиляции в exe или прочих нужд для работы с диаграммой, мало ли вдруг увидел косяк и решил поправить...
Во многих средах разработки всегда присутствует процедура удержания сочетания зарезервированных клавиш во время загрузки для просмотра или правки кода под редактором, конструктором и т.п.
В хелпах и настройках :labview: такого не обнаружил, народ здесь советует для обхода строить такую процедуру и вешать ее на первичный цикл. :dntknw:
Я с этим справляюсь, но это жутко неудобно, каждый раз сохранять на стороне мастер vi.
LabView 14,18
Artem.spb

Activity Автор
professor
professor
Сообщения: 3391
Зарегистрирован: 31 июл 2011, 23:05
Награды: 2
Версия LabVIEW: 12-18
Благодарил (а): 49 раз
Поблагодарили: 172 раза
Контактная информация:

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

Сообщение Artem.spb »

Может, я что-то не так понял, на всякий случай ещё раз бегло пробежал по теме. И всё равно не понял "недовольства".
Во многих средах разработки всегда присутствует процедура удержания сочетания зарезервированных клавиш во время загрузки для просмотра или правки кода под редактором, конструктором и т.п.
Странная мысль искать исходник там, где его нет. Если программа скомпилирована (exe), то обратно исходники не вернуть. Так что никакие сочетания клавиш не помогут.
А что до "лишних телодвижений". Так это нормально, когда исходник являет собой исходник, а не бросается работать сразу после открытия. При этом в скомпилированном приложении всё как раз запускается сразу (или в порядке, заданном исходниками). И, по-моему, это нормально.
Есть проект, в котором куча :vi: , которые можно править как угодно.
после компиляции прописывается условный main, который запускается первым при запуске приложения. Этот main открывает/закрывает окна и пр.
Ну а выключение системы - дело третье. Опять же очень странно, если исходник ( :vi: ) бросается выключить систему при попытке его (:vi:) закрыть. Для этого должна быть прописана логика, исполняемая только в exe.
Вы же не ставите на кажждый клиентский комп отдельную копию :labview: , из-под которой будет открываться :vi: с запуском при открытии?
Аватара пользователя
Select
developer
developer
Сообщения: 281
Зарегистрирован: 12 дек 2017, 23:56
Версия LabVIEW: 18
Откуда: Врата надежды.
Поблагодарили: 2 раза

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

Сообщение Select »

Artem.spb,
Есть проект, в котором куча :vi: , которые можно править как угодно.
прикрепляю виайку для експерементов, которую я без понятия как открыть в блок диаграмме.
С момента установки там финального кода в случае случайного закрытия, без компиляции в exe, ее сразу можно выкинуть в мусор? То что и случилось у меня. Вся история в начале поста, повторять нет смысла.
Если кто либо откроет мне эту vi, плз покажите здесь, и поделиться бы опытом. В противном случае, оставлять на стороне, как я это описал.
!Чуть не забыл, нажатие на Stop выгрузит систему :thank:
Вложения
Hak.vi
(286.72 КБ) 84 скачивания
LabView 14,18
Blackman

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

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

Сообщение Blackman »

Впрочем для для администрирования девайса я все же подключусь клавиатурой к таблетке и задавлю exe процесс диспетчером.
А что мешает это сделать юзеру ??? :dntknw:
Upd:
Вложения
Hak.png
Последний раз редактировалось Blackman 03 сен 2018, 16:31, всего редактировалось 1 раз.
Artem.spb

Activity Автор
professor
professor
Сообщения: 3391
Зарегистрирован: 31 июл 2011, 23:05
Награды: 2
Версия LabVIEW: 12-18
Благодарил (а): 49 раз
Поблагодарили: 172 раза
Контактная информация:

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

Сообщение Artem.spb »

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

Activity
professional
professional
Сообщения: 391
Зарегистрирован: 31 окт 2009, 18:25
Награды: 1
Версия LabVIEW: 2019
Поблагодарили: 13 раз
Контактная информация:

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

Сообщение taras_33 »

Если кто либо откроет мне эту vi, плз покажите здесь, и поделиться бы опытом.
Так вам Kosist писал.
Так как в таком случае можно остановить виайку программно - создаете новую виайку, открываете в ней ссылку на эту, проблемную, и через Invoke Node делаете Abort VI, открываете блок-диаграмму, все что угодно.
Static reference.png
Static reference.png (10.3 КБ) 2811 просмотров
А 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!
Аватара пользователя
Select
developer
developer
Сообщения: 281
Зарегистрирован: 12 дек 2017, 23:56
Версия LabVIEW: 18
Откуда: Врата надежды.
Поблагодарили: 2 раза

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

Сообщение Select »

taras_33,
благодарю за линк, на уровне железячника почти понятно, все равно не догоняю я такой подход :labview:, строить дополнительный vi для программного доступа при том, что сидишь под инструментом. Мне нужно посидеть не на одном :labview: курсе, чтоб понять такую философию, как программно выполнить останов процедуры закрытия внешнего vi с выключением PC.
Как ни крути, разработка в :labview: требует от юзера низкоуровневых пониманий в циклов, выходе по условию и т.п.
LabView 14,18
Blackman

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

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

Сообщение Blackman »

Если кто либо откроет мне эту 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. ...
Аватара пользователя
Kosist

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

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

Сообщение Kosist »

Select писал(а):taras_33,
благодарю за линк, на уровне железячника почти понятно, все равно не догоняю я такой подход :labview:, строить дополнительный vi для программного доступа при том, что сидишь под инструментом.
Не нужно строить дополнительный :vi: . Вам ведь уже многие писали, что:
- проблему создает свойство виайки Run When Opened или Run When Loaded (не помню точно ее название) + Window Appearance, когда при выполнении прячется toolbar. Вышеупомянутые свойства запускают, выполняют виайку при ее открытии - а тулбар спрятан. Естественно, что Вы не можете ни открыть блок диаграмму, ни остановить ее. Приведу аналогию - Вы открываете двери машины, и она начинает сразу ехать. Оно Вам надо? Вы ведь хотите открыть двери машини, сесть, осмотреться, и уже затем трогаться с места. А у Вас - сразу старт...
Решение:
- убрать галочки с этих свойств;
- добавить на блок диаграмму следующее: This VI Reference функцию + Invoke Node на открытие фронт-панели.
И проблем не будет; и не нужно будет сохранять виайку "на стороне".
Мы делили апельсин - много наших полегло...
Artem.spb

Activity Автор
professor
professor
Сообщения: 3391
Зарегистрирован: 31 июл 2011, 23:05
Награды: 2
Версия LabVIEW: 12-18
Благодарил (а): 49 раз
Поблагодарили: 172 раза
Контактная информация:

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

Сообщение Artem.spb »

Kosist писал(а):- добавить на блок диаграмму следующее: This VI Reference функцию + Invoke Node на открытие фронт-панели.
И проблем не будет; и не нужно будет сохранять виайку "на стороне".
такие сложности тоже лишние.
Если окно надо открыть в момент вызова (а не хитрО, в процессе работы программы открывать-прятать окно), то проще поставить галку "Show FP when called"
И следующую заодно при необходимости.
Аватара пользователя
Select
developer
developer
Сообщения: 281
Зарегистрирован: 12 дек 2017, 23:56
Версия LabVIEW: 18
Откуда: Врата надежды.
Поблагодарили: 2 раза

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

Сообщение Select »

Blackman, Kosist, снимаю шляпу.
Artem.spb,
такие сложности тоже лишние.
Если окно надо открыть в момент вызова (а не хитрО, в процессе работы программы открывать-прятать окно), то проще поставить галку "Show FP when called"
И следующую заодно при необходимости.
Если в свойствах vi перед кампиляцией их таким образом выставить, то exeшник мне все это будет отображать, что изначально противоречит логике. Или Как? :dntknw:
LabView 14,18
Artem.spb

Activity Автор
professor
professor
Сообщения: 3391
Зарегистрирован: 31 июл 2011, 23:05
Награды: 2
Версия LabVIEW: 12-18
Благодарил (а): 49 раз
Поблагодарили: 172 раза
Контактная информация:

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

Сообщение Artem.spb »

Select писал(а):Если в свойствах vi перед кампиляцией их таким образом выставить, то exeшник мне все это будет отображать, что изначально противоречит логике. Или Как? :dntknw:
Это можно выставить при создании и спокойно отлаживать программу.
Если стоит Show FP when called, то оно и будет Show в момент called, а не раньше.
У функции есть момент вызова (тогда, когда до неё дойдут все данные), в этот момент она и откроется. если стоит следующая галка то она успешно спрячется, когда отработает. При следущем вызове снова выскочет.
Не путайте с Show FP when loaded. тут окно откроется как раз при загрузке VI, фактически при старте приложения.
С долгоиграющими такое не пройдёт, придётся руками открывать когда в окне возникла потребность и прятать, когда надо скрыть.
Ответить

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