Использование Typedef в LabVIEW
-
Sergey Ivanov
- expert
- Сообщения: 1217
- Зарегистрирован: 01 мар 2009, 20:54
- Награды: 5
- Версия LabVIEW: 2018
- Откуда: Санкт-Петербург, Кронштадт
- Благодарил (а): 11 раз
- Поблагодарили: 1 раз
- Контактная информация:
Re: Использование Typedef в LabVIEW
ещё вопросик появился, но теперь уже с тремя циклами.
у меня есть 3 цикла, каждый работает со своей частотой (100 гц - 1 цикл, 1 гц - 2 цикл и 10 гц - третий цикл)
я передаю данные из 2 цикла в первый, тут вопросов нет, всё нормально. принимаю эти данные в первом цикле и "складываю" с данными первого цикла. "складываю" количество итераций циклов. то есть, получается,
в итоге, в файле хочу получить чтобы на одно значение из второго цикла приходилось 100 значений из первого цикла и всё это писалось в файл частотой 10 гц. (по сути, 10 значений из первого цикла и одно значение из второго цикла)
а пишется вот это: вот сама программа: в
как сделать так, чтобы писалось всё правильно ?
ps на скриншоте в probe видно, что , как будто округляет значения ( см. проводник 52 и 53)
у меня есть 3 цикла, каждый работает со своей частотой (100 гц - 1 цикл, 1 гц - 2 цикл и 10 гц - третий цикл)
я передаю данные из 2 цикла в первый, тут вопросов нет, всё нормально. принимаю эти данные в первом цикле и "складываю" с данными первого цикла. "складываю" количество итераций циклов. то есть, получается,
в итоге, в файле хочу получить чтобы на одно значение из второго цикла приходилось 100 значений из первого цикла и всё это писалось в файл частотой 10 гц. (по сути, 10 значений из первого цикла и одно значение из второго цикла)
а пишется вот это: вот сама программа: в
как сделать так, чтобы писалось всё правильно ?
ps на скриншоте в probe видно, что , как будто округляет значения ( см. проводник 52 и 53)
Добро пожаловать на http://rk-stud.ru/
-
IvanLis
- guru
- Сообщения: 5463
- Зарегистрирован: 02 дек 2009, 17:44
- Награды: 7
- Версия LabVIEW: 2015, 2016
- Откуда: СССР
- Благодарил (а): 28 раз
- Поблагодарили: 87 раз
Re: Использование Typedef в LabVIEW
некогда смотреть исходникиSergey Ivanov писал(а):в итоге, в файле хочу получить чтобы на одно значение из второго цикла приходилось 100 значений из первого цикла и всё это писалось в файл частотой 10 гц. (по сути, 10 значений из первого цикла и одно значение из второго цикла)
но в цикле (10Гц) ты считываешь один элемент в очереди, а там их 11 (наверное)
используй Get Queue Status Function, там можно выдернуть всю очередь в виде массива, а его уже нужно сохранять
сегодня перегруз уже.... но вроде так
если что, кто-нибудь поправит
Знание нескольких принципов освобождает от знания многих фактов!
Правила форума
Как добавить в сообщение картинку или файл
Конвертация / версий (форматов) VI
Как правильно задать вопрос...
Правила форума
Как добавить в сообщение картинку или файл
Конвертация / версий (форматов) VI
Как правильно задать вопрос...
-
Sergey Ivanov
- expert
- Сообщения: 1217
- Зарегистрирован: 01 мар 2009, 20:54
- Награды: 5
- Версия LabVIEW: 2018
- Откуда: Санкт-Петербург, Кронштадт
- Благодарил (а): 11 раз
- Поблагодарили: 1 раз
- Контактная информация:
Re: Использование Typedef в LabVIEW
IvanLis, спасибо за совет. вроде получилось. но, я так понял, что с течением времени количество элементов в очереди увеличивается и приходится извлекать предпоследний элемент очереди, от этого увеличивается память. правильно ? узрел элемент flush queue - я так понял, что это очистка очереди ?
Добро пожаловать на http://rk-stud.ru/
-
IvanLis
- guru
- Сообщения: 5463
- Зарегистрирован: 02 дек 2009, 17:44
- Награды: 7
- Версия LabVIEW: 2015, 2016
- Откуда: СССР
- Благодарил (а): 28 раз
- Поблагодарили: 87 раз
Re: Использование Typedef в LabVIEW
не так немногоSergey Ivanov писал(а):вроде получилось. но...
посмотри пример : by AndreyDmitriev - Чтение из бинарного файла
он как раз позволяет понять, как извлекать из очереди данные с частотой меньше частоты записи
Знание нескольких принципов освобождает от знания многих фактов!
Правила форума
Как добавить в сообщение картинку или файл
Конвертация / версий (форматов) VI
Как правильно задать вопрос...
Правила форума
Как добавить в сообщение картинку или файл
Конвертация / версий (форматов) VI
Как правильно задать вопрос...
-
Sergey Ivanov
- expert
- Сообщения: 1217
- Зарегистрирован: 01 мар 2009, 20:54
- Награды: 5
- Версия LabVIEW: 2018
- Откуда: Санкт-Петербург, Кронштадт
- Благодарил (а): 11 раз
- Поблагодарили: 1 раз
- Контактная информация:
Re: Использование Typedef в LabVIEW
всё получилось, спасибо большое. и ещё вопросик, можно ли передавать через очередь cluster (bundle by name) ?
Добро пожаловать на http://rk-stud.ru/
-
IvanLis
- guru
- Сообщения: 5463
- Зарегистрирован: 02 дек 2009, 17:44
- Награды: 7
- Версия LabVIEW: 2015, 2016
- Откуда: СССР
- Благодарил (а): 28 раз
- Поблагодарили: 87 раз
Re: Использование Typedef в LabVIEW
можно, главное сначала его описать и желательно через TypeDef (как раз в тему), что бы потом при записи и считывание со структурой не ошибиться через очереди практически любой тип данных можно передать, нельзя вроде ссылки (Refnum) .... это все что помнюSergey Ivanov писал(а):можно ли передавать через очередь cluster
Знание нескольких принципов освобождает от знания многих фактов!
Правила форума
Как добавить в сообщение картинку или файл
Конвертация / версий (форматов) VI
Как правильно задать вопрос...
Правила форума
Как добавить в сообщение картинку или файл
Конвертация / версий (форматов) VI
Как правильно задать вопрос...
-
- interested
- Сообщения: 9
- Зарегистрирован: 15 мар 2013, 11:16
- Версия LabVIEW: 8.2, 2011
- Контактная информация:
Re: Использование Typedef в LabVIEW
По поводу typedef. Имеется задача программно изменять размеры контролов на лицевой панели. У меня есть typedef ринга (списка). В [Property Node ->Digital Display -> Size -> Width] обычного ринга можно подавать значение ширины на вход. А в Property Node typedef'a ринга нельзя подавать значения на вход, он просто не ставится на запись, только чтение. Есть ли идеи, как можно программно менять размеры тайпдефа на лицевой панели?
P.S. использую strict typedef
P.S. использую strict typedef
-
IvanLis
- guru
- Сообщения: 5463
- Зарегистрирован: 02 дек 2009, 17:44
- Награды: 7
- Версия LabVIEW: 2015, 2016
- Откуда: СССР
- Благодарил (а): 28 раз
- Поблагодарили: 87 раз
Re: Использование Typedef в LabVIEW
установите режим typedefkaravzeka писал(а):P.S. использую strict typedef
тогда внешний вид не будет фиксирован и по идее можно будет изменить его размер
Знание нескольких принципов освобождает от знания многих фактов!
Правила форума
Как добавить в сообщение картинку или файл
Конвертация / версий (форматов) VI
Как правильно задать вопрос...
Правила форума
Как добавить в сообщение картинку или файл
Конвертация / версий (форматов) VI
Как правильно задать вопрос...
-
- interested
- Сообщения: 9
- Зарегистрирован: 15 мар 2013, 11:16
- Версия LabVIEW: 8.2, 2011
- Контактная информация:
Re: Использование Typedef в LabVIEW
Спасибо, сработало. И чего я сам не подумал об этом... =)IvanLis писал(а):установите режим typedef
тогда внешний вид не будет фиксирован и по идее можно будет изменить его размер
-
- doctor
- Сообщения: 2211
- Зарегистрирован: 28 июн 2012, 09:32
- Награды: 3
- Версия LabVIEW: 2009..2020
- Откуда: город семи холмов
- Благодарил (а): 27 раз
- Поблагодарили: 27 раз
Re: Использование Typedef в LabVIEW
karavzeka, Только косвенно, например изменяя размер шрифта (и то, только по высоте). Кстати, к тайпдефу установка размеров в рантайме никакого отношения не имеет.
-
- interested
- Сообщения: 9
- Зарегистрирован: 15 мар 2013, 11:16
- Версия LabVIEW: 8.2, 2011
- Контактная информация:
Re: Использование Typedef в LabVIEW
Это я понимаю. У меня идет задача масштабирования лицевой панели, т.е. надо, чтобы размеры индикаторов и контролов менялись. А т.к. я использую тайпдефы, то соответствующие им контролы так же надо менять.Borjomy_1 писал(а):Кстати, к тайпдефу установка размеров в рантайме никакого отношения не имеет.
-
- doctor
- Сообщения: 2211
- Зарегистрирован: 28 июн 2012, 09:32
- Награды: 3
- Версия LabVIEW: 2009..2020
- Откуда: город семи холмов
- Благодарил (а): 27 раз
- Поблагодарили: 27 раз
Re: Использование Typedef в LabVIEW
karavzeka, Кроме как автошкалинг, никаких механизмов изменения размеров в рантайме, не предусмотрено. Что тайпдеф, то не тайпдеф.
-
- interested
- Сообщения: 9
- Зарегистрирован: 15 мар 2013, 11:16
- Версия LabVIEW: 8.2, 2011
- Контактная информация:
Re: Использование Typedef в LabVIEW
Borjomy_1, вы видимо забыли про Property Node))) Свойство Position позволяет мне перемещать элементы по лицевой панели, а свойство Size - изменять их размеры. И все это программно! Отлавливаешь событие изменения размера окна и пересчитываешь позиции и размеры элементов. Да, конечно это не встроенный механизм масштабирования, работает медленно, но и менять размер окна не так уж часто приходится во время работы приложения.
P.S. Это уже тема отличная от темы топика, так что предлагаю не развивать ее здесь. Если хотите, могу как-нибудь продемонстрировать работу программного масштабирования)
P.S. Это уже тема отличная от темы топика, так что предлагаю не развивать ее здесь. Если хотите, могу как-нибудь продемонстрировать работу программного масштабирования)
-
- doctor
- Сообщения: 2211
- Зарегистрирован: 28 июн 2012, 09:32
- Награды: 3
- Версия LabVIEW: 2009..2020
- Откуда: город семи холмов
- Благодарил (а): 27 раз
- Поблагодарили: 27 раз
Re: Использование Typedef в LabVIEW
Да, я уже глянул. У каждого контрола это свойство называется по-разному, у кластера и массива его вообще нет. А Bounds - доступно только для чтения. Получается, что точно размеры для кластеров и массивов не выставить, а для полноценного масштабирования нужно проводить контекстный анализ контролов с рекурсией....
-
- interested
- Сообщения: 9
- Зарегистрирован: 15 мар 2013, 11:16
- Версия LabVIEW: 8.2, 2011
- Контактная информация:
Re: Использование Typedef в LabVIEW
И вернемся к typedef. Сейчас работаю в LabVIEW 2011 и столкнулся с очень неприятной вещью. Во многих vi'шках использую typedef типа enum. Время от времени добавляю новые элементы в список, сохраняю, но в vi'шках эти элементы не появляются. Приходится в куче vi'шек вручную делать реплэйс этого typedef'а. Свойство "Auto-Update from Type Def." везде включено. Элементы enum'а ведь сами должны везде обновиться, я ничего не путаю? По крайней мере в предыдущих версиях LabVIEW все само обновлялось, если мне не изменяет память...
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
- 0 Ответы
- 1893 Просмотры
-
Последнее сообщение Anastasia
-
- 3 Ответы
- 2065 Просмотры
-
Последнее сообщение PozhiloyGoblin
-
- 0 Ответы
- 343 Просмотры
-
Последнее сообщение maxim_MA
-
- 23 Ответы
- 2386 Просмотры
-
Последнее сообщение dadreamer
-
- 2 Ответы
- 390 Просмотры
-
Последнее сообщение ujin1