Tab Control

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

Re: Tab Control

Сообщение Select »

Artem.spb писал(а): 16 май 2020, 21:20 Ииогда мне кажется, что ответы подбираются оп принципу "как бы возразить".
Вам рекомендуют не переделать все :vi: , а взять сделать ОДИН новый :vi: интерморда которого будет строкой индикаторов. И этот новый саб клонировать и отобразить десяток-другой раз на экране через саб-панели.
А уж откуда они будут брать данные - дело десятое. Сейчас индикаторы эти данные успешно получают, так что и в новые сабы переслать можно.
В ответах даю наводящую информацию и ход мысли.
Думал о таком варианте, чтоб отображать контролы каждой строки, мне нужно строить не иначе как 1 sub.vi к их источникам в виде длинной ленты, переход между строками происходит перемещением через боковой скрол. Это верно? Не так чтоб сложно, однако монотонный кусок работы с БД, мягко сказано, думаю как это можно малой кровью построить с применением уже существующей структуры от основной БД.
LabView 14,18
Аватара пользователя
Kosist

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

Re: Tab Control

Сообщение Kosist »

Select писал(а): 16 май 2020, 23:00В ответах даю наводящую информацию и ход мысли.
Думал о таком варианте, чтоб отображать контролы каждой строки, мне нужно строить не иначе как 1 sub.vi к их источникам в виде длинной ленты, переход между строками происходит перемещением через боковой скрол. Это верно? Не так чтоб сложно, однако монотонный кусок работы с БД, мягко сказано, думаю как это можно малой кровью построить с применением уже существующей структуры от основной БД.
Вы знаете как в :labview: работают очереди, user events, notifiers, и зачем они вообще нужны? Как запустить процесс паралельно и асинхронно? И как передавать данные в такой процесс? Как отображать виайку в сабпанели? Если нет - то для начала изучите темы, и поймете, как это можно организовать без массива строк и скролбаров.
У Вас уже есть виайки, которые пишут данные прямо на индикатор. А мы Вам говорим, что нужно индикаторы выкинуть из главного интерфейса, и вместо них сделать одну виайку которая их будет содержать один рядок этих индикаторов. Эту виайку Вы будете отображать 16 раз в сабпанели (или столько раз, сколько нужно). Эта виайка будет получать данные от Ваших существующих субвиаек, и будет их отображать. Но будет получать данные не "напрямую" через "проводки", а при помощи нужных механизмов передачи данных.
И такой рефакторинг можно сделать для всех участков программы, где у Вас отображаются одинаковые группы индикаторов/контролов.
Заскриньте кусок кода, который пишет данные сейчас на индикаторы. Не думаю, что там какой-то супер секретный код - просто хочеться понять принцип построения приложения. Да и вообще, какой шаблон программирования был выбран для всего приложения?
Мы делили апельсин - много наших полегло...
Аватара пользователя
Select
developer
developer
Сообщения: 281
Зарегистрирован: 12 дек 2017, 23:56
Версия LabVIEW: 18
Откуда: Врата надежды.
Поблагодарили: 2 раза

Re: Tab Control

Сообщение Select »

Kosist писал(а): 17 май 2020, 12:40
Select писал(а): 16 май 2020, 23:00В ответах даю наводящую информацию и ход мысли.
Думал о таком варианте, чтоб отображать контролы каждой строки, мне нужно строить не иначе как 1 sub.vi к их источникам в виде длинной ленты, переход между строками происходит перемещением через боковой скрол. Это верно? Не так чтоб сложно, однако монотонный кусок работы с БД, мягко сказано, думаю как это можно малой кровью построить с применением уже существующей структуры от основной БД.
Вы знаете как в :labview: работают очереди, user events, notifiers, и зачем они вообще нужны? Как запустить процесс паралельно и асинхронно? И как передавать данные в такой процесс? Как отображать виайку в сабпанели? Если нет - то для начала изучите темы, и поймете, как это можно организовать без массива строк и скролбаров.
Это все было построено и выставлено постами выше.
Каждый ряд контролов это не 1 и тот же источник, это разные источники объединенные в основной ФП, каждый ряд имеет свои уникальные VISA коммуникациями и т.п. Если я не понял Ваш совет, есть вероятность в Вашем недопонимании демонстрируемой логики фреймворка на видео, ко всему у меня присутствует процедура автоматического наполнения параметрами всех контролов и состояний коммуникаций основной панели.
В Вашем случае я введу переменные на видимую в субпанели часть, далее я поочередно переключаюсь к следующим рядам, как в этом случае все контролы рядов, их может быть до 144 в 1-й конфигурации, будут сохраняться в бегущей сессии в отдельном файле, и что произойдет при повторном запуске в случае обращения к файлу конфигурации?
Я возьму на время паузу, потом выложу что из всего этого получилось.
LabView 14,18
Аватара пользователя
Kosist

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

