Страница 2 из 4
Re: Перехват VI в момент останова с полным выходом?
Добавлено: 01 сен 2018, 13:42
Select
Да, пример позаимствовал на форуме Ni, у меня под 14 он нормально открывается.
Вариант не работает, запускается окно консоли, но команда не прописывает аргументы, в твоем примере .
В моем случае "cmd.exe /C shutdown -s 0"
Re: Перехват VI в момент останова с полным выходом?
Добавлено: 01 сен 2018, 13:50
Select
Так cmd.exe /C shutdown -s 0 работает
Благодарю все получилось
Re: Перехват VI в момент останова с полным выходом?
Добавлено: 01 сен 2018, 21:23
Kosist
Select писал(а):На мой взгляд многовато телодвижений, как я понимаю создавать в теле дополнительностью Node процедуру ради отката в блок диаграмму....
Это не ради отката в блок диаграмму, а ради запуска виайки программно. И этим убиваете двух зайцев - виайка запускается при вызове, и нету странных проблем с открытием блок-диаграммы для просмотра/изменения кода.
А телодвижений минимим, + 20 секунд больше кодинга; сбросить на блок-диаграмму два инвоук нода...
Select писал(а):И вообще в дальнейшем такая логика выхода exe была пересмотрена в пользу полного SHUTDOWN выхода с выключением PC. В противном случае клиент получает доступ к системе. Оно мне надо?
А вот тут я немного не понял - остановить программу можно и без SHUTDOWN функции. Если все прописано правильно, то программу можно остановить без такого "хардкора", поверьте. Может, многие и не согласятся, но для меня так все и есть - SHUTDOWN сразу убивает приложение; но ведь его можно остановить и нормально. Остановить все параллельные циклы, процессы, лаунчеры - эффект будет тот же.
А доступ к системе обеспечивается настройками системы и ограничиванием прав пользователя, но уж никак не исполняемым
приложением. Если есть возможность у пользователя вызвать консоль, то тут уж ничего не поделаешь, он может делать с системой все, что угодно. Но это такое
Я ведь это к чему - Вы написали, что это "грабли
", а я считаю, что это "грабли" кода. Так как "со стороны"
все работает так, как должно. А исправить это можно легко и просто.
Re: Перехват VI в момент останова с полным выходом?
Добавлено: 03 сен 2018, 13:25
Select
Kosist,
Мухи отдельно, котлеты отдельно, прежде всего я не заинтересован в доступе клиентов к OS, по завершении работы exe. представтье себе как Вы выключаете свой автомобиль, а на медийной панели, вместо потухшего экрана вдруг выпадает окно с виндой
Такой метод сегодня вполне себя зарекомендовал у многих производителей измерительной аппараиуры, автомобилях, медприборах и т.п. Не понимаю, в чем у Вас возникает с этим проблема? HDD не посыпется, кеш буфер очищается... Ругани OS при последующем запуске нет.
Впрочем для для администрирования девайса я все же подключусь клавиатурой к таблетке и задавлю exe процесс диспетчером.
Что касается изначально поставленного вопроса перехвата vi в момент запуска, в которой закрыто меню
, а так же в прессете запуск происходит в момент загрузки, выход сопровождается процедурой полного выхода с выключением PC, т.е. эта виайка в таком виде не будет даже доступна для ее компиляции в exe или прочих нужд для работы с диаграммой, мало ли вдруг увидел косяк и решил поправить...
Во многих средах разработки всегда присутствует процедура удержания сочетания зарезервированных клавиш во время загрузки для просмотра или правки кода под редактором, конструктором и т.п.
В хелпах и настройках
такого не обнаружил, народ здесь советует для обхода строить такую процедуру и вешать ее на первичный цикл.
Я с этим справляюсь, но это жутко неудобно, каждый раз сохранять на стороне мастер vi.
Re: Перехват VI в момент останова с полным выходом?
Добавлено: 03 сен 2018, 13:54
Artem.spb
Может, я что-то не так понял, на всякий случай ещё раз бегло пробежал по теме. И всё равно не понял "недовольства".
Во многих средах разработки всегда присутствует процедура удержания сочетания зарезервированных клавиш во время загрузки для просмотра или правки кода под редактором, конструктором и т.п.
Странная мысль искать исходник там, где его нет. Если программа скомпилирована (exe), то обратно исходники не вернуть. Так что никакие сочетания клавиш не помогут.
А что до "лишних телодвижений". Так это нормально, когда исходник являет собой исходник, а не бросается работать сразу после открытия. При этом в скомпилированном приложении всё как раз запускается сразу (или в порядке, заданном исходниками). И, по-моему, это нормально.
Есть проект, в котором куча
, которые можно править как угодно.
после компиляции прописывается условный main, который запускается первым при запуске приложения. Этот main открывает/закрывает окна и пр.
Ну а выключение системы - дело третье. Опять же очень странно, если исходник (
) бросается выключить систему при попытке его (:vi:) закрыть. Для этого должна быть прописана логика, исполняемая только в exe.
Вы же не ставите на кажждый клиентский комп отдельную копию
, из-под которой будет открываться
с запуском при открытии?
Re: Перехват VI в момент останова с полным выходом?
Добавлено: 03 сен 2018, 15:55
Select
Artem.spb,
Есть проект, в котором куча
, которые можно править как угодно.
прикрепляю виайку для експерементов, которую я без понятия как открыть в блок диаграмме.
С момента установки там финального кода в случае случайного закрытия, без компиляции в exe, ее сразу можно выкинуть в мусор? То что и случилось у меня. Вся история в начале поста, повторять нет смысла.
Если кто либо откроет мне эту vi, плз покажите здесь, и поделиться бы опытом. В противном случае, оставлять на стороне, как я это описал.
!Чуть не забыл, нажатие на Stop выгрузит систему
Re: Перехват VI в момент останова с полным выходом?
Добавлено: 03 сен 2018, 16:14
Blackman
Впрочем для для администрирования девайса я все же подключусь клавиатурой к таблетке и задавлю exe процесс диспетчером.
А что мешает это сделать юзеру ???
Upd:
Re: Перехват VI в момент останова с полным выходом?
Добавлено: 03 сен 2018, 16:15
Artem.spb
прикрепляю виайку для експерементов, которую я без понятия как открыть в блок диаграмме.
С момента установки там финального кода в случае случайного закрытия, без компиляции в exe, ее сразу можно выкинуть в мусор?
В мусор надо отправлять не
, а такой стиль программирования.
Вам уже несколько раз говорили, что нужно не на
ругаться, а на себя, и больше не ставить "run when loaded"
И рецепт "спасения" Иван вам уже давал, что вы там всё ещё
которую я без понятия как открыть в блок диаграмме
Вот ваш код, успешно спасённый через программное изменение параметров
Re: Перехват VI в момент останова с полным выходом?
Добавлено: 03 сен 2018, 22:56
taras_33
Если кто либо откроет мне эту vi, плз покажите здесь, и поделиться бы опытом.
Так вам Kosist писал.
Так как в таком случае можно остановить виайку программно - создаете новую виайку, открываете в ней ссылку на эту, проблемную, и через Invoke Node делаете Abort VI, открываете блок-диаграмму, все что угодно.
- Static reference.png (10.3 КБ) 2918 просмотров
А Blackman постом выше показал
как оределить код выполняется в режиме редактирования или run time и затем уже решать что делать....
В чем проблема то?
Re: Перехват VI в момент останова с полным выходом?
Добавлено: 04 сен 2018, 00:15
Select
taras_33,
благодарю за линк, на уровне железячника почти понятно, все равно не догоняю я такой подход
, строить дополнительный vi для программного доступа при том, что сидишь под инструментом. Мне нужно посидеть не на одном
курсе, чтоб понять такую философию, как программно выполнить останов процедуры закрытия внешнего vi с выключением PC.
Как ни крути, разработка в
требует от юзера низкоуровневых пониманий в циклов, выходе по условию и т.п.
Re: Перехват VI в момент останова с полным выходом?
Добавлено: 04 сен 2018, 00:31
Blackman
Если кто либо откроет мне эту vi, плз покажите здесь, и поделиться бы опытом.
В продолжение варианта
Abort VI
А теперь самый простой и быстрый способ:
1. В
GSW щелкнуть мышкой по пункту
Blank Project (Создать новый пустой проект)
2. Открыть в
Explorer место с проблемным
3. Мышкой перетащить этот
из
Explorer в
My Computer проекта созданного в пункте 1)
4. Двойной щелчок мышки по
в окне проекта откроет его в режиме редактирования.
5. ...
Re: Перехват VI в момент останова с полным выходом?
Добавлено: 04 сен 2018, 00:31
Kosist
Select писал(а):taras_33,
благодарю за линк, на уровне железячника почти понятно, все равно не догоняю я такой подход
, строить дополнительный vi для программного доступа при том, что сидишь под инструментом.
Не нужно строить дополнительный
. Вам ведь уже многие писали, что:
- проблему создает свойство виайки Run When Opened или Run When Loaded (не помню точно ее название) + Window Appearance, когда при выполнении прячется toolbar. Вышеупомянутые свойства
запускают,
выполняют виайку при ее открытии - а тулбар спрятан. Естественно, что Вы не можете ни открыть блок диаграмму, ни остановить ее. Приведу аналогию - Вы открываете двери машины, и она начинает сразу ехать. Оно Вам надо? Вы ведь хотите открыть двери машини, сесть, осмотреться, и уже затем трогаться с места. А у Вас - сразу старт...
Решение:
- убрать галочки с этих свойств;
- добавить на блок диаграмму следующее: This VI Reference функцию + Invoke Node на открытие фронт-панели.
И проблем не будет; и не нужно будет сохранять виайку "на стороне".
Re: Перехват VI в момент останова с полным выходом?
Добавлено: 04 сен 2018, 10:51
Artem.spb
Kosist писал(а):- добавить на блок диаграмму следующее: This VI Reference функцию + Invoke Node на открытие фронт-панели.
И проблем не будет; и не нужно будет сохранять виайку "на стороне".
такие сложности тоже лишние.
Если окно надо открыть в момент вызова (а не хитрО, в процессе работы программы открывать-прятать окно), то проще поставить галку "Show FP when called"
И следующую заодно при необходимости.
Re: Перехват VI в момент останова с полным выходом?
Добавлено: 04 сен 2018, 11:53
Select
Blackman,
Kosist, снимаю шляпу.
Artem.spb,
такие сложности тоже лишние.
Если окно надо открыть в момент вызова (а не хитрО, в процессе работы программы открывать-прятать окно), то проще поставить галку "Show FP when called"
И следующую заодно при необходимости.
Если в свойствах vi перед кампиляцией их таким образом выставить, то exeшник мне все это будет отображать, что изначально противоречит логике. Или Как?
Re: Перехват VI в момент останова с полным выходом?
Добавлено: 04 сен 2018, 12:25
Artem.spb
Select писал(а):Если в свойствах vi перед кампиляцией их таким образом выставить, то exeшник мне все это будет отображать, что изначально противоречит логике. Или Как?
Это можно выставить при создании и спокойно отлаживать программу.
Если стоит Show FP when called, то оно и будет Show в момент called, а не раньше.
У функции есть момент вызова (тогда, когда до неё дойдут все данные), в этот момент она и откроется. если стоит следующая галка то она успешно спрячется, когда отработает. При следущем вызове снова выскочет.
Не путайте с Show FP when loaded. тут окно откроется как раз при загрузке VI, фактически при старте приложения.
С долгоиграющими такое не пройдёт, придётся руками открывать когда в окне возникла потребность и прятать, когда надо скрыть.