Начальное значение в контроле

Простейшие вопросы в области инженерной разработки
Ответить
Аватара пользователя
Fynjisx
beginner
beginner
Сообщения: 41
Зарегистрирован: 12 авг 2010, 19:29
Версия LabVIEW: 2009
Контактная информация:

Начальное значение в контроле

Сообщение Fynjisx »

Есть некий контрол и некий индикатор. Индикатор отображает текущее состояние. Как в контрол занести в начальный момент времени это текущее состояние?
Аватара пользователя
Eugen Graf

Activity Professionalism Silver Black
guru
guru
Сообщения: 6502
Зарегистрирован: 13 ноя 2007, 02:20
Награды: 4
Версия LabVIEW: 2009
Откуда: Saarbrücken
Контактная информация:

Re: Начальное значение в контроле

Сообщение Eugen Graf »

Интересно когда этот начальный момент наступает?
Ну вообще нужно использовать Case структуру, в кейсе (начальный момент определён) поместить например локальную переменную индикатора и контрола и соединить их между собой.
Аватара пользователя
Pavel Krivozubov

Activity Bronze
professor
professor
Сообщения: 4421
Зарегистрирован: 07 фев 2008, 16:39
Награды: 3
Версия LabVIEW: 7.0 - 2013
Откуда: г. Электросталь
Благодарил (а): 24 раза
Поблагодарили: 9 раз
Контактная информация:

Re: Начальное значение в контроле

Сообщение Pavel Krivozubov »

Используй Property Value.
А что такое "Начальный момент времени"?
Если это момент запуска программы - то просто назначь его значением по умолчанию.
Или опять же программно через Property Value задай это значение до начала основного цикла.
Аватара пользователя
Fynjisx
beginner
beginner
Сообщения: 41
Зарегистрирован: 12 авг 2010, 19:29
Версия LabVIEW: 2009
Контактная информация:

Re: Начальное значение в контроле

Сообщение Fynjisx »

немного неправильно я наверное выразился... Ну короче говоря, я запускаю программу. Первое что она делает, она считывает из свойства Cursor все значения и выводит их на индикаторы. Далее если пользоваетль щелкает на группе контролов ответственных за запись в тоже самое свойство, то программа должна поместить их в ту же самую структуру и вывести на упомянутую мной ранее первую группу индикаторов. Так вот проблема в том, что в контролах в начальный момент времени(после запуска проги) стоят 0, а из структуры считываются вполне определённые значения. Поэтому мне нужно как то "заинициализировать контролы")
Аватара пользователя
Pavel Krivozubov

Activity Bronze
professor
professor
Сообщения: 4421
Зарегистрирован: 07 фев 2008, 16:39
Награды: 3
Версия LabVIEW: 7.0 - 2013
Откуда: г. Электросталь
Благодарил (а): 24 раза
Поблагодарили: 9 раз
Контактная информация:

Re: Начальное значение в контроле

Сообщение Pavel Krivozubov »

Вынужден повторить ответ:
пользуйтесь Property Node "Value". Пусть до запуска основного цикла программы они и передают те значения, которые нужно.
А вообще действительно, зачем столько индикаторов для курсоров??
Аватара пользователя
mzu2006

Professionalism Tutorials Black
doctor
doctor
Сообщения: 2456
Зарегистрирован: 16 авг 2008, 02:12
Награды: 3
Версия LabVIEW: 7.1 10 11 12
Откуда: St-Petersburg (RU), Phila, Boston, Washington DC
Контактная информация:

Re: Начальное значение в контроле

Сообщение mzu2006 »

Для инициализации controls удобно подходит локальная переменная.
Аватара пользователя
Fynjisx
beginner
beginner
Сообщения: 41
Зарегистрирован: 12 авг 2010, 19:29
Версия LabVIEW: 2009
Контактная информация:

Re: Начальное значение в контроле

Сообщение Fynjisx »

Indey писал(а):Вынужден повторить ответ:
А вообще действительно, зачем столько индикаторов для курсоров??
индикаторов действительно много, но все они для одного курсора. Чисто для себя я это делаю, чтоб посмотреть вживую какие поля за что отвечают. Плюс ко всему для меня это еще и тренировка в программировании, ведь за LabView я сел, где-то 2 недели назад.
Аватара пользователя
Eugen Graf

Activity Professionalism Silver Black
guru
guru
Сообщения: 6502
Зарегистрирован: 13 ноя 2007, 02:20
Награды: 4
Версия LabVIEW: 2009
Откуда: Saarbrücken
Контактная информация:

Re: Начальное значение в контроле

Сообщение Eugen Graf »

Отвлекись и расслабься, программирование на :labview: не требует такого тчательного обследования. На всякий случай имеется дибагинг, ты можешь проверить каждый провод во время исполнения программы, и вообще смотреть шаг за шагом как выпоняется блок диаграмма. Для этого тебе не нужно городить свои индикаторы.
Сосредоточься на цели программы, что конкретно она должна выполнять и действуй интуитивно. Этим и отличается :labview: от всяких непонятных сообщениях непонятно откуда и чего (то ли компилятор, то ли линковщик, какие то поинтеры и поинтеры на поинтеры **&&, то ли контруктор или дефинишон, а потом ещё и сегфолт в добавок).
В :labview: или работает или работеат не так как хочется или вообще не запускается. Но для двух недель опыта вроде неплохо, видимо приспичило и нужно работать каждый день :wink:

