Очередь и как с неи бороться?
-
- developer
- Сообщения: 261
- Зарегистрирован: 22 дек 2008, 14:07
- Награды: 1
- Версия LabVIEW: 8.5
- Контактная информация:
Очередь и как с неи бороться?
Задача: В процессе работы создается кластер из массивов. SubVI отлючается и через какое-то время снова работает.Надо собрать все массивы в 1 кластер на на протяжении всеи работы программы. Для сборки массивов в кластер использую очередь. А вот собрать кластеры в кластер не выходит.Кто поможет?
-
Konstantin Sumenko
- expert
- Сообщения: 1439
- Зарегистрирован: 17 июл 2008, 12:20
- Награды: 2
- Версия LabVIEW: 2010
- Откуда: Moscow
- Поблагодарили: 1 раз
- Контактная информация:
Re: Очередь и как с неи бороться?
Если массивы одинаковых типов, то проще их держать в двумерном массиве- тогда проблемы объединения отпадут.
-
Eugen Graf
- guru
- Сообщения: 6502
- Зарегистрирован: 13 ноя 2007, 02:20
- Награды: 4
- Версия LabVIEW: 2009
- Откуда: Saarbrücken
- Контактная информация:
Re: Очередь и как с неи бороться?
Размер двумерного массива зависит от максимального размера одного из одномерных и все незаполненые элементы остальных одномерных заполняются значениями по умолчанию.Crowbar писал(а):Если массивы одинаковых типов, то проще их держать в двумерном массиве- тогда проблемы объединения отпадут.
-
Konstantin Sumenko
- expert
- Сообщения: 1439
- Зарегистрирован: 17 июл 2008, 12:20
- Награды: 2
- Версия LabVIEW: 2010
- Откуда: Moscow
- Поблагодарили: 1 раз
- Контактная информация:
Re: Очередь и как с неи бороться?
Ну если длина у них разная, тогда придется первый кластер массивов оставить в покое, остальные кластеры разобрать на составляющие массивы и Bundle'ом в цикле запихать в первый.
-
- developer
- Сообщения: 261
- Зарегистрирован: 22 дек 2008, 14:07
- Награды: 1
- Версия LabVIEW: 8.5
- Контактная информация:
Re: Очередь и как с неи бороться?
Всем-спасибо. Все получилось. Очередь прекрасно справляется и с кластерами, просто я давала неправильные начальные значения и совсем забыла про Loop. Теперь Enqueue Element , Get Queue Status - в Loop, а Flush Queue, Release Queue - за пределами Loop. И ,наверное, и неизящно, но все работает
-
Eugen Graf
- guru
- Сообщения: 6502
- Зарегистрирован: 13 ноя 2007, 02:20
- Награды: 4
- Версия LabVIEW: 2009
- Откуда: Saarbrücken
- Контактная информация:
-
- developer
- Сообщения: 261
- Зарегистрирован: 22 дек 2008, 14:07
- Награды: 1
- Версия LabVIEW: 8.5
- Контактная информация:
Re: Очередь и как с неи бороться?
Ох, ну,вот. На выходе POPMain- кластер"remaining elements, в нем данные, а потом все эти данные собира[тся в такои бо-о-о-льшои кластер
- Вложения
-
- Start.vi
- (19.65 КБ) 212 скачиваний
-
Eugen Graf
- guru
- Сообщения: 6502
- Зарегистрирован: 13 ноя 2007, 02:20
- Награды: 4
- Версия LabVIEW: 2009
- Откуда: Saarbrücken
- Контактная информация:
Re: Очередь и как с неи бороться?
Obtain Queue надо бы тоже вынести за пределы цикла. А во вторых Flush и Release Queue при выходе из цикла получают неизвестно что на вход вместо правильной Queue Reference.
-
Eugen Graf
- guru
- Сообщения: 6502
- Зарегистрирован: 13 ноя 2007, 02:20
- Награды: 4
- Версия LabVIEW: 2009
- Откуда: Saarbrücken
- Контактная информация:
Re: Очередь и как с неи бороться?
Как только вынесешь Obtain за цикл станет понятно, что референс тебе так же нужно протягивать и через ивент стоп.
-
- developer
- Сообщения: 261
- Зарегистрирован: 22 дек 2008, 14:07
- Награды: 1
- Версия LabVIEW: 8.5
- Контактная информация:
Re: Очередь и как с неи бороться?
Спасибо. Переделала. Кстати, поменяла структуру. Теперь все массивы записываются в 1. Т.е. - внутри Так коллегам удобнее. Вот
- Вложения
-
- Start.vi
- (18.63 КБ) 222 скачивания