Re: Tab Control

Сообщение Kosist »

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

Re: Tab Control

Сообщение Select »

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

Re: Tab Control

Сообщение Select »

Уж очень не хочется возвести себе грабли в то, во что инвестирую уже очень много личного времени, поэтому терпеливо, следуя советам решил обратиться к NI библии
откуда следует:
....Используйте элементы управления Tab Control в тех случаях, когда требуется наложение элементов управления друг на друга из-за не­ хватки места на лицевой панели. Элемент управления Tab Control
состоит из страниц (pages) и закладок (tabs). Разместите объекты лицевой панели на каждой странице такого элемента управления, и затем пользуйтесь закладками в качестве селектора для
отображе­ния различных страниц.... Например, у Вас может быть ВП. который требует от пользователя вначале установить некоторые настройки перед тем как начнется испытание, затем позволяет пользователю модифици­ровать некоторые аспекты испытания по мере его выполнения и в завершение позволяет пользователю отобразить и сохранить только выбранные им данные...
Это именно мой случай.

Что касается применения Subpanel Control, есть серьезные ограничения, о которых я догадывался, самые основные заключаются в различиях свойств, суб панель это загружаемый узел в процессе обращения к нему определенной командой, после его останова или перехода к следующей области элементов, происходит останова с вычищением субпанели, контрол таб это терминал, и все размещенные в нем элементы на всем протяжении являются динамически активным массивом с которым можно производить все в.у. манипуляции.
LabView 14,18
Аватара пользователя
Select
developer
developer
Сообщения: 281
Зарегистрирован: 12 дек 2017, 23:56
Версия LabVIEW: 18
Откуда: Врата надежды.
Поблагодарили: 2 раза

Re: Tab Control

Сообщение Select »

IvanLis писал(а): 15 май 2020, 02:49 ... я рекомендовал сгруппировать в SubVI то, что у Вас на Pages отображается.
Иначе в чем необходимость TabControl...
Вот здесь если можно поподробней.
Что имелось ввиду под понятием "сгрупировать ...
У меня в таб панели контролы от 145 sub.vi. могут наполняться переменными в запущенном процессе основной :vi: далее я могу применить без останова основного процесса запуск тех sub.vi , которые поочередно в соответствии со сценарием должны отработать свои циклы и выгрузиться или перейти в ждущий режим (прерывание).
LabView 14,18
Аватара пользователя
IvanLis

Activity Professionalism Tutorials Gold Man of the year 2012
Автор
guru
guru
Сообщения: 5462
Зарегистрирован: 02 дек 2009, 17:44
Награды: 7
Версия LabVIEW: 2015, 2016
Откуда: СССР
Благодарил (а): 28 раз
Поблагодарили: 86 раз

Re: Tab Control

Сообщение IvanLis »

Select писал(а): 18 май 2020, 00:16 Уж очень не хочется возвести себе грабли в то, во что инвестирую уже очень много личного времени, поэтому терпеливо, следуя советам решил обратиться к NI библии
У нас видимо разное вероисповедание :wink: , я бы рекомендовал почитать LabVIEW: стиль программирования | Блюм Питер.
Select писал(а): 18 май 2020, 00:16Что касается применения Subpanel Control, есть серьезные ограничения, о которых я догадывался, самые основные заключаются в различиях свойств, суб панель это загружаемый узел в процессе обращения к нему определенной командой, после его останова или перехода к следующей области элементов, происходит останова с вычищением субпанели, контрол таб это терминал, и все размещенные в нем элементы на всем протяжении являются динамически активным массивом с которым можно производить все в.у. манипуляции.
Напоминает "разговор немого с глухим" :cantbe: .
Останавливать или не останавливать поток (SubVI) при выгрузке FP из SubPanel решать только Вам.
TabControl это костыль - сделать по быстрому, я сам периодически использую, но если хотите получить несколько большее, то SubPanel...
Вы в праве делать, так как удобно Вам и остаться на своем уровне, либо пойти дальше и попытаться разобраться с тем, что Вам рекомендуют. Именно разобраться самостоятельно, смоделировать и реализовать различные ситуации, а не троллить пользователей форума.

