обновление дисплея и организация циклов
-
- developer
- Сообщения: 289
- Зарегистрирован: 26 фев 2016, 06:31
- Версия LabVIEW: 18-20
- Благодарил (а): 6 раз
- Поблагодарили: 7 раз
- Контактная информация:
обновление дисплея и организация циклов
Добрый день! Подскажите как лучше сделать. Все вопросы на картинке)
-
IvanLis
- guru
- Сообщения: 5462
- Зарегистрирован: 02 дек 2009, 17:44
- Награды: 7
- Версия LabVIEW: 2015, 2016
- Откуда: СССР
- Благодарил (а): 28 раз
- Поблагодарили: 86 раз
Re: обновление дисплея и организация циклов
Не понятно, для чего верхний цикл (обработка GUI), если он не связан с другими?rushonda писал(а):Добрый день! Подскажите как лучше сделать. Все вопросы на картинке)
С картинками не все так просто, реально Вы в кластер не изображение пишите, а указатель на него.
Внимательно прочтите тему: http://www.labviewportal.org/viewtopic.php?f=129&t=4226
Знание нескольких принципов освобождает от знания многих фактов!
Правила форума
Как добавить в сообщение картинку или файл
Конвертация / версий (форматов) VI
Как правильно задать вопрос...
Правила форума
Как добавить в сообщение картинку или файл
Конвертация / версий (форматов) VI
Как правильно задать вопрос...
-
- developer
- Сообщения: 289
- Зарегистрирован: 26 фев 2016, 06:31
- Версия LabVIEW: 18-20
- Благодарил (а): 6 раз
- Поблагодарили: 7 раз
- Контактная информация:
Re: обновление дисплея и организация циклов
Виноват, на рисунке не отобразил. Все три цикла связаны через очереди. IvanLis, Вашу ссылку я посмотрел - много непонятного, еще по изучаю. Только мне не нужно изображение на другой комп отправлять - просто передать из цикла в другой цикл.
Глобально задача такая: в первом цикле идет считывание из AVI файла - и передача изображения во 2-ой, во 2-м обработка изображения.
Пока не понятно где выводить изображение: во 2-м или в 3-м?
Ну и как правильнее передавать изображение через очереди из одного в другой цикл?
Глобально задача такая: в первом цикле идет считывание из AVI файла - и передача изображения во 2-ой, во 2-м обработка изображения.
Пока не понятно где выводить изображение: во 2-м или в 3-м?
Ну и как правильнее передавать изображение через очереди из одного в другой цикл?
-
- developer
- Сообщения: 289
- Зарегистрирован: 26 фев 2016, 06:31
- Версия LabVIEW: 18-20
- Благодарил (а): 6 раз
- Поблагодарили: 7 раз
- Контактная информация:
Re: обновление дисплея и организация циклов
Отправляю я изображение во второй цикл, потому что считывание AVI медленное и пока идет обработка во 2 цикле, в 1-м происходит считывание из AVI.
-
dadreamer
- professor
- Сообщения: 3926
- Зарегистрирован: 17 фев 2013, 16:33
- Награды: 4
- Версия LabVIEW: 2.5 — 2022
- Благодарил (а): 11 раз
- Поблагодарили: 126 раз
- Контактная информация:
Re: обновление дисплея и организация циклов
Ну, если автор работает в рамках одного процесса (то есть, одного адресного пространства), то ему ни к чему париться об этом. Библиотека nivision сама сопоставит ссылки и их имена блокам памяти с картинками.IvanLis писал(а):С картинками не все так просто, реально Вы в кластер не изображение пишите, а указатель на него.
Внимательно прочтите тему: http://www.labviewportal.org/viewtopic.php?f=129&t=4226
А где вам будет удобнее. Очереди - универсальная штука, от цикла не зависят. Можно даже в нескольких циклах очередь проверять: в одном извлечение, в других просмотр. Здесь только надо помнить, что читать следует чаще (хотя бы в два раза), чем писать. Иначе буфер очереди, даже если он бесконечный, будет раздуваться и память, потребляемая программой, будет увеличиваться. Если за этим не следить, то прога рано или поздно подвиснет и в конце концов слетит.rushonda писал(а):Пока не понятно где выводить изображение: во 2-м или в 3-м?
Так же как и любой другой элемент данных (число, строку, массив). Посмотрите примеры по очередям в папке C:\Program Files (x86)\National Instruments\LabVIEW 2016\examples\Synchronization\Queue.rushonda писал(а):Ну и как правильнее передавать изображение через очереди из одного в другой цикл?
-
- developer
- Сообщения: 289
- Зарегистрирован: 26 фев 2016, 06:31
- Версия LabVIEW: 18-20
- Благодарил (а): 6 раз
- Поблагодарили: 7 раз
- Контактная информация:
Re: обновление дисплея и организация циклов
Ivanlis, dadreamer спасибо за полезную инфу. Но все таки:
Есть avi файл, нужно получить из него кадры, обработать и вывести сами кадры и полученную в ходе обработки информацию.
Причем параметры обработки необходимо менять в процессе обработки.
Все можно сделать и в одном цикле, но это медленнее и плохо с точки зрения блок диаграммы. (расширение программы и др.).
Фото как мне кажется сделать прогу я прилагаю - но может можно оптимальнее???.
Есть avi файл, нужно получить из него кадры, обработать и вывести сами кадры и полученную в ходе обработки информацию.
Причем параметры обработки необходимо менять в процессе обработки.
Все можно сделать и в одном цикле, но это медленнее и плохо с точки зрения блок диаграммы. (расширение программы и др.).
Фото как мне кажется сделать прогу я прилагаю - но может можно оптимальнее???.
-
dadreamer
- professor
- Сообщения: 3926
- Зарегистрирован: 17 фев 2013, 16:33
- Награды: 4
- Версия LabVIEW: 2.5 — 2022
- Благодарил (а): 11 раз
- Поблагодарили: 126 раз
- Контактная информация:
Re: обновление дисплея и организация циклов
Вы же с железом не работаете, насколько я понял? Зачем тогда городить столько циклов? Достаточно будет пары: для GUI-событий и на State Machine. Во второй цикл можно поместить всю работу с изображением: получение изображения из AVI файла, обработку изображения, вывод изображения на экран и т.п. Параллельные циклы хороши для времякритичных задач. У вас же чисто работа с файлами идёт, так?rushonda писал(а):Ivanlis, dadreamer спасибо за полезную инфу. Но все таки:
Есть avi файл, нужно получить из него кадры, обработать и вывести сами кадры и полученную в ходе обработки информацию.
Причем параметры обработки необходимо менять в процессе обработки.
Все можно сделать и в одном цикле, но это медленнее и плохо с точки зрения блок диаграммы. (расширение программы и др.).
Фото как мне кажется сделать прогу я прилагаю - но может можно оптимальнее???.
Отвечая на вопрос на БД: кнопка как и её локальная переменная читается из промежуточного буфера, в отличие от Property Node, который читает сперва с панели. То есть, это неблокирующее чтение, на UI не влияет.
-
IvanLis
- guru
- Сообщения: 5462
- Зарегистрирован: 02 дек 2009, 17:44
- Награды: 7
- Версия LabVIEW: 2015, 2016
- Откуда: СССР
- Благодарил (а): 28 раз
- Поблагодарили: 86 раз
Re: обновление дисплея и организация циклов
В том то и дело, что сопоставит и перезапишет область памяти, где хранится изображение.dadreamer писал(а):Ну, если автор работает в рамках одного процесса (то есть, одного адресного пространства), то ему ни к чему париться об этом. Библиотека nivision сама сопоставит ссылки и их имена блокам памяти с картинками.
Возникает "состояние гонки", неизвестно, когда и как будет модифицирована картинка.
Подробнее здесь: http://digital.ni.com/public.nsf/allkb/ ... D200810EDF
Внизу ссылка, с вариантом обхода этой проблемы с организацией буфера.
Дорогу осилит идущий.rushonda писал(а):Фото как мне кажется сделать прогу я прилагаю - но может можно оптимальнее???.
Вы еще много раз переделаете и поменяете организацию своей программы.
На данном этапе сложность в том, что Вы не имеете представления, как вообще эти очереди работают.
Знание нескольких принципов освобождает от знания многих фактов!
Правила форума
Как добавить в сообщение картинку или файл
Конвертация / версий (форматов) VI
Как правильно задать вопрос...
Правила форума
Как добавить в сообщение картинку или файл
Конвертация / версий (форматов) VI
Как правильно задать вопрос...
-
dadreamer
- professor
- Сообщения: 3926
- Зарегистрирован: 17 фев 2013, 16:33
- Награды: 4
- Версия LabVIEW: 2.5 — 2022
- Благодарил (а): 11 раз
- Поблагодарили: 126 раз
- Контактная информация:
Re: обновление дисплея и организация циклов
Прошу прощения. Не обратил внимания, что у ТС очередь для одного IMAQ элемента. Просто недавно работал с Vision'ом и у меня был массив IMAQ-картинок (уникальных, естественно). Вот представлял, что ТС тоже сделал очередь для массива.IvanLis писал(а):В том то и дело, что сопоставит и перезапишет область памяти, где хранится изображение.
Возникает "состояние гонки", неизвестно, когда и как будет модифицирована картинка.
Подробнее здесь: http://digital.ni.com/public.nsf/allkb/ ... D200810EDF
Внизу ссылка, с вариантом обхода этой проблемы с организацией буфера.
Если не хочется переделывать текущую программу, то можно просто копировать картинку в новую локацию (IMAQ Create -> IMAQ Copy), а потом отправлять в очередь. В цикле разбора очереди картинку после ненадобности уничтожать (IMAQ Dispose).
Как вариант, можно передавать через очередь массив, а не IMAQ-ссылку. Тем более что преобразования этих двух типов не занимают много времени и выполняются одной парой .
-
- developer
- Сообщения: 289
- Зарегистрирован: 26 фев 2016, 06:31
- Версия LabVIEW: 18-20
- Благодарил (а): 6 раз
- Поблагодарили: 7 раз
- Контактная информация:
Re: обновление дисплея и организация циклов
Да, но считывание avi медленное, поэтому нужен цикл просто для считывания - а ещё один для обработки. Или нет?Вы же с железом не работаете, насколько я понял? Зачем тогда городить столько циклов? Достаточно будет пары: для GUI-событий и на State Machine. Во второй цикл можно поместить всю работу с изображением: получение изображения из AVI файла, обработку изображения, вывод изображения на экран и т.п. Параллельные циклы хороши для времякритичных задач. У вас же чисто работа с файлами идёт, так?
-
dadreamer
- professor
- Сообщения: 3926
- Зарегистрирован: 17 фев 2013, 16:33
- Награды: 4
- Версия LabVIEW: 2.5 — 2022
- Благодарил (а): 11 раз
- Поблагодарили: 126 раз
- Контактная информация:
Re: обновление дисплея и организация циклов
А чем AVI разбираете? IMAQ AVI2 Read Frame?rushonda писал(а):Да, но считывание avi медленное, поэтому нужен цикл просто для считывания - а ещё один для обработки. Или нет?
-
- developer
- Сообщения: 289
- Зарегистрирован: 26 фев 2016, 06:31
- Версия LabVIEW: 18-20
- Благодарил (а): 6 раз
- Поблагодарили: 7 раз
- Контактная информация:
Re: обновление дисплея и организация циклов
Да именно так.А чем AVI разбираете? IMAQ AVI2 Read Frame?
-
dadreamer
- professor
- Сообщения: 3926
- Зарегистрирован: 17 фев 2013, 16:33
- Награды: 4
- Версия LabVIEW: 2.5 — 2022
- Благодарил (а): 11 раз
- Поблагодарили: 126 раз
- Контактная информация:
Re: обновление дисплея и организация циклов
rushonda, ну, сами смотрите, нужен ли вам отдельный цикл...
64 миллисекунды по идее не так уж много для юзера. Если, конечно, речь о небольшом числе извлекаемых кадров. В противном случае реально нужен отдельный цикл.-
- developer
- Сообщения: 289
- Зарегистрирован: 26 фев 2016, 06:31
- Версия LabVIEW: 18-20
- Благодарил (а): 6 раз
- Поблагодарили: 7 раз
- Контактная информация:
Re: обновление дисплея и организация циклов
Да, кадров много. Плюс к этому разрешение кадра 1920 на 1080 (примерно), это еще дольше. А нет ли кстати инструментов побыстрее файл открывать?64 миллисекунды по идее не так уж много для юзера. Если, конечно, речь о небольшом числе извлекаемых кадров. В противном случае реально нужен отдельный цикл.
-
dadreamer
- professor
- Сообщения: 3926
- Зарегистрирован: 17 фев 2013, 16:33
- Награды: 4
- Версия LabVIEW: 2.5 — 2022
- Благодарил (а): 11 раз
- Поблагодарили: 126 раз
- Контактная информация:
Re: обновление дисплея и организация циклов
Встроенных нету. Есть сторонние решения наподобие VLC, но они сложноваты даже для профи, не говоря о чайниках. Так что решение на Vision'е - наиболее простое и эффективное в данном случае.rushonda писал(а):А нет ли кстати инструментов побыстрее файл открывать?
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
- 6 Ответы
- 1618 Просмотры
-
Последнее сообщение ladik