Перехват VI в момент останова с полным выходом?
- Select
- developer
- Сообщения: 281
- Зарегистрирован: 12 дек 2017, 23:56
- Версия LabVIEW: 18
- Откуда: Врата надежды.
- Поблагодарили: 2 раза
Re: Перехват VI в момент останова с полным выходом?
Да, пример позаимствовал на форуме Ni, у меня под 14 он нормально открывается.
Вариант не работает, запускается окно консоли, но команда не прописывает аргументы, в твоем примере .
В моем случае "cmd.exe /C shutdown -s 0"
Вариант не работает, запускается окно консоли, но команда не прописывает аргументы, в твоем примере .
В моем случае "cmd.exe /C shutdown -s 0"
LabView 14,18
- Select
- developer
- Сообщения: 281
- Зарегистрирован: 12 дек 2017, 23:56
- Версия LabVIEW: 18
- Откуда: Врата надежды.
- Поблагодарили: 2 раза
Re: Перехват VI в момент останова с полным выходом?
Так cmd.exe /C shutdown -s 0 работает
Благодарю все получилось
Благодарю все получилось
LabView 14,18
-
Kosist
- expert
- Сообщения: 1236
- Зарегистрирован: 21 фев 2011, 23:44
- Награды: 2
- Версия LabVIEW: 2013-2020
- Благодарил (а): 23 раза
- Поблагодарили: 30 раз
- Контактная информация:
Re: Перехват VI в момент останова с полным выходом?
Это не ради отката в блок диаграмму, а ради запуска виайки программно. И этим убиваете двух зайцев - виайка запускается при вызове, и нету странных проблем с открытием блок-диаграммы для просмотра/изменения кода.Select писал(а):На мой взгляд многовато телодвижений, как я понимаю создавать в теле дополнительностью Node процедуру ради отката в блок диаграмму....
А телодвижений минимим, + 20 секунд больше кодинга; сбросить на блок-диаграмму два инвоук нода...
А вот тут я немного не понял - остановить программу можно и без SHUTDOWN функции. Если все прописано правильно, то программу можно остановить без такого "хардкора", поверьте. Может, многие и не согласятся, но для меня так все и есть - SHUTDOWN сразу убивает приложение; но ведь его можно остановить и нормально. Остановить все параллельные циклы, процессы, лаунчеры - эффект будет тот же.Select писал(а):И вообще в дальнейшем такая логика выхода exe была пересмотрена в пользу полного SHUTDOWN выхода с выключением PC. В противном случае клиент получает доступ к системе. Оно мне надо?
А доступ к системе обеспечивается настройками системы и ограничиванием прав пользователя, но уж никак не исполняемым приложением. Если есть возможность у пользователя вызвать консоль, то тут уж ничего не поделаешь, он может делать с системой все, что угодно. Но это такое
Я ведь это к чему - Вы написали, что это "грабли ", а я считаю, что это "грабли" кода. Так как "со стороны" все работает так, как должно. А исправить это можно легко и просто.
Мы делили апельсин - много наших полегло...
- Select
- developer
- Сообщения: 281
- Зарегистрирован: 12 дек 2017, 23:56
- Версия LabVIEW: 18
- Откуда: Врата надежды.
- Поблагодарили: 2 раза
Re: Перехват VI в момент останова с полным выходом?
Kosist,
Мухи отдельно, котлеты отдельно, прежде всего я не заинтересован в доступе клиентов к OS, по завершении работы exe. представтье себе как Вы выключаете свой автомобиль, а на медийной панели, вместо потухшего экрана вдруг выпадает окно с виндой
Такой метод сегодня вполне себя зарекомендовал у многих производителей измерительной аппараиуры, автомобилях, медприборах и т.п. Не понимаю, в чем у Вас возникает с этим проблема? HDD не посыпется, кеш буфер очищается... Ругани OS при последующем запуске нет.
Впрочем для для администрирования девайса я все же подключусь клавиатурой к таблетке и задавлю exe процесс диспетчером.
Что касается изначально поставленного вопроса перехвата vi в момент запуска, в которой закрыто меню , а так же в прессете запуск происходит в момент загрузки, выход сопровождается процедурой полного выхода с выключением PC, т.е. эта виайка в таком виде не будет даже доступна для ее компиляции в exe или прочих нужд для работы с диаграммой, мало ли вдруг увидел косяк и решил поправить...
Во многих средах разработки всегда присутствует процедура удержания сочетания зарезервированных клавиш во время загрузки для просмотра или правки кода под редактором, конструктором и т.п.
В хелпах и настройках такого не обнаружил, народ здесь советует для обхода строить такую процедуру и вешать ее на первичный цикл.
Я с этим справляюсь, но это жутко неудобно, каждый раз сохранять на стороне мастер vi.
Мухи отдельно, котлеты отдельно, прежде всего я не заинтересован в доступе клиентов к OS, по завершении работы exe. представтье себе как Вы выключаете свой автомобиль, а на медийной панели, вместо потухшего экрана вдруг выпадает окно с виндой
Такой метод сегодня вполне себя зарекомендовал у многих производителей измерительной аппараиуры, автомобилях, медприборах и т.п. Не понимаю, в чем у Вас возникает с этим проблема? HDD не посыпется, кеш буфер очищается... Ругани OS при последующем запуске нет.
Впрочем для для администрирования девайса я все же подключусь клавиатурой к таблетке и задавлю exe процесс диспетчером.
Что касается изначально поставленного вопроса перехвата vi в момент запуска, в которой закрыто меню , а так же в прессете запуск происходит в момент загрузки, выход сопровождается процедурой полного выхода с выключением PC, т.е. эта виайка в таком виде не будет даже доступна для ее компиляции в exe или прочих нужд для работы с диаграммой, мало ли вдруг увидел косяк и решил поправить...
Во многих средах разработки всегда присутствует процедура удержания сочетания зарезервированных клавиш во время загрузки для просмотра или правки кода под редактором, конструктором и т.п.
В хелпах и настройках такого не обнаружил, народ здесь советует для обхода строить такую процедуру и вешать ее на первичный цикл.
Я с этим справляюсь, но это жутко неудобно, каждый раз сохранять на стороне мастер vi.
LabView 14,18
-
- professor
- Сообщения: 3404
- Зарегистрирован: 31 июл 2011, 23:05
- Награды: 2
- Версия LabVIEW: 12-18
- Благодарил (а): 49 раз
- Поблагодарили: 173 раза
- Контактная информация:
Re: Перехват VI в момент останова с полным выходом?
Может, я что-то не так понял, на всякий случай ещё раз бегло пробежал по теме. И всё равно не понял "недовольства".
А что до "лишних телодвижений". Так это нормально, когда исходник являет собой исходник, а не бросается работать сразу после открытия. При этом в скомпилированном приложении всё как раз запускается сразу (или в порядке, заданном исходниками). И, по-моему, это нормально.
Есть проект, в котором куча , которые можно править как угодно.
после компиляции прописывается условный main, который запускается первым при запуске приложения. Этот main открывает/закрывает окна и пр.
Ну а выключение системы - дело третье. Опять же очень странно, если исходник ( ) бросается выключить систему при попытке его (:vi:) закрыть. Для этого должна быть прописана логика, исполняемая только в exe.
Вы же не ставите на кажждый клиентский комп отдельную копию , из-под которой будет открываться с запуском при открытии?
Странная мысль искать исходник там, где его нет. Если программа скомпилирована (exe), то обратно исходники не вернуть. Так что никакие сочетания клавиш не помогут.Во многих средах разработки всегда присутствует процедура удержания сочетания зарезервированных клавиш во время загрузки для просмотра или правки кода под редактором, конструктором и т.п.
А что до "лишних телодвижений". Так это нормально, когда исходник являет собой исходник, а не бросается работать сразу после открытия. При этом в скомпилированном приложении всё как раз запускается сразу (или в порядке, заданном исходниками). И, по-моему, это нормально.
Есть проект, в котором куча , которые можно править как угодно.
после компиляции прописывается условный main, который запускается первым при запуске приложения. Этот main открывает/закрывает окна и пр.
Ну а выключение системы - дело третье. Опять же очень странно, если исходник ( ) бросается выключить систему при попытке его (:vi:) закрыть. Для этого должна быть прописана логика, исполняемая только в exe.
Вы же не ставите на кажждый клиентский комп отдельную копию , из-под которой будет открываться с запуском при открытии?
- Select
- developer
- Сообщения: 281
- Зарегистрирован: 12 дек 2017, 23:56
- Версия LabVIEW: 18
- Откуда: Врата надежды.
- Поблагодарили: 2 раза
Re: Перехват VI в момент останова с полным выходом?
Artem.spb,
С момента установки там финального кода в случае случайного закрытия, без компиляции в exe, ее сразу можно выкинуть в мусор? То что и случилось у меня. Вся история в начале поста, повторять нет смысла.
Если кто либо откроет мне эту vi, плз покажите здесь, и поделиться бы опытом. В противном случае, оставлять на стороне, как я это описал.
!Чуть не забыл, нажатие на Stop выгрузит систему
прикрепляю виайку для експерементов, которую я без понятия как открыть в блок диаграмме.Есть проект, в котором куча , которые можно править как угодно.
С момента установки там финального кода в случае случайного закрытия, без компиляции в exe, ее сразу можно выкинуть в мусор? То что и случилось у меня. Вся история в начале поста, повторять нет смысла.
Если кто либо откроет мне эту vi, плз покажите здесь, и поделиться бы опытом. В противном случае, оставлять на стороне, как я это описал.
!Чуть не забыл, нажатие на Stop выгрузит систему
- Вложения
-
- Hak.vi
- (286.72 КБ) 85 скачиваний
LabView 14,18
-
- leader
- Сообщения: 932
- Зарегистрирован: 17 янв 2016, 15:02
- Награды: 1
- Версия LabVIEW: 6.1,8.5,20
Re: Перехват VI в момент останова с полным выходом?
А что мешает это сделать юзеру ???Впрочем для для администрирования девайса я все же подключусь клавиатурой к таблетке и задавлю exe процесс диспетчером.
Upd:
Последний раз редактировалось Blackman 03 сен 2018, 16:31, всего редактировалось 1 раз.
-
- professor
- Сообщения: 3404
- Зарегистрирован: 31 июл 2011, 23:05
- Награды: 2
- Версия LabVIEW: 12-18
- Благодарил (а): 49 раз
- Поблагодарили: 173 раза
- Контактная информация:
Re: Перехват VI в момент останова с полным выходом?
В мусор надо отправлять не , а такой стиль программирования.прикрепляю виайку для експерементов, которую я без понятия как открыть в блок диаграмме.
С момента установки там финального кода в случае случайного закрытия, без компиляции в exe, ее сразу можно выкинуть в мусор?
Вам уже несколько раз говорили, что нужно не на ругаться, а на себя, и больше не ставить "run when loaded"
И рецепт "спасения" Иван вам уже давал, что вы там всё ещё
Вот ваш код, успешно спасённый через программное изменение параметровкоторую я без понятия как открыть в блок диаграмме
-
taras_33
- professional
- Сообщения: 392
- Зарегистрирован: 31 окт 2009, 18:25
- Награды: 1
- Версия LabVIEW: 2019
- Поблагодарили: 13 раз
- Контактная информация:
Re: Перехват VI в момент останова с полным выходом?
Так вам Kosist писал.Если кто либо откроет мне эту vi, плз покажите здесь, и поделиться бы опытом.
А Blackman постом выше показал как оределить код выполняется в режиме редактирования или run time и затем уже решать что делать....Так как в таком случае можно остановить виайку программно - создаете новую виайку, открываете в ней ссылку на эту, проблемную, и через Invoke Node делаете Abort VI, открываете блок-диаграмму, все что угодно.
В чем проблема то?
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!
So far, the Universe is winning!
- Select
- developer
- Сообщения: 281
- Зарегистрирован: 12 дек 2017, 23:56
- Версия LabVIEW: 18
- Откуда: Врата надежды.
- Поблагодарили: 2 раза
Re: Перехват VI в момент останова с полным выходом?
taras_33,
благодарю за линк, на уровне железячника почти понятно, все равно не догоняю я такой подход , строить дополнительный vi для программного доступа при том, что сидишь под инструментом. Мне нужно посидеть не на одном курсе, чтоб понять такую философию, как программно выполнить останов процедуры закрытия внешнего vi с выключением PC.
Как ни крути, разработка в требует от юзера низкоуровневых пониманий в циклов, выходе по условию и т.п.
благодарю за линк, на уровне железячника почти понятно, все равно не догоняю я такой подход , строить дополнительный vi для программного доступа при том, что сидишь под инструментом. Мне нужно посидеть не на одном курсе, чтоб понять такую философию, как программно выполнить останов процедуры закрытия внешнего vi с выключением PC.
Как ни крути, разработка в требует от юзера низкоуровневых пониманий в циклов, выходе по условию и т.п.
LabView 14,18
-
- leader
- Сообщения: 932
- Зарегистрирован: 17 янв 2016, 15:02
- Награды: 1
- Версия LabVIEW: 6.1,8.5,20
Re: Перехват VI в момент останова с полным выходом?
В продолжение варианта Abort VI А теперь самый простой и быстрый способ:Если кто либо откроет мне эту vi, плз покажите здесь, и поделиться бы опытом.
1. В GSW щелкнуть мышкой по пункту Blank Project (Создать новый пустой проект)
2. Открыть в Explorer место с проблемным
3. Мышкой перетащить этот из Explorer в My Computer проекта созданного в пункте 1)
4. Двойной щелчок мышки по в окне проекта откроет его в режиме редактирования.
5. ...
-
Kosist
- expert
- Сообщения: 1236
- Зарегистрирован: 21 фев 2011, 23:44
- Награды: 2
- Версия LabVIEW: 2013-2020
- Благодарил (а): 23 раза
- Поблагодарили: 30 раз
- Контактная информация:
Re: Перехват VI в момент останова с полным выходом?
Не нужно строить дополнительный . Вам ведь уже многие писали, что:Select писал(а):taras_33,
благодарю за линк, на уровне железячника почти понятно, все равно не догоняю я такой подход , строить дополнительный vi для программного доступа при том, что сидишь под инструментом.
- проблему создает свойство виайки Run When Opened или Run When Loaded (не помню точно ее название) + Window Appearance, когда при выполнении прячется toolbar. Вышеупомянутые свойства запускают, выполняют виайку при ее открытии - а тулбар спрятан. Естественно, что Вы не можете ни открыть блок диаграмму, ни остановить ее. Приведу аналогию - Вы открываете двери машины, и она начинает сразу ехать. Оно Вам надо? Вы ведь хотите открыть двери машини, сесть, осмотреться, и уже затем трогаться с места. А у Вас - сразу старт...
Решение:
- убрать галочки с этих свойств;
- добавить на блок диаграмму следующее: This VI Reference функцию + Invoke Node на открытие фронт-панели.
И проблем не будет; и не нужно будет сохранять виайку "на стороне".
Мы делили апельсин - много наших полегло...
-
- professor
- Сообщения: 3404
- Зарегистрирован: 31 июл 2011, 23:05
- Награды: 2
- Версия LabVIEW: 12-18
- Благодарил (а): 49 раз
- Поблагодарили: 173 раза
- Контактная информация:
Re: Перехват VI в момент останова с полным выходом?
такие сложности тоже лишние.Kosist писал(а):- добавить на блок диаграмму следующее: This VI Reference функцию + Invoke Node на открытие фронт-панели.
И проблем не будет; и не нужно будет сохранять виайку "на стороне".
Если окно надо открыть в момент вызова (а не хитрО, в процессе работы программы открывать-прятать окно), то проще поставить галку "Show FP when called"
И следующую заодно при необходимости.
- Select
- developer
- Сообщения: 281
- Зарегистрирован: 12 дек 2017, 23:56
- Версия LabVIEW: 18
- Откуда: Врата надежды.
- Поблагодарили: 2 раза
Re: Перехват VI в момент останова с полным выходом?
Blackman, Kosist, снимаю шляпу.
Artem.spb,
Artem.spb,
Если в свойствах vi перед кампиляцией их таким образом выставить, то exeшник мне все это будет отображать, что изначально противоречит логике. Или Как?такие сложности тоже лишние.
Если окно надо открыть в момент вызова (а не хитрО, в процессе работы программы открывать-прятать окно), то проще поставить галку "Show FP when called"
И следующую заодно при необходимости.
LabView 14,18
-
- professor
- Сообщения: 3404
- Зарегистрирован: 31 июл 2011, 23:05
- Награды: 2
- Версия LabVIEW: 12-18
- Благодарил (а): 49 раз
- Поблагодарили: 173 раза
- Контактная информация:
Re: Перехват VI в момент останова с полным выходом?
Это можно выставить при создании и спокойно отлаживать программу.Select писал(а):Если в свойствах vi перед кампиляцией их таким образом выставить, то exeшник мне все это будет отображать, что изначально противоречит логике. Или Как?
Если стоит Show FP when called, то оно и будет Show в момент called, а не раньше.
У функции есть момент вызова (тогда, когда до неё дойдут все данные), в этот момент она и откроется. если стоит следующая галка то она успешно спрячется, когда отработает. При следущем вызове снова выскочет.
Не путайте с Show FP when loaded. тут окно откроется как раз при загрузке VI, фактически при старте приложения.
С долгоиграющими такое не пройдёт, придётся руками открывать когда в окне возникла потребность и прятать, когда надо скрыть.