Использование Typedef в LabVIEW

Общие принципы, проектирование, модуляризация, темплейты и шаблоны
Аватара пользователя
Sergey Ivanov

Activity Professionalism Gold Автор
expert
expert
Сообщения: 1217
Зарегистрирован: 01 мар 2009, 20:54
Награды: 5
Версия LabVIEW: 2018
Откуда: Санкт-Петербург, Кронштадт
Благодарил (а): 11 раз
Поблагодарили: 1 раз
Контактная информация:

Re: Использование Typedef в LabVIEW

Сообщение Sergey Ivanov »

ещё вопросик появился, но теперь уже с тремя циклами.

у меня есть 3 цикла, каждый работает со своей частотой (100 гц - 1 цикл, 1 гц - 2 цикл и 10 гц - третий цикл)

я передаю данные из 2 цикла в первый, тут вопросов нет, всё нормально. принимаю эти данные в первом цикле и "складываю" с данными первого цикла. "складываю" количество итераций циклов. то есть, получается,

в итоге, в файле хочу получить чтобы на одно значение из второго цикла приходилось 100 значений из первого цикла и всё это писалось в файл частотой 10 гц. (по сути, 10 значений из первого цикла и одно значение из второго цикла)
а пишется вот это:
проба.rar
(1.44 КБ) 319 скачиваний
вот сама программа:
скрин.jpg
в :labview:
проба.vi
2011
(19.14 КБ) 281 скачивание
проба.vi
8.6
(11.53 КБ) 298 скачиваний
как сделать так, чтобы писалось всё правильно ?

ps на скриншоте в probe видно, что :labview: , как будто округляет значения ( см. проводник 52 и 53)
Добро пожаловать на http://rk-stud.ru/
Аватара пользователя
IvanLis

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

Re: Использование Typedef в LabVIEW

Сообщение IvanLis »

Sergey Ivanov писал(а):в итоге, в файле хочу получить чтобы на одно значение из второго цикла приходилось 100 значений из первого цикла и всё это писалось в файл частотой 10 гц. (по сути, 10 значений из первого цикла и одно значение из второго цикла)
некогда смотреть исходники
но в цикле (10Гц) ты считываешь один элемент в очереди, а там их 11 (наверное)
используй Get Queue Status Function, там можно выдернуть всю очередь в виде массива, а его уже нужно сохранять

:crazy: сегодня перегруз уже.... но вроде так
если что, кто-нибудь поправит
Аватара пользователя
Sergey Ivanov

Activity Professionalism Gold Автор
expert
expert
Сообщения: 1217
Зарегистрирован: 01 мар 2009, 20:54
Награды: 5
Версия LabVIEW: 2018
Откуда: Санкт-Петербург, Кронштадт
Благодарил (а): 11 раз
Поблагодарили: 1 раз
Контактная информация:

Re: Использование Typedef в LabVIEW

Сообщение Sergey Ivanov »

IvanLis, спасибо за совет. вроде получилось. но, я так понял, что с течением времени количество элементов в очереди увеличивается и приходится извлекать предпоследний элемент очереди, от этого увеличивается память. правильно ? узрел элемент flush queue - я так понял, что это очистка очереди ?
123.jpg
проба.vi
8.6
(12.48 КБ) 314 скачиваний
Добро пожаловать на http://rk-stud.ru/
Аватара пользователя
IvanLis

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

Re: Использование Typedef в LabVIEW

Сообщение IvanLis »

Sergey Ivanov писал(а):вроде получилось. но...
не так немного :wink:
посмотри пример : by AndreyDmitriev - Чтение из бинарного файла
он как раз позволяет понять, как извлекать из очереди данные с частотой меньше частоты записи
Аватара пользователя
Sergey Ivanov

Activity Professionalism Gold Автор
expert
expert
Сообщения: 1217
Зарегистрирован: 01 мар 2009, 20:54
Награды: 5
Версия LabVIEW: 2018
Откуда: Санкт-Петербург, Кронштадт
Благодарил (а): 11 раз
Поблагодарили: 1 раз
Контактная информация:

Re: Использование Typedef в LabVIEW

Сообщение Sergey Ivanov »

всё получилось, спасибо большое. и ещё вопросик, можно ли передавать через очередь cluster (bundle by name) ?
Добро пожаловать на http://rk-stud.ru/
Аватара пользователя
IvanLis

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

Re: Использование Typedef в LabVIEW

Сообщение IvanLis »

Sergey Ivanov писал(а):можно ли передавать через очередь cluster
можно, главное сначала его описать и желательно через TypeDef (как раз в тему), что бы потом при записи и считывание со структурой не ошибиться
Снимок.png
Снимок.png (2.33 КБ) 12507 просмотров
через очереди практически любой тип данных можно передать, нельзя вроде ссылки (Refnum) .... это все что помню
karavzeka
interested
interested
Сообщения: 9
Зарегистрирован: 15 мар 2013, 11:16
Версия LabVIEW: 8.2, 2011
Контактная информация:

Re: Использование Typedef в LabVIEW

Сообщение karavzeka »

