[phpBB Debug] PHP Warning: in file /includes/bbcode.php on line 390: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
LabVIEW Portal • View topic - Трудности использования SubVi

Трудности использования SubVi

Простейшие вопросы в области инженерной разработки

Трудности использования SubVi

Postby Ermak337 on 28 Mar 2017, 14:05

День добрый, уважаемые знатоки.

Меня мучает проблема следующего характера: очень часто складывается ситуация, что при выполнении тех или иных задач (чаще связаных с графикой, листбоксами или Вейформграфами) приходится оперировать со свойствами объектов, причем код получается внушительных размеров и вызываться должен многократно во многих местах программы. Моя головная боль, что я не могу нормально упаковать такой код в SubVi.

Передача ссылок в SubVi ни к чему особо хорошему не приводит по следующим причинам: 1) не выполняются никакие события => невозможно сделать готовую библиотеку стандартной работы с графикой на базе SubVi; 2) Случаются утечки памяти и конфликты типизации при работе с Вейформграфами. 3) SubVi со ссылками в качестве аргументов невозможно инлайнить вообще и скорость их выполнения выбешивает; 4) каждый раз увазяать ниточками и передавать по 20 ссылок в виайку некруто, а попытки создать некий кластер, содержащий ссылки на все нужные мне элементы управления, и передавать уже именно его добром не закончились (а именно была ругань со стороны SubVi на неопределенные типы, с которыми она знаться не желает. Типы проставлял руками согласно типам объектов - не помогло)

В связи с вышеизложенным вопрос: могу я как-то добраться до внутренних свойств у объектов лицевой панели, дабы перетаскивать непосредственно их? Особо это касается Листбоксов, так как они вообще не оборудованы методами обработки содержимого, а удобство использования публичных свойств оставляет желать лучшего.

Ну или как еще можно свернуть в SubVi нечто, что оперирует со свойствами объектов лицевой панели таким образом, чтобы это выполнялось достаточно быстро.
Версия LabView 2010

Буду благодарен за любые мнения и советы. Заранее спасибо
Ermak337
interested
interested
 
Posts: 9
Joined: 10 Apr 2013, 09:13
LabVIEW Version: 10
Karma: 0

Re: Трудности использования SubVi

Postby IvanLis on 28 Mar 2017, 14:48

Для доступа к свойствам объекта в SubVI в него нужно передавать ссылку (вы об этом в принципе знаете).
Чтобы не тянуть 20 ссылок, объединяйте их в кластер (тоже делаете).

Единственная проблема, которая мне видится, это неправильная организация именно кластера. Для этого делается control (Type Def) и сохраняется, далее в проекте используется именно он, что бы структура везде была типизирована. Это позволит решить множество проблем при модифицировании.

-----------
Свое мнение по поводу всего остального опущу.
Знание нескольких принципов освобождает от знания многих фактов!





User avatar
IvanLis
professor
professor
 
Posts: 4489
Joined: 02 Dec 2009, 17:44
Location: СССР
Medals: 7
Activity (2) Professionalism (1) Tutorials (1) Gold (1) Man of the year 2012 (1)
Автор (1)
LabVIEW Version: 2010
Karma: 697
hardware VIP bloggers teachers

Re: Трудности использования SubVi

Postby Artem.spb on 28 Mar 2017, 14:56

Artem.spb
expert
expert
 
Posts: 1241
Joined: 31 Jul 2011, 23:05
Medals: 2
Activity (1) Автор (1)
LabVIEW Version: 12,14,15
Karma: 218
CLD hardware I/O VIP freelance

Re: Трудности использования SubVi

Postby Ermak337 on 28 Mar 2017, 15:31

На счет typedef недопонял. Что это и где? Заранее спасибо
Ermak337
interested
interested
 
Posts: 9
Joined: 10 Apr 2013, 09:13
LabVIEW Version: 10
Karma: 0

Re: Трудности использования SubVi

Postby Artem.spb on 28 Mar 2017, 15:37

Artem.spb
expert
expert
 
Posts: 1241
Joined: 31 Jul 2011, 23:05
Medals: 2
Activity (1) Автор (1)
LabVIEW Version: 12,14,15
Karma: 218
CLD hardware I/O VIP freelance

Re: Трудности использования SubVi

Postby dadreamer on 28 Mar 2017, 15:47

User avatar
dadreamer
doctor
doctor
 
