редактирование объекта LabVIEW

Простейшие вопросы в области инженерной разработки
Аватара пользователя
gva62
beginner
beginner
Сообщения: 35
Зарегистрирован: 21 апр 2017, 23:00
Версия LabVIEW: 8.6
Откуда: Харьков, Украина
Контактная информация:

редактирование объекта LabVIEW

Сообщение gva62 »

Ребята, столкнулся с необходимостью (subj): никогда прежде этого не делал - поэтому вопрос и в этот раздел!
(извиняюсь, если "не в тему")

... итак, появилась необходимость кардинально изменить родной объект среды LabVIEW (добавить методы и/или "подредактировать" имеющиеся).
Вопрос: позволяет ли LabVIEW проделать это над собой встроенными средствами?
Если ДА, то какими (как)?
Аватара пользователя
Juri
I/O
I/O
Сообщения: 263
Зарегистрирован: 19 апр 2017, 23:06
Версия LabVIEW: 2021
Благодарил (а): 13 раз
Поблагодарили: 6 раз

Re: редактирование объекта LabVIEW

Сообщение Juri »

vi с объектом в студию!
По моему админам хорошо бы на странице создания темы повесить плашку с большими красными буквами "Хочешь помощи? Выкладывай vi со своим примером"

А по сути вопроса, то можно сделать объект, который будет содержать исходный объект и в довесок нужные вам методы. Либо вообще сделать xcontrol
Аватара пользователя
gva62
beginner
beginner
Сообщения: 35
Зарегистрирован: 21 апр 2017, 23:00
Версия LabVIEW: 8.6
Откуда: Харьков, Украина
Контактная информация:

Re: редактирование объекта LabVIEW

Сообщение gva62 »

Usss писал(а):vi с объектом в студию!
По моему админам хорошо бы на странице создания темы повесить плашку с большими красными буквами "Хочешь помощи? Выкладывай vi со своим примером"

А по сути вопроса, то можно сделать объект, который будет содержать исходный объект и в довесок нужные вам методы. Либо вообще сделать xcontrol
Добрый день, Usss !

Спасибо за Ваш "ответ" ))
... а причем тут, собственно, "vi со своим примером"?
Нет никакого VI, да еще и со своим примером: вообще-то, "ожидается" пример Ваш (если уж говорить в Ваших терминах).

Я же внятно написал: никогда не делал ничего подобного (не имею представления!) - только создавал "стандартные" приложения с набором из имеющейся
в среде палитры объектов от производителя G!
Отсюда вопрос: можно ли?
(Вы ответили что ДА, можно: "можно сделать объект, который будет содержать исходный объект и в довесок нужные вам методы" именно это мне и нужно!)
Тогда вопрос КАК: куда переходить; что вызывать (какие встроенные средства от NI); наконец (это - в идеале) ГДЕ прочесть об этом?
А Вы мне VI предлагаете "в студию" )))
До этого еще ой как далеко!..

Единственное, что я могу Вам сказать, какой именно объект хочу править, в каком направлении и для чего ))

С уважением к Вам ))
:drink:

P.S. собственно, потому-то и вопрос в этом разделе: для чайников!
P.P.S. думаю, XControl мне не подходит, так как там предполагается работа с существующими объектами G - создание из них новой, более сложной конструкции (без модификации их самих);
моя же задача "залезть внутрь" объекта и подредактировать его работу!
КАК???
Последний раз редактировалось gva62 16 дек 2018, 16:26, всего редактировалось 1 раз.
Alex Dem
assistant
assistant
Сообщения: 119
Зарегистрирован: 06 май 2015, 22:24
Версия LabVIEW: 2014, 2018
Благодарил (а): 1 раз
Поблагодарили: 1 раз
Контактная информация:

Re: редактирование объекта LabVIEW

Сообщение Alex Dem »

gva62 писал(а): Единственное, что я могу Вам сказать, какой именно объект хочу править, в каком направлении и для чего ))
Так с этого и нужно начинать, с конкретики.
Artem.spb

Activity Автор
professor
professor
Сообщения: 3393
Зарегистрирован: 31 июл 2011, 23:05
Награды: 2
Версия LabVIEW: 12-18
Благодарил (а): 49 раз
Поблагодарили: 172 раза
Контактная информация:

Re: редактирование объекта LabVIEW

Сообщение Artem.spb »

gva62 писал(а): моя же задача "залезть внутрь" объекта и подредактировать его работу!
КАК???
Внутрь, контрола (например, numeric) вы не сможете залезть.
Можно сменить его (контрола) внешний вид, но функций новых это не добавит.
Можно как раз сделать уже рекомендованный XC, который ДОБАВИТ функций к существующим элементам. Это будет надстройка, но делающая то, что требуется.
Аватара пользователя
gva62
beginner
beginner
Сообщения: 35
Зарегистрирован: 21 апр 2017, 23:00
Версия LabVIEW: 8.6
Откуда: Харьков, Украина
Контактная информация:

Re: редактирование объекта LabVIEW

Сообщение gva62 »

Проблема в том, что мне нужно копнуть куда глубже! (((

Если уж все вы хотите конкретики - извольте: "XY Graph" ожидает на своем входе ВЕСЬ МАССИВ значений, описывающих кривую. При появлении новой точки этот массив увеличивается на 1 и график полностью (!) перестраивается
((
К чему это приводит?
Поясню: если этот массив состоит из десятков тысяч точек и продолжает расти - происходит коллапс производительности программы!
Она только тем и занята, что "гоняет" в цикле все разбухающий массив и ПЕРЕстраивает этот график ((

Вот и хотелось бы "переделать" этот бъект, модифицировав в нем работу с данными: на входе только очередная точка (пара (XY) и ее N-индекс в двумерном массиве, который есть частью самого "XY Graph"). В таком раскладе коллапса не будет, как я понимаю.
Artem.spb

Activity Автор
professor
professor
Сообщения: 3393
Зарегистрирован: 31 июл 2011, 23:05
Награды: 2
Версия LabVIEW: 12-18
Благодарил (а): 49 раз
Поблагодарили: 172 раза
Контактная информация:

Re: редактирование объекта LabVIEW

Сообщение Artem.spb »

gva62 писал(а):Проблема в том, что мне нужно копнуть куда глубже! (((.
Именно, копать надо глубже.

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

Вы хотите Chart со свойствами XY, но возникает вопрос: а зачем вам на графике десятки тысяч точек? вы их всё равно не разглядите.
Если прям очень надо, то добавляйте не по одной, а десятками-сотнями (зависит от частоты), тогда мыссивы будут выделяться реже.
Но я бы ещё ограничил длину массива: при добавлении новых точек отбрасывать старые, тогда память не будет переполняться.
Alex Dem
assistant
assistant
Сообщения: 119
Зарегистрирован: 06 май 2015, 22:24
Версия LabVIEW: 2014, 2018
Благодарил (а): 1 раз
Поблагодарили: 1 раз
Контактная информация:

Re: редактирование объекта LabVIEW

Сообщение Alex Dem »

gva62, попробуйте отключить Anti-aliased для графика, очень затратная операция.
Проверил только что на своем 8700К, миллион точек со случайной генерацией на XY выводятся за 13-14 мс, при включении сглаживания - ступор приложения полный.
Аватара пользователя
gva62
beginner
beginner
Сообщения: 35
Зарегистрирован: 21 апр 2017, 23:00
Версия LabVIEW: 8.6
Откуда: Харьков, Украина
Контактная информация:

Re: редактирование объекта LabVIEW

Сообщение gva62 »

Artem.spb, спасибо за Ваш ответ! ))

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

Языки программирования (ВСЕ!!!), это не цель, а средство: если они с чем-то "не справляются", это вовсе не значит, что этого
сделать нельзя: это, в первую очередь, может означать, что свои задачи мы пытаемся решить не в той программной среде (и только!).
А говорить о том, что чего-то запрограммировать нельзя (тем более, когда речь идет о простых вещах), как-то не приходится.

Возьмите старые, не относящиеся к ООП языки: в их терминах данная задача решалась бы в два счета и без привлечения форума )))
Скорее, с привлечением совершенно банальных средств программирования: мне достаточно было бы создать статический массив
(не переопределять его и не переписывать тысячи раз в секунду), и всего лишь заменять в нем значение N-ой пары XY (и все!!!).
И при этом поменять атрибуты цвета всего-то одного (очередного, обусловленного значениями XY) пикселя на выделенной области
экрана.
ВСЕ!
...ни о каком коллапсе нет речи ваще!
(что и делали всегда, до появления этого пресловутого G#)

А теперь мне предлагают гонять в памяти кучу "мусора" (присваивая/переприсваивая десятки тысяч ненужных значений) и перестраивать график...
чтобы добавить всего-то одну точку...
:suicide:
... при этом вопрошая: "ну, дорогой, а зачем тебе остальные, ты все равно их не видишь?"

Нет, господа, это совершенно не конструктивный подход!
Отвечу "зачем", чтобы тут меня (ненароком) в очередной раз не выставляли *********
А затем, что я в НИИ изучаю быстротекущие процессы, и чтобы не пропустить когда оно "выстрелит" (пусть даже парой точек), я должен видеть
весь массив в режиме реального времен!

Так что, прошу Вас перестать рассказывать что мне надо, а что нет, сосредоточившись на вопросе КАК это сделать (именно в этом и состоит
задача программиста, а вовсе не наоборот).

С уважением ко всем ... уважающим и мое мнение тоже!
:drink:
Alex Dem
assistant
assistant
Сообщения: 119
Зарегистрирован: 06 май 2015, 22:24
Версия LabVIEW: 2014, 2018
Благодарил (а): 1 раз
Поблагодарили: 1 раз
Контактная информация:

Re: редактирование объекта LabVIEW

Сообщение Alex Dem »

Очень странно определять момент наступления какого-либо события наблюдая в "реальном" времени визуально массив из нескольких десятков тысяч точек на графике, на котором их все равно нельзя отобразить из-за отсутствия этих самых точек на мониторе в таком количестве. Вот поэтому и возникают вопросы "зачем" и "почему", а также просьбы привести пример того, что уже сделано и что не работает. Неужели так трудно заменить часть получения данных адекватной симуляцией (моделью, генератором) и выложить vi? Если трудно, тогда практически невозможно помочь.
Аватара пользователя
gva62
beginner
beginner
Сообщения: 35
Зарегистрирован: 21 апр 2017, 23:00
Версия LabVIEW: 8.6
Откуда: Харьков, Украина
Контактная информация:

Re: редактирование объекта LabVIEW

Сообщение gva62 »

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

Если, все-таки задачу (что и должно быть на этом форуме), то вопрос ставится так: возможно ли "вспороть брюхо" этому объекту (средствами G#, как я понимаю из параллельной беседы на форуме ni.com) и заставить работать его как в старые добрые времена: приходит пара значений - ставим их на экран подсветкой точки и баста! и никаких многотысячных массивов туда-сюда от нечего делать!. Если таки можно, буду признателен тому, кто укажет вектор куда надо двигаться (в каком направлении - дальше уже сам разберусь). Потому, что вопрос не праздный (в среде, где я работаю) и многих волнует... Я сначала думал, что чего-то не понимаю (не знаю) и выбираю не тот объект для вывода графика (ну, мало ли...), или не так с ним работаю... (т.е. все время грешил на СВОЮ неосведомленность), но когда выяснил из многих источников, что похоже, дело обстоит именно так - был просто в шоке: как можно выпускать подобный продукт на рынок??? Если банальная и весьма штатная вещь (как построение кривой) ЖРЕТ ВСЕ РЕСУРСЫ и потому, что совершенно криво написана, а не потому, что так надо?!
В старые добрые времена, когда не было возможности за 2 минуты (вытащив на front-panel) 2 объекта: некий источник сигнала и "прибор-регистратор" в виде все той же XY-Graph получить почти готовый продукт (ну, так, навскидку), а приходилось на все это потратить пару недель... и в голову не приходила подобная чушь собачья задействовать динамический массив и гонять его циклом от делать нечего (и это только с одной стороны!), а с другой - этот самый XY-Graph с каждой новой точкой не ее требует, а снова весь этот массив и тупо перестраивает кривую!
Мне такой стиль и в страшном сне не мог присниться, уж извините за прямоту...
((
alex3f
beginner
beginner
Сообщения: 26
Зарегистрирован: 23 авг 2016, 09:16
Версия LabVIEW: 2016
Контактная информация:

Re: редактирование объекта LabVIEW

Сообщение alex3f »

В чём-то с вами можно согласиться. Но вы должны понимать, что чаще всего преимущества в чём-то одном (например, простота и скорость разработки) тянут недостатки в чём-то другом (например, меньшую гибкость и неоптимальность). Хотя Alex Dem в последнем посте вам правильно обрисовал ситуацию. Он предложил (и это правильно) отслеживать нужный вам момент без привязки к графику, хоть по одной точке анализировать... А вывод на график - выделить в отдельную задачу. Выводить оптимальное кол-во точек без потери значимой информации с приемлемым быстродействием. К тому же важна архитектура приложения. Она тоже может повлиять быстродействие. Из-за этого вопросы и попытка понять суть конечной задачи и увидеть сделанный вами код. А не обсуждать метод, который вы выбрали для решения этой задачи и который, возможно, не реализуем или потребует гораздо больше усилий на реализацию, чем альтернативный. И на форуме, я не раз видел, что хоть человек явно выбрал не тот подход для решения задачи ему помогали именно с выбранным им методом решения, если он возможен и не отнимает у отвечающего много времени. Иногда это быстрее и правильнее, чем наставления о "грамотном коде". Но это не всегда возможно.
Аватара пользователя
gva62
beginner
beginner
Сообщения: 35
Зарегистрирован: 21 апр 2017, 23:00
Версия LabVIEW: 8.6
Откуда: Харьков, Украина
Контактная информация:

Re: редактирование объекта LabVIEW

Сообщение gva62 »

да, alex3f, не могу с Вами не согласиться (к вопросу об обходе ситуации): именно так к настоящему моменту и обстоит дело: во-первых вылизано все (из основного цикла убрано все "лишнее": стоит куча флагов, позволяющих не выполнять "одноразовые действия"; во-вторых, поставлены вкладки (где только можно), "прикрывающие" окна вывода, что позволяет существенно поднять производительность (т.к. когда график "строится под вкладкой" - он таки строится, но при этом не отнимает до 80% ресурсов от обычного, визуального режима), то же касается и всех остальных выводов, просто печати цифр, например; в-третьих, поставлен "альтернативный" графопостроитель с выборками из общего ряда и регулируемой задержкой (работающий по принципу: "выводим на график каждую Nю точку", остальные же только сливаются на диск, но это не позволяет заметить быстротекущие процессы)...
Однако все это - экстенсивные методы и они себя уже практически исчерпали!
((
Код показать "не могу": это уже огромная программа, состоящая из ~15 vi (!)
((
... вот потому-то и обратился к последнему возможному (теоретически возможному) варианту: отредактировать построение функциональности самого XY Grph.
Однако, поскольку сам подобных вещей никогда не делал - и возникло желание спросить спецов в этом вопросе: позволяет ли данная программная среда решить этот вопрос в рамках, как я это изложил? Если позволяет - я решу его сам (самостоятельно изучив необходимые материалы и написав код); если же принципиально НЕТ - то Вы сэкономите мое время на изучение предмета: не хотелось бы изучить тему только для того, чтобы в конце пути прийти к выводу - "увы, нет!" ((
:drink:

P.S. к вопросу о коллапсе производительности (почему он для меня важен?): вообще-то он важен и сам по себе, т.к. это - одна из ключевых характеристик программного продукта в целом, но в моем случае важность повышается принципиально! Мы работаем в "4х канальном режиме" (опрос 4х приборов одновременно), при этом - на COM-портах (((
Так вот, мало того, что на скорости 9600 максимум вычиток (когда программа ничего не делает, кроме как читает порт, чего никогда не будет) - 31/сек.
Так вот, по старту 25/сек программа достаточно быстро скатывается до 3(!) точек в секунду (быстро - относительно длительности проведения самого сеанса работы с ней), а это - аж на порядок!!!
((
и все из-за того, о чем мы тут так долго и подробно говорим...
Последний раз редактировалось gva62 18 дек 2018, 11:09, всего редактировалось 1 раз.
Artem.spb

Activity Автор
professor
professor
Сообщения: 3393
Зарегистрирован: 31 июл 2011, 23:05
Награды: 2
Версия LabVIEW: 12-18
Благодарил (а): 49 раз
Поблагодарили: 172 раза
Контактная информация:

Re: редактирование объекта LabVIEW

Сообщение Artem.spb »

gva62 писал(а): мне достаточно было бы создать статический массив (не переопределять его и не переписывать тысячи раз в секунду), и всего лишь заменять в нем значение N-ой пары XY (и все!!!).
И при этом поменять атрибуты цвета всего-то одного (очередного, обусловленного значениями XY) пикселя на выделенной области экрана.
вот тут у меня возникает большой, ОГРОМНЫЙ вопрос. Если "раньше" вы могли выделить один массив и "всего лишь заменять в нем значение N-ой пары XY", то почему "сейчас" добавляете по одной точке в постоянно растущий массив?
Выделяйте массив и заменяйте по одной точке, увеличивая индекс. Не надо будет гонять кучу "мусора". Но от проблемы перерисовки графика это не избавит. Поменять цвет одной точки на экране средствами :labview: вряд ли получится, если только влезать в .NET и там копаться.
Аватара пользователя
gva62
beginner
beginner
Сообщения: 35
Зарегистрирован: 21 апр 2017, 23:00
Версия LabVIEW: 8.6
Откуда: Харьков, Украина
Контактная информация:

Re: редактирование объекта LabVIEW

Сообщение gva62 »

Artem.spb, спасибо за Ваш вопрос - отвечаю: потому, что "раньше" относится не к среде LabVIEW, а к древним "примитивным" языкам, в которых делалось только то, что нужно мне, а не наоборот (как тут: когда я постоянно подстраиваюсь под рамки, в которые меня втиснули).
Так вот, да, я могу сменить (и пробовал так делать, уверяю Вас) только пару... но!!! процедура обращения к объекту XY Graph все равно предполагает подать на его вход ВЕСЬ массив, при этом метод построения приведет снова к перестройке всего массива точек вцелом!
Ответить
  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Для чайников»