По поводу typedef. Имеется задача программно изменять размеры контролов на лицевой панели. У меня есть typedef ринга (списка). В [Property Node ->Digital Display -> Size -> Width] обычного ринга можно подавать значение ширины на вход. А в Property Node typedef'a ринга нельзя подавать значения на вход, он просто не ставится на запись, только чтение. Есть ли идеи, как можно программно менять размеры тайпдефа на лицевой панели?
P.S. использую strict typedef
Аватара пользователя
IvanLis

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

Re: Использование Typedef в LabVIEW

Сообщение IvanLis »

karavzeka писал(а):P.S. использую strict typedef
установите режим typedef
тогда внешний вид не будет фиксирован и по идее можно будет изменить его размер
karavzeka
interested
interested
Сообщения: 9
Зарегистрирован: 15 мар 2013, 11:16
Версия LabVIEW: 8.2, 2011
Контактная информация:

Re: Использование Typedef в LabVIEW

Сообщение karavzeka »

IvanLis писал(а):установите режим typedef
тогда внешний вид не будет фиксирован и по идее можно будет изменить его размер
Спасибо, сработало. И чего я сам не подумал об этом... =)
Borjomy_1

Activity Professionalism Silver
doctor
doctor
Сообщения: 2210
Зарегистрирован: 28 июн 2012, 09:32
Награды: 3
Версия LabVIEW: 2009..2020
Откуда: город семи холмов
Благодарил (а): 27 раз
Поблагодарили: 26 раз

Re: Использование Typedef в LabVIEW

Сообщение Borjomy_1 »

karavzeka, Только косвенно, например изменяя размер шрифта (и то, только по высоте). Кстати, к тайпдефу установка размеров в рантайме никакого отношения не имеет.
karavzeka
interested
interested
Сообщения: 9
Зарегистрирован: 15 мар 2013, 11:16
Версия LabVIEW: 8.2, 2011
Контактная информация:

Re: Использование Typedef в LabVIEW

Сообщение karavzeka »

Borjomy_1 писал(а):Кстати, к тайпдефу установка размеров в рантайме никакого отношения не имеет.
Это я понимаю. У меня идет задача масштабирования лицевой панели, т.е. надо, чтобы размеры индикаторов и контролов менялись. А т.к. я использую тайпдефы, то соответствующие им контролы так же надо менять.
Borjomy_1

Activity Professionalism Silver
doctor
doctor
Сообщения: 2210
Зарегистрирован: 28 июн 2012, 09:32
Награды: 3
Версия LabVIEW: 2009..2020
Откуда: город семи холмов
Благодарил (а): 27 раз
Поблагодарили: 26 раз

Re: Использование Typedef в LabVIEW

Сообщение Borjomy_1 »

karavzeka, Кроме как автошкалинг, никаких механизмов изменения размеров в рантайме, не предусмотрено. Что тайпдеф, то не тайпдеф.
karavzeka
interested
interested
Сообщения: 9
Зарегистрирован: 15 мар 2013, 11:16
Версия LabVIEW: 8.2, 2011
Контактная информация:

Re: Использование Typedef в LabVIEW

Сообщение karavzeka »

Borjomy_1, вы видимо забыли про Property Node))) Свойство Position позволяет мне перемещать элементы по лицевой панели, а свойство Size - изменять их размеры. И все это программно! Отлавливаешь событие изменения размера окна и пересчитываешь позиции и размеры элементов. Да, конечно это не встроенный механизм масштабирования, работает медленно, но и менять размер окна не так уж часто приходится во время работы приложения.

P.S. Это уже тема отличная от темы топика, так что предлагаю не развивать ее здесь. Если хотите, могу как-нибудь продемонстрировать работу программного масштабирования)
Borjomy_1

Activity Professionalism Silver
doctor
doctor
Сообщения: 2210
Зарегистрирован: 28 июн 2012, 09:32
Награды: 3
Версия LabVIEW: 2009..2020
Откуда: город семи холмов
Благодарил (а): 27 раз
Поблагодарили: 26 раз

Re: Использование Typedef в LabVIEW

Сообщение Borjomy_1 »

Да, я уже глянул. У каждого контрола это свойство называется по-разному, у кластера и массива его вообще нет. А Bounds - доступно только для чтения. Получается, что точно размеры для кластеров и массивов не выставить, а для полноценного масштабирования нужно проводить контекстный анализ контролов с рекурсией....
karavzeka
interested
interested
Сообщения: 9
Зарегистрирован: 15 мар 2013, 11:16
Версия LabVIEW: 8.2, 2011
Контактная информация:

Re: Использование Typedef в LabVIEW

Сообщение karavzeka »

И вернемся к typedef. Сейчас работаю в LabVIEW 2011 и столкнулся с очень неприятной вещью. Во многих vi'шках использую typedef типа enum. Время от времени добавляю новые элементы в список, сохраняю, но в vi'шках эти элементы не появляются. Приходится в куче vi'шек вручную делать реплэйс этого typedef'а. Свойство "Auto-Update from Type Def." везде включено. Элементы enum'а ведь сами должны везде обновиться, я ничего не путаю? По крайней мере в предыдущих версиях LabVIEW все само обновлялось, если мне не изменяет память...
Ответить
  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Модели программирования»