То что Вы считаете себя гениальным программистом, гордитесь своим детищем и у Вас нет желания признать ошибки и все переделывать, это понятно. Зачастую, из-за неправильно выбранного шаблона программирования на начальном этапе (по разным причинам), приходится переделывать приложение несколько раз. Но такова реальность :wink:
Аватара пользователя
Kosist

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

Re: Tab Control

Сообщение Kosist »

Select писал(а): 18 май 2020, 00:16Что касается применения Subpanel Control, есть серьезные ограничения, о которых я догадывался, самые основные заключаются в различиях свойств, суб панель это загружаемый узел в процессе обращения к нему определенной командой, после его останова или перехода к следующей области элементов, происходит останова с вычищением субпанели, контрол таб это терминал, и все размещенные в нем элементы на всем протяжении являются динамически активным массивом с которым можно производить все в.у. манипуляции.
Вот откройте свойства :labview: Tools -> Options, и на секундочку представьте, как это самое окно настроек сделано. Представьте что это самое окно написано в :labview: . Куча контролов (да, они не отображают динамические данные, но ведь их читают/записывают в ini файл) - как это все может быть сделано? Как бы Вы все это написали? Так, как сейчас - с одним табом, и кучей контролов; или же при помощи одной субпанели, и виаек которые там бы отображались?
Или например вот этот скрин - https://www.aquastyl.sk/en/il-100-2017. Верхняя, нижняя, боковая панель - это сабпанели, в которых отображаются кнопки, статусы, и т.д. Таб контрол - содержит на каждой вкладке свои сабпанели. Более того, та вкладка которая видна на скрине - содержит 6 сабпанелей, каждая из которых отображает лишь один индикатор - который получает данные из своего процесса. И все работает динамически, обновляется при измерении - все, как надо. И о каких ограничениях можно потом говорить?
Мы делили апельсин - много наших полегло...
Аватара пользователя
Select
developer
developer
Сообщения: 281
Зарегистрирован: 12 дек 2017, 23:56
Версия LabVIEW: 18
Откуда: Врата надежды.
Поблагодарили: 2 раза

Re: Tab Control

Сообщение Select »

IvanLis писал(а): 18 май 2020, 14:20 ....
У нас видимо разное вероисповедание :wink: , я бы рекомендовал почитать LabVIEW: стиль программирования | Блюм Питер...
.....
Напоминает "разговор немого с глухим" :cantbe: .
Останавливать или не останавливать поток (SubVI) при выгрузке FP из SubPanel решать только Вам.
TabControl это костыль - сделать по быстрому, я сам периодически использую, но если хотите получить несколько большее, то SubPanel...
Вы в праве делать, так как удобно Вам и остаться на своем уровне, либо пойти дальше и попытаться разобраться с тем, что Вам рекомендуют. Именно разобраться самостоятельно, смоделировать и реализовать различные ситуации, а не троллить пользователей форума.

То что Вы считаете себя гениальным программистом, гордитесь своим детищем и у Вас нет желания признать ошибки и все переделывать, это понятно. Зачастую, из-за неправильно выбранного шаблона программирования на начальном этапе (по разным причинам), приходится переделывать приложение несколько раз. Но такова реальность :wink:
Далеко не в том возрасте чтоб страдать троллингом, зачем пилить сук на котором сижу, если все воспринимается как троллинг, ну расстреляйте меня :suicide:
Относительно трактатов и толкований NI .... Пути к NI неисповедимы...
Если кто сумеет мне объяснить чем в моей ситуации терминал Tab Control хуже чем метод Sub Panel, буду бескрайне благодарен.
Kosist?
Вот откройте свойства :labview: Tools -> Options, и на секундочку представьте, как это самое окно настроек сделано. Представьте что это самое окно написано в :labview: . Куча контролов (да, они не отображают динамические данные, но ведь их читают/записывают в ini файл) - как это все может быть сделано? Как бы Вы все это написали? Так, как сейчас - с одним табом, и кучей контролов; или же при помощи одной субпанели, и виаек которые там бы отображались?
Теряюсь в догадках, допустим я смогу организовать через 1 субпанель с одной строкой наполнение всех контролов разными переменными. Но далее мне нужно сохранить состояние ФП во внешний файл, да и обращаться к нему в последствии для запуска разных конфигураций. Но даже если такое и возможно, будет жутко не удобно отслеживать и исправлять алгоритм конфигурации с одной строкой. Это как одевать трусы через голову.