И вообще попробуй понять статью о советах и правилах программирования на :labview: , там написаны вещи из собственного опыта и подкорректировано по советам трудящихся. Каждое слово там правда, а если не понятно, обращайся.
Аватара пользователя
Pavel Krivozubov

Activity Bronze
professor
professor
Сообщения: 4421
Зарегистрирован: 07 фев 2008, 16:39
Награды: 3
Версия LabVIEW: 7.0 - 2013
Откуда: г. Электросталь
Благодарил (а): 24 раза
Поблагодарили: 9 раз
Контактная информация:

Re: Начальное значение в контроле

Сообщение Pavel Krivozubov »

eg писал(а):поместить например локальную переменную индикатора и контрола и соединить их между собой.
mzu2006 писал(а):Для инициализации controls удобно подходит локальная переменная.

а как же Правило 29 - "Ограничьте использование локальных и глобальных переменных"?
Аватара пользователя
mzu2006

Professionalism Tutorials Black
doctor
doctor
Сообщения: 2456
Зарегистрирован: 16 авг 2008, 02:12
Награды: 3
Версия LabVIEW: 7.1 10 11 12
Откуда: St-Petersburg (RU), Phila, Boston, Washington DC
Контактная информация:

Re: Начальное значение в контроле

Сообщение mzu2006 »

а как же Правило 29
Формально в правиле сказано "ограничьте", т.е. нарушения нет. Инициализация controls один из немногих случаев, когда использование локальных переменных не только оправдано, но и рекомендовано (например, в курсах NI). Запись в локальную переменную, вообще не так страшна, как чтение из нее (не создаётся копии). И, как правило, быстрее чем Property node -> Value.
Аватара пользователя
Eugen Graf

Activity Professionalism Silver Black
guru
guru
Сообщения: 6502
Зарегистрирован: 13 ноя 2007, 02:20
Награды: 4
Версия LabVIEW: 2009
Откуда: Saarbrücken
Контактная информация:

Re: Начальное значение в контроле

Сообщение Eugen Graf »

Тоже отпишусь. Эти правила рассчитаны больше на новичков, т.к. опытные программисты и так уже об этом знают, т.к. уже наверняка успели обжечься.
Использовать переменные конечно можно, но не нужно забывать о Race Conditions. При инициализации об этом беспокоится не нужно, поэтому я и предложил.
Аватара пользователя
Pavel Krivozubov

Activity Bronze
professor
professor
Сообщения: 4421
Зарегистрирован: 07 фев 2008, 16:39
Награды: 3
Версия LabVIEW: 7.0 - 2013
Откуда: г. Электросталь
Благодарил (а): 24 раза
Поблагодарили: 9 раз
Контактная информация:

Re: Начальное значение в контроле

Сообщение Pavel Krivozubov »

mzu2006 писал(а): Формально в правиле сказано "ограничьте", т.е. нарушения нет. Инициализация controls один из немногих случаев, когда использование локальных переменных не только оправдано, но и рекомендовано (например, в курсах NI). Запись в локальную переменную, вообще не так страшна, как чтение из нее (не создаётся копии). И, как правило, быстрее чем Property node -> Value.
Термин "ограничьте" там есть, но если почитать более развернуто, то лучше их вообще не использовать. Особенно если это касается глобальных переменных. Однако в этом случае, согласен - локальной можно и воспользоваться.
eg писал(а):Тоже отпишусь. Эти правила рассчитаны больше на новичков, т.к. опытные программисты и так уже об этом знают, т.к. уже наверняка успели обжечься.
Использовать переменные конечно можно, но не нужно забывать о Race Conditions. При инициализации об этом беспокоится не нужно, поэтому я и предложил.
Я это правило напомнил на будущее скорее. Что бы человек в последствии 10 раз подумал перед тем как их использовать.
Аватара пользователя
grjgrj

Gold Bronze
professional
professional
Сообщения: 300
Зарегистрирован: 18 фев 2009, 14:32
Награды: 2
Версия LabVIEW: 8.5-2011
Откуда: Караганда
Контактная информация:

Re: Начальное значение в контроле

Сообщение grjgrj »

mzu2006 писал(а):Для инициализации controls удобно подходит локальная переменная.
ИМХО: удобнее Property Node, так как у нее есть выход кластера ошибок, и можно задать порядок выполнения, без использование Sequence.
Аватара пользователя
mzu2006

Professionalism Tutorials Black
doctor
doctor
Сообщения: 2456
Зарегистрирован: 16 авг 2008, 02:12
Награды: 3
Версия LabVIEW: 7.1 10 11 12
Откуда: St-Petersburg (RU), Phila, Boston, Washington DC
Контактная информация:

Re: Начальное значение в контроле

Сообщение mzu2006 »

grjgrj писал(а):удобнее Property Node, так как у нее есть выход кластера ошибок
Да, это удобно. Но pn, как правило, медленнее. Плюс, в простых VI инициализация происходит в одном кадре конечного автомата и порядок выполнения не важен.
Ещё можно воспользоваться invoke node - set control value by name. Это удобно для автоматического сохранения-восстановления из ini файла
Ответить

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