Posts: 2923
Joined: 17 Feb 2013, 16:33
Medals: 4
Activity (1) Professionalism (1) Автор (2)
LabVIEW Version: 2.5 — 2017
Karma: 711
I/O VIP vision internet

Re: Трудности использования SubVi

Postby Ermak337 on 29 Mar 2017, 14:24

Господа, еще раз. При засовывании в кластер ссылок на такие динамически изменяемые объекты, как Вейформграфы, о да, в пределах окна я могу использовать строгие ссылки на данные окна, разворачивать их из кластера и все такое. Но мне лично никаким способом не удалось передать кластера такого вида в SubVi (о чем и тема), так как ссылки получаются не строгими на сколько я понимаю и далеко не все свойства можно будет менять. И с методами та же байда.
Даже к свойству Value доступ будет только через вариант, а про остальное я вообще молчу.

На счет можно будет инлайнить. Уважаемый dadreamer, попробуй выставить в VI propertis/Execution параметр inline для чего либо, содержащего на входе кластер из двух и более разнородных ссылок, а потом рассказывай. И 25000 double это тоже не баран чихнул, так что инлайнить я вынужден. Если же вы рассказать мне хотите, что проперти мне не нужны, то расскажите заодно как мне выводить на график (который на мордопанели) данные, полученные на основе этих 25000 точек, с учетом того что я вынужден пересчитывать их вручную, переставлять шкалы, выставлять смещение и умножение и еще кучу разных вещей. И на 200 разных событий обработку плотов по мыши тоже бы хотелось субвиайкой, а плоты - это снова свойства. Сказать "не используй в подпрограммах ничего, кроме самых простых действий" всякий может, но толку от таких подпрограмм?

По поводу "вынеси GUI отдельно" легко говорить тем, кто с сигналами не работает. А я не могу выплюхивать результаты их обработы как цифорки: надпись "Недостаточно памяти для завершения операции" не радует меня ни сколько. И для вывода их в мне кучу промежуточных преобразований надо делать. Однотипных. Часто-часто.... Ну вы поняли о чем я

Зы: Всем за поддержку спасибо. Решением своей проблемы выбрал тупую копипасту кусков кода. Только так и никак иначе увы, а очень жаль. LabView хороший язык для своих задач, а все извращенцы вроде меня, которые пытаются совместить на нем реализацию сложных пользовательских интерфейсов и реальную обработку сигналов получат все, что полагается за это получить.
Ermak337
interested
interested
 
Posts: 9
Joined: 10 Apr 2013, 09:13
LabVIEW Version: 10
Karma: 0

Re: Трудности использования SubVi

Postby Artem.spb on 29 Mar 2017, 15:33

Artem.spb
expert
expert
 
Posts: 1241
Joined: 31 Jul 2011, 23:05
Medals: 2
Activity (1) Автор (1)
LabVIEW Version: 12,14,15
Karma: 218
CLD hardware I/O VIP freelance

Re: Трудности использования SubVi

Postby dadreamer on 29 Mar 2017, 15:53

Attachments
2017-03-29_17-21-43.jpg
User avatar
dadreamer
doctor
doctor
 
Posts: 2923
Joined: 17 Feb 2013, 16:33
Medals: 4
Activity (1) Professionalism (1) Автор (2)
LabVIEW Version: 2.5 — 2017
Karma: 711
I/O VIP vision internet

Re: Трудности использования SubVi

Postby Ermak337 on 29 Mar 2017, 16:52

В ближайшее время выкину снапшоты того, что пробовал и что из этого вышло. Сейчас сделать не могу, ибо попытки успехом не увенчались и как следствие не выжили. Но набрать руками кластер для тайпдефа из референсов... А вы пробовали? Там штуковины типо локал вариэйблов. Я пораждал от них индикаторы и складывал в кластер - к добру не привело. То есть в пределах окна свертывается и развертывается, но не далее.

Неименованными кластерами религия пользоваться не позволяла - так что извеняйте. Но потом, науки ради, может я и попробую (но пользоваться неименованными кластерами все равно не буду - при наличии однотипных параметров в кластере немыслимо для меня это)

Я извиняюсь, что своевременно не сделал все необходимые снапшеты. Воспроизведу в течении пары дней (сейчас очень все срочно и напряжно. Сначала результат, потом чистая наука)