С Tab Control все оказалось до неприличия просто.
На все вложения в Tab Control нельзя применять свойства задаваемые Reorder командой меню Group и Lock
Если вложений не так чтоб очень и они не перегружены графиками это не особо чувствительно. В моем случае !2304 контрола с индикацией подключенных терминалами к 144 sub.vi. :crazy:
Отменил эти свойства и все летает.
Пока что я с трудом представляю всю логику работы своего кода с применением суб панелей, построил модель в минимальном варианте на стороне и все заругалось. Пока что не нахожу этому применения.
Всех благодарю за участие.
p2os9c0NXC8
LabView 14,18
Аватара пользователя
IvanLis

Activity Professionalism Tutorials Gold Man of the year 2012
Автор
guru
guru
Сообщения: 5462
Зарегистрирован: 02 дек 2009, 17:44
Награды: 7
Версия LabVIEW: 2015, 2016
Откуда: СССР
Благодарил (а): 28 раз
Поблагодарили: 86 раз

Re: Tab Control

Сообщение IvanLis »

Select писал(а): 19 май 2020, 19:44 Если кто сумеет мне объяснить чем в моей ситуации терминал Tab Control хуже чем метод Sub Panel, буду бескрайне благодарен.
Все что у Вас на видео, можно сделать используя 16 SubPanel и одной реентеральной SubVI :crazy:
---------------
Мне например необходимо управлять и наблюдать портами: 1, 17, 33, 49, 65, 81, 97,113 и 129, остальные на конкретный момент не задействованы.
По Вашей логике, я что должен делать? Используя SubPanel, я могу сделать на одном экране....

Я не знаю как у Вас там все реализовано, но возникает вопрос (не касающейся данной темы), что за порты и интерфейс Вы используете, если все они доступны на COM3 ?

Опять же, не зная исходников.... что делают остальные 135 SubVI (144 - 9 задействованых)? Используя динамическую загрузку, можно держать в памяти только необходимые потоки.

-----------
Просто пока Вы защищаете (видимо свой первый серьезный проект), а все аргументы сводятся к
Select писал(а): 19 май 2020, 19:44С Tab Control все оказалось до неприличия просто.
Почему кто-то должен Вам, что-то доказывать....
IvanLis писал(а): 18 май 2020, 14:20Вы в праве делать, так как удобно Вам и остаться на своем уровне, либо пойти дальше и попытаться разобраться с тем, что Вам рекомендуют.
Обычно по окончании какого-нибудь проекта, в голове постоянно крутятся мысли: что было сделано не так как хотелось; как это делают другие; если мне придется снова, то как я это сделаю; и т.д.
У Вас же абсолютная уверенность, что сделано все эталонно и никакой доработки не требуется.
Аватара пользователя
Select
developer
developer
Сообщения: 281
Зарегистрирован: 12 дек 2017, 23:56
Версия LabVIEW: 18
Откуда: Врата надежды.
Поблагодарили: 2 раза

Re: Tab Control

Сообщение Select »

IvanLis писал(а): 20 май 2020, 23:30
Я не знаю как у Вас там все реализовано, но возникает вопрос (не касающейся данной темы), что за порты и интерфейс Вы используете, если все они доступны на COM3 ?
Опять же, не зная исходников.... что делают остальные 135 SubVI (144 - 9 задействованых)? Используя динамическую загрузку, можно держать в памяти только необходимые потоки.
Раз уж так поставлен вопрос, наверное логично было с самого начала дать описание проекта, что выходит далеко за рамки темы Лицевой панели, и той ерунды из за которой здесь весь сыр бор.
Таким образом предлагаю пройти всем сюда и более детально ознакомиться с проектом.
Так вышло что у меня идет обмен знаниями и переписка с разработчиками SCADA и я просто взял мое самое последнее описание скопировал и воткнул туда.
Лицевая панель этого инструментария это не просто абстрагированный дизайн, а концепт интуитивного восприятия среды разработки для автоматики и робототехники, который многократно был переработан и именно в таком виде был утвержден для юзеров.
К слову юзеры ни малейшего представления не имеют о языках программирования как и опыта в разработке автоматики. Они достаточно опытные железячники и работают на низком аналоговом уровне с периферией и драйверами устройств.
LabView 14,18
Ответить
  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Лицевая панель»