Многооконность, проблемы
-
Jakob Brontfeyn
- expert
- Сообщения: 1729
- Зарегистрирован: 28 фев 2008, 11:01
- Награды: 6
- Благодарил (а): 1 раз
- Контактная информация:
Re: Многооконность, проблемы
Мозги боятся, а глаза и руки делают,
пусть пока коряво сделано в диаграмме, но все вроде работает
проверяйте коллеги, сделано 3 независимых окна.
Почему то не получилось сделать "свернутые окна" модальными, но это
в общем то не принципиально.
все, как у Андрея Макаревича
"Не стоит прогибаться под Mikrosoft и NI,
Пусть лучше те прогнутся под нас"
пусть пока коряво сделано в диаграмме, но все вроде работает
проверяйте коллеги, сделано 3 независимых окна.
Почему то не получилось сделать "свернутые окна" модальными, но это
в общем то не принципиально.
все, как у Андрея Макаревича
"Не стоит прогибаться под Mikrosoft и NI,
Пусть лучше те прогнутся под нас"
- Вложения
-
- mov_windows.zip
- (138.05 КБ) 162 скачивания
-
IvanLis
- guru
- Сообщения: 5462
- Зарегистрирован: 02 дек 2009, 17:44
- Награды: 7
- Версия LabVIEW: 2015, 2016
- Откуда: СССР
- Благодарил (а): 28 раз
- Поблагодарили: 86 раз
Re: Многооконность, проблемы
на то оно и "модальное окно"Jakob Brontfeyn писал(а):Почему то не получилось сделать "свернутые окна" модальными, но это в общем то не принципиально.
http://ru.wikipedia.org/wiki/%D0%9C%D0% ... 0%BD%D0%BE
Позицию курсора можно узнать на много проще: может конечно у Вас з/п зависит от количества строчек кода
Знание нескольких принципов освобождает от знания многих фактов!
Правила форума
Как добавить в сообщение картинку или файл
Конвертация / версий (форматов) VI
Как правильно задать вопрос...
Правила форума
Как добавить в сообщение картинку или файл
Конвертация / версий (форматов) VI
Как правильно задать вопрос...
-
- VIP
- Сообщения: 1327
- Зарегистрирован: 03 фев 2010, 00:42
- Награды: 6
- Версия LabVIEW: 6.1 - 2024
- Откуда: Германия
- Благодарил (а): 1 раз
- Поблагодарили: 38 раз
- Контактная информация:
Re: Многооконность, проблемы
А через System exec и не получится. Тут дело не в диалоге - вместо него можно взять, скажем, Sleep(). В Линуксе надо библиотеку .so подключить - тогда эффект станет заметен.IvanLis писал(а):Никогда на столько не вникал во все тонкости, но в Linux мне заблокировать ничего не получилось
-
- VIP
- Сообщения: 1327
- Зарегистрирован: 03 фев 2010, 00:42
- Награды: 6
- Версия LabVIEW: 6.1 - 2024
- Откуда: Германия
- Благодарил (а): 1 раз
- Поблагодарили: 38 раз
- Контактная информация:
Re: Многооконность, проблемы
Кнопке закрытия лучше таки назначить Switch when released - если пользователь случайно на неё нажмёт, у него будет шанс убрать курсор не отпуская кнопку мыши и затем отпустить, при этом окно не закроется (ну так, как в Windows оно срабатывает).Jakob Brontfeyn писал(а):Мозги боятся, а глаза и руки делают,
пусть пока коряво сделано в диаграмме, но все вроде работает
проверяйте коллеги, сделано 3 независимых окна.
-
dadreamer
- professor
- Сообщения: 3926
- Зарегистрирован: 17 фев 2013, 16:33
- Награды: 4
- Версия LabVIEW: 2.5 — 2022
- Благодарил (а): 11 раз
- Поблагодарили: 126 раз
- Контактная информация:
Re: Многооконность, проблемы
Количество потоков для той или иной системы исполнения можно настроить вручную, для этого достаточно запустить [LabVIEW]\vi.lib\Utility\sysinfo.llb\threadconfig.viAndreyDmitriev писал(а):В рамках каждой системы исполнения LabVIEW выделяет несколько потоков. Их количество зависит от многих параметров - версии LabVIEW, конфигурации компьютера, некоторых настроек.
http://digital.ni.com/public.nsf/allkb/ ... BC006C0F19
http://digital.ni.com/public.nsf/allkb/ ... BC006BDCDB
-
- professor
- Сообщения: 3391
- Зарегистрирован: 31 июл 2011, 23:05
- Награды: 2
- Версия LabVIEW: 12-18
- Благодарил (а): 49 раз
- Поблагодарили: 172 раза
- Контактная информация:
Re: Многооконность, проблемы
вы критикуете мою фразу отдельно от контекста. а контекст таков:AndreyDmitriev писал(а):Артём, вы всегда сломя голову бросаетесь переделывать архитектуру при любой необъяснимой проблеме, не вникая в её суть?Artem.spb писал(а): тут возможно придётся переделывать всю систему :)
так же есть поверье, что этот параметр
влияет на поточность, я его порой использую в сложны системах, но никогда не проверял его реальность.
ну а в остальном правильные и ценные мысли излагаете.Artem.spb писал(а):тут возможно придётся переделывать всю систему :)Jakob Brontfeyn писал(а): "Не использовать в циклах элементов, приводящих к переключению в UI поток" не понял это предложение
Нельзя ли переделать мой пример в соответствии с этой концепцией
как она устроена по скриншотам понять сложно,
на мой взгляд вполне красиво выглядит, вот только почему вы решили сворачивать "влево", а не вниз - на панель задач? оно и проще будет и естественней.Jakob Brontfeyn писал(а):Мозги боятся, а глаза и руки делают,
пусть пока коряво сделано в диаграмме, но все вроде работает
проверяйте коллеги, сделано 3 независимых окна.
ну и опять же, что вам мешает пусть даже в рамках одного vi разделить "опрос приборов" и интерфейс? два параллельных цикла.
-
Jakob Brontfeyn
- expert
- Сообщения: 1729
- Зарегистрирован: 28 фев 2008, 11:01
- Награды: 6
- Благодарил (а): 1 раз
- Контактная информация:
Re: Многооконность, проблемы
А где взять координаты на панель задач?Artem.spb писал(а):
на мой взгляд вполне красиво выглядит, вот только почему вы решили сворачивать "влево", а не вниз - на панель задач? оно и проще будет и естественней.
-
- professor
- Сообщения: 3391
- Зарегистрирован: 31 июл 2011, 23:05
- Награды: 2
- Версия LabVIEW: 12-18
- Благодарил (а): 49 раз
- Поблагодарили: 172 раза
- Контактная информация:
Re: Многооконность, проблемы
а они и не нужны :)Jakob Brontfeyn писал(а):А где взять координаты на панель задач?
меняете состояние окна на "минимизированное" и всё
судя по тому, что моя система ворнинги выдаёт, у вас LV какая-то старая, так что этот пример в семёрке.
- Вложения
-
- minimize.vi
- (27.7 КБ) 156 скачиваний
-
Jakob Brontfeyn
- expert
- Сообщения: 1729
- Зарегистрирован: 28 фев 2008, 11:01
- Награды: 6
- Благодарил (а): 1 раз
- Контактная информация:
Re: Многооконность, проблемы
Спасибо, действительно все упрощается, просто в LV6.0 такой функции нет,
учту для старших версий.
учту для старших версий.
-
Jakob Brontfeyn
- expert
- Сообщения: 1729
- Зарегистрирован: 28 фев 2008, 11:01
- Награды: 6
- Благодарил (а): 1 раз
- Контактная информация:
Re: Многооконность, проблемы
Увы, это для каких то частных случаев, где данные собираютсяArtem.spb писал(а):AndreyDmitriev писал(а):Artem.spb писал(а): ну и опять же, что вам мешает пусть даже в рамках одного vi разделить "опрос приборов" и интерфейс? два параллельных цикла.
в буфер и не анализируются в процессе, если у меня VI будет подвешен,
пусть даже опрос датчиков работает, можно аларм пропустить, ну не делать
же мне для обработки алармов еще и третий цикл а для пид-регулятора четвертый,
и кроме того висит не одно окно, а все окна.
-
Jakob Brontfeyn
- expert
- Сообщения: 1729
- Зарегистрирован: 28 фев 2008, 11:01
- Награды: 6
- Благодарил (а): 1 раз
- Контактная информация:
Re: Многооконность, проблемы
спасибо, полезное замечаниеAndreyDmitriev писал(а):Кнопке закрытия лучше таки назначить Switch when released - если пользователь случайно на неё нажмёт, у него будет шанс убрать курсор не отпуская кнопку мыши и затем отпустить, при этом окно не закроется (ну так, как в Windows оно срабатывает).Jakob Brontfeyn писал(а):Мозги боятся, а глаза и руки делают,
пусть пока коряво сделано в диаграмме, но все вроде работает
проверяйте коллеги, сделано 3 независимых окна.
-
- professor
- Сообщения: 3391
- Зарегистрирован: 31 июл 2011, 23:05
- Награды: 2
- Версия LabVIEW: 12-18
- Благодарил (а): 49 раз
- Поблагодарили: 172 раза
- Контактная информация:
Re: Многооконность, проблемы
похоже на то, однако уже тогда люди думали об этом :) найдено на форуме ni, вроде как именно для шестёрки делали. но проверить открываемость не могу, только семёркой.Jakob Brontfeyn писал(а):Спасибо, действительно все упрощается, просто в LV6.0 такой функции нет,
учту для старших версий.
с другой стороны, проще ли этот вариант :)
а почему бы и не сделать :)Jakob Brontfeyn писал(а):Увы, это для каких то частных случаев, где данные собираютсяArtem.spb писал(а): ну и опять же, что вам мешает пусть даже в рамках одного vi разделить "опрос приборов" и интерфейс? два параллельных цикла.
в буфер и не анализируются в процессе, если у меня VI будет подвешен,
пусть даже опрос датчиков работает, можно аларм пропустить, ну не делать
же мне для обработки алармов еще и третий цикл а для пид-регулятора четвертый,
и кроме того висит не одно окно, а все окна.
по диагонали пробежал тему, на которую вы ссылались ранее, может в вашем случае и не стоит заморачиваться красивой интегированностью всего во всё, и выбранная модель является лучшей - раз вы постоянно что-то модифицируете, однако та самая система, скрин которой я присылал делает именно так - собирает данные с FP (по сетке), параллельно собирает данные с двух шустрых PCI-плат, на ходу детектирует спайки - и вот тут важно ухватить всё. а дальше можно это рисовать с задержками.
поток сбора данных имеет высокий приоритет, и просматривает все данные, а дальше найденные фрагменты ставятся в очередь, из которой они вытаскиваются интерфейсом и рисуются на графиках, распределяются по таблицам и пишутся в файлы.
-
Jakob Brontfeyn
- expert
- Сообщения: 1729
- Зарегистрирован: 28 фев 2008, 11:01
- Награды: 6
- Благодарил (а): 1 раз
- Контактная информация:
Re: Многооконность, проблемы
Послушайте Артем, я очень благодарен Вам за активное участие в дискусии,
но Вы хоть представляете себе, во что собираетесь меня втянуть.
Сделать простые вещи невероятно сложными.
Я и так слышу на работе почти каждый день, что никто другой кроме меня лабвью
программировать не может, как будто это моя вина, или вина лабвью. Поэтому у меня на каждой
установке работают некомпилированные VI, чтобы код был открыт, чтобы никто не мог
меня обвинить в сокрытии но-хау. Ситуации в Германии бывают очень жесткими, особенно,
если шеф понятия не имеет в твоей работе, ему главное чтобы установки надежно и круглосуточно
работали, хоть дос, хоть виндоус хоть бейсик, хоть лабвью, хоть готовые пакеты чужих фирм.
Лабвью изначально задуман был, как инструмент для
любого толкового инженера, и это очень было хорошо, а впоследнее время он все
больше превращается в громоздкую оболочку для высококвалифицированного программиста
с опытом работы в текстовых языках програмирования, серверами, сетью и т.д.
Что меня очень смущает, поэтому и не гонюсь за высокими версиями с их кодом активации
для каждого компьютера.
Только потому, что с лабвью лично я смог, без ложной скромности, решить те проблемы над которыми
годами бились, пытаясь применить готовые пакеты чужих фирм, началось его внедрение на нашей фирме и,
соответственно, я смог закрепится на работе.
Применение у нас идет только внутри, не делаются программы на заказ.
Далее, по поводу сворачивания окон, благодарю за новые примеры, сегодня их посмотрю,
трудно будет обьяснить, надо почувствовать на своей шкуре, но я попробую.
Понимаете, вот такие "псевдосвернутые окна" для меня милей, чем полностью свернутые, где ничего не видно.
Я должен бросив один только взгляд сразу отличать живого человека от мертвого или спящего,
а не подходить пытаться нащупать пульс и понять дышит он или нет, кстати вот здесь на эту тему
http://www.labviewportal.org/viewtopic. ... t=154#p340
Поэтому и все мои мониторы в помещениях лабораторий никогда не гаснут, несмотря на призыв экономить энергию.
Ни о каком "мертвом режиме" окна, а где то там внутри что то крутится, в моем случае, не может быть и речи.
Надеюсь, Вы меня правильно поняли.
но Вы хоть представляете себе, во что собираетесь меня втянуть.
Сделать простые вещи невероятно сложными.
Я и так слышу на работе почти каждый день, что никто другой кроме меня лабвью
программировать не может, как будто это моя вина, или вина лабвью. Поэтому у меня на каждой
установке работают некомпилированные VI, чтобы код был открыт, чтобы никто не мог
меня обвинить в сокрытии но-хау. Ситуации в Германии бывают очень жесткими, особенно,
если шеф понятия не имеет в твоей работе, ему главное чтобы установки надежно и круглосуточно
работали, хоть дос, хоть виндоус хоть бейсик, хоть лабвью, хоть готовые пакеты чужих фирм.
Лабвью изначально задуман был, как инструмент для
любого толкового инженера, и это очень было хорошо, а впоследнее время он все
больше превращается в громоздкую оболочку для высококвалифицированного программиста
с опытом работы в текстовых языках програмирования, серверами, сетью и т.д.
Что меня очень смущает, поэтому и не гонюсь за высокими версиями с их кодом активации
для каждого компьютера.
Только потому, что с лабвью лично я смог, без ложной скромности, решить те проблемы над которыми
годами бились, пытаясь применить готовые пакеты чужих фирм, началось его внедрение на нашей фирме и,
соответственно, я смог закрепится на работе.
Применение у нас идет только внутри, не делаются программы на заказ.
Далее, по поводу сворачивания окон, благодарю за новые примеры, сегодня их посмотрю,
трудно будет обьяснить, надо почувствовать на своей шкуре, но я попробую.
Понимаете, вот такие "псевдосвернутые окна" для меня милей, чем полностью свернутые, где ничего не видно.
Я должен бросив один только взгляд сразу отличать живого человека от мертвого или спящего,
а не подходить пытаться нащупать пульс и понять дышит он или нет, кстати вот здесь на эту тему
http://www.labviewportal.org/viewtopic. ... t=154#p340
Поэтому и все мои мониторы в помещениях лабораторий никогда не гаснут, несмотря на призыв экономить энергию.
Ни о каком "мертвом режиме" окна, а где то там внутри что то крутится, в моем случае, не может быть и речи.
Надеюсь, Вы меня правильно поняли.
-
- professor
- Сообщения: 3391
- Зарегистрирован: 31 июл 2011, 23:05
- Награды: 2
- Версия LabVIEW: 12-18
- Благодарил (а): 49 раз
- Поблагодарили: 172 раза
- Контактная информация:
Re: Многооконность, проблемы
беседа успешно покинула рамки вопроса сворачивания окна :)
хотя непонятно, зачем вы так много времени потратили на решение вопроса сворачивания, если свёрнутое окно вам не нужно.
хотя непонятно, зачем вы так много времени потратили на решение вопроса сворачивания, если свёрнутое окно вам не нужно.
я не планирую никого никуда втягивать, опять же "почему бы и да" было шуткой, а дальше говорилось о том, что каждому своёJakob Brontfeyn писал(а):Послушайте Артем, я очень благодарен Вам за активное участие в дискусии,
но Вы хоть представляете себе, во что собираетесь меня втянуть.
а пакеты сторонних производителей тоже с открытыми кодами дают? :), чтобы код был открыт, чтобы никто не мог меня обвинить в сокрытии но-хау.
мне кажется это нормальная ситуация, когда спец занимается своими вопросами, а другой спец - своими. общаясь с нашими (российскими) учёными я вникаю не только в суть задачи., но и в картингу науки в целом - и у нас учёный вынужден не только быть спецом в своей науке, но и искать деньги на исследования, потом самостоятельно собирать установку или находить того, кто её сделает, а потом ещё много чего.Ситуации в Германии бывают очень жесткими, особенно,
если шеф понятия не имеет в твоей работе, ему главное чтобы установки надежно и круглосуточно
работали, хоть дос, хоть виндоус хоть бейсик, хоть лабвью, хоть готовые пакеты чужих фирм.
вот не соглашусь. мне сложно взглянуть на систему глазами обычного "лаборанта", но мне кажется все эти експрессVI и прочие навороты вводятся именно для того, чтобы тот самый инженер мог быстрее собрать нужную ему установку. ну а все прочие навороты дают возможность продвинутому программеру наворотить много чего красивого, да и опять же, все навороты упрощают "красоту", вот вам приходится вызывать какие-то внешние библиотеки, чтоб банально свернуть окно, а в следующих версиях это делается одной "функцией" - и не надо знать текстовые языки.Лабвью изначально задуман был, как инструмент для любого толкового инженера, и это очень было хорошо, а впоследнее время он все больше превращается в громоздкую оболочку для высококвалифицированного программиста с опытом работы в текстовых языках програмирования, серверами, сетью и т.д.
в германии пиратки? :)Что меня очень смущает, поэтому и не гонюсь за высокими версиями с их кодом активации для каждого компьютера.
-
- VIP
- Сообщения: 1327
- Зарегистрирован: 03 фев 2010, 00:42
- Награды: 6
- Версия LabVIEW: 6.1 - 2024
- Откуда: Германия
- Благодарил (а): 1 раз
- Поблагодарили: 38 раз
- Контактная информация:
Re: Многооконность, проблемы
Ну, я, может слишком резко выразил свою мысль, но всё же если взглянуть на проблему со стороны, то очень уж больших изменений тут не требуется.Artem.spb писал(а): вы критикуете мою фразу отдельно от контекста. а контекст таков:
Суть в том, что в большой работающей системе пользователь наткнулся на довольно-таки частный случай, когда программа перестаёт работать при зажатии и удержании кнопок управления окном.
Проблем тут на самом деле две, и их надо рассматривать отдельно.
Первая проблема заключается в том, что часть циклов намертво останавливается, и это вызывает срабатывание таймаутов. Суть в том, что при зажимании кнопок блокируется поток UI. Да, пожалуй, тут проблемы отчасти в архитектуре, коих две - в программе присутствуют времякритичные части, и циклы общения с внешним железом зависимы от потока UI. Проблема решается выносом из времякритичных циклов всех элементов, чувствительных к блокировке этого потока. Полностью переделывать архитектуру не следует, я полагаю, в системе таких циклов не очень много. Но важно понять, что замена кнопок на свои собственные эту проблему не решит - как только где-либо в программе какой-либо элемент заблокирует поток UI, то программа остановит свою работу. Да и при дальнейшем развитии программы при увеличении количества блокирующих элементов мы будем всё больше тормозить поток UI и в какой-то момент таймауты начнут срабатывать в самый непредсказуемый момент - хуже проблемы и придумать сложно. Так что я бы первым делом проанализировал, какие критичные циклы и где останавливаются при зажимании кнопок и устранил это дело. Также тут может помочь просто вызов диалога в UI потоке и наблюдение за поведением программы в данной ситуации. Ну а проблему времякритичных участков никакое изменение архитектуры не решит, ибо Windows не есть система реального времени.
Вторая проблема заключается в том, что передняя панель перестаёт обновляться при зажимании этих самых кнопок. В какой-то мере это косметическая проблема (если устранён п.1 выше), но корень этой проблемы лежит довольно глубоко - на уровне взаимодействия операционной системы и LabVIEW. Тут Яков Иосифович идёт по непростому, но, пожалуй, верному пути замены проблемных кнопок на свои собственные. Конечно, интересно решить эту проблему на уровне ОС, и она требует более глубокого исследования, но навскидку я пока другого решения не вижу. Бонусом можно получить управляемое сворачивание/разворачивание/перемещение, которое для данной конкретной системы будет более удобно (как то - сворачивание не в панель, а просто уменьшение размеров, "прилепливание" одного окна к другому и их синхронное перемещение, и т.п). Тут довольно много кропотливой работы, но не на уровне изменения архитектуры, а просто надстройка существующей системы.
Полностью же менять архитектуру смысла не вижу, тем более, что п.2 это всё равно не решит, можно обойтись минимальным вмешательством, чтобы добиться стабильной работы в п.1. Я вообще сторонник принципа "работает-не трогай" в данном случае. Надо просто пофиксить то, что не работает. Но ещё раз - проблему остановки циклов при блокировке UI я бы решал в первую очередь - это более критично, и лишь потом занимался бы новой оконной системой.