dadreamer, еще раз. У меня в данный момент массив длинной 17000 точек на 200 параметров (двумерный массив). Он бывает и другим (больше или меньше) и я его должен выводить в форме графиков, с возможностью динамического масштабирования. Такое кол-во точек ни в один граф вывести нельзя - по памяти отвалимся, да и не нужно - видно их не будет. Поэтому у меня идет преобразование до разрешения 600х200 из рассматриваемого куска и выкидываю на график уже это и живем. При этом мне надо согласно масштабированию накрутить график в смысле состояния его офсетов, мултиплеров и пределов. Я лишь говорю, что было бы хорошо мочь менять проперти в SubVI и это сэкономило бы мне кучу кода.

Кстати, адекватные люди подсказали решение: запустил цикл, в котором все критичные мне проперти всех нужных контролов постоянно переустанавливаются переменными вида кластеров и ифами вызываются методы. В субвиайках делаю что хочу, а на выводе нужные состояния вгужаю в эти перемннные. Работает без проблем, хотя по вашей религии может и неправильно
Ermak337
interested
interested
 
Posts: 9
Joined: 10 Apr 2013, 09:13
LabVIEW Version: 10
Karma: 0

Re: Трудности использования SubVi

Postby Borjomy_1 on 29 Mar 2017, 17:38

Ermak337, Так в кластер надо реальные референсы ваших контролов закидывать, т.е перед передачей в SubVI ее надо заполнять. А так структура обеспечивает только контроль типов и соответственно доступ к определенных методов для контролов.
Borjomy_1
expert
expert
 
Posts: 1766
Joined: 28 Jun 2012, 09:32
Location: город семи холмов
Medals: 3
Activity (1) Professionalism (1) Silver (1)
LabVIEW Version: 4-8.6,9-14
Karma: 309
VIP

Re: Трудности использования SubVi

Postby IvanLis on 29 Mar 2017, 18:14

Attachments
Control.ctl
(7.21 KiB) Downloaded 23 times
Untitled.vi
LV2010
(13.43 KiB) Downloaded 24 times
Untitled_SubVI.vi
(15.47 KiB) Downloaded 25 times
Знание нескольких принципов освобождает от знания многих фактов!





User avatar
IvanLis
professor
professor
 
Posts: 4489
Joined: 02 Dec 2009, 17:44
Location: СССР
Medals: 7
Activity (2) Professionalism (1) Tutorials (1) Gold (1) Man of the year 2012 (1)
Автор (1)
LabVIEW Version: 2010
Karma: 697
hardware VIP bloggers teachers

Re: Трудности использования SubVi

Postby Artem.spb on 29 Mar 2017, 19:07

Attachments
__main__Inline__Blenderd.png
Artem.spb
expert
expert
 
Posts: 1241
Joined: 31 Jul 2011, 23:05
Medals: 2
Activity (1) Автор (1)
LabVIEW Version: 12,14,15
Karma: 218
CLD hardware I/O VIP freelance

Re: Трудности использования SubVi

Postby Borjomy_1 on 29 Mar 2017, 21:23

Есть еще один вариант: использование Shared Variables. Контролам назначается переменная через Data Binding в их свойствах. Тогда никаких референсов тянуть не надо. А если еще данные группировать в кластеры, то получается весьма компактная конструкция, без этих извращений с референсами.
Но вообще - если индицированных данных много, то что-то с программой.
Borjomy_1
expert
expert
 
Posts: 1766
Joined: 28 Jun 2012, 09:32
Location: город семи холмов
Medals: 3
Activity (1) Professionalism (1) Silver (1)
LabVIEW Version: 4-8.6,9-14
Karma: 309
VIP

Re: Трудности использования SubVi

Postby Vitekkz88 on 30 Mar 2017, 06:54

Инженер - это открыто светящийся интеллект, свободный и не обидный юмор, это легкость и широта мысли...Это воспитанность, тонкость вкусов, хорошая речь, плавно согласованная и без сорных словечек...
-А. И. Солженицын
User avatar
Vitekkz88
leader
leader
 
Posts: 945
Joined: 21 Jan 2014, 15:45
Location: Томск
Medals: 3
Activity (1) Silver (1) Автор (1)
LabVIEW Version: 12,13,14
Karma: 258
hardware I/O VIP

Next

Return to Для чайников

Who is online

Users browsing this forum: No registered users and 15 guests

cron