Вопрос по Event Structure

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

Вопрос по Event Structure

Сообщение Fynjisx »

обьясните пож-ста, для чего нужен TimeOut case?
Аватара пользователя
Eugen Graf

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

Re: Вопрос по Event Structure

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

В случае, если ни один ивент за время (Timeout в левом верхнем углу) не произошёл, то ивент структура выполняет Timeout Case.
В случае если Timeout не подключен, то Timeout Case не выполняется вообще, а значит его можно вообще удалить.
Аватара пользователя
Eugen Graf

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

Re: Вопрос по Event Structure

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

Но использование Timeout может вылится в неприятное поведение программы. В случае если какой нибудь из ивентов происходит чаще чем таймаут, то итерация цикла происходит чаще, чем предполагается, при этом содержимое таймаут кейса не выполняется вообще.
Поэтому я никогда не использую таймаут в ивент структуре.
Borjomy
interested
interested
Сообщения: 2
Зарегистрирован: 04 авг 2010, 10:42
Версия LabVIEW: 9.0
Контактная информация:

Re: Вопрос по Event Structure

Сообщение Borjomy »

Таймаут кейс предназначен для выполнения фоновых операций, когда VI простаивает и не более того. Если в них есть необходимость, например, обновление значений на экране (чтобы не городить отдельный поток), то вполне его можно использовать
Аватара пользователя
Eugen Graf

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

Re: Вопрос по Event Structure

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

Да, но как я уже написал выше, не факт, что он будет выполняться. Всё зависит от выставленного времени Timeout и скорости поступления и скорости выполнения ивентов.
Три фактора, два из которых вариируют.
Pavel

Activity
developer
developer
Сообщения: 271
Зарегистрирован: 31 июл 2009, 08:07
Награды: 1
Версия LabVIEW: 8.5

Re: Вопрос по Event Structure

Сообщение Pavel »

eg писал(а):Но использование Timeout может вылится в неприятное поведение программы. В случае если какой нибудь из ивентов происходит чаще чем таймаут, то итерация цикла происходит чаще, чем предполагается, при этом содержимое таймаут кейса не выполняется вообще.
Поэтому я никогда не использую таймаут в ивент структуре.
Как в прочем не использование time out’а может привести к подвисанию потока.
Аватара пользователя
Eugen Graf

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

Re: Вопрос по Event Structure

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

Это какое такое ещё подвисание?
Аватара пользователя
Alex89

Activity
adviser
adviser
Сообщения: 202
Зарегистрирован: 04 апр 2010, 18:20
Награды: 1
Версия LabVIEW: 2009 SP1
Откуда: Санкт-Петербург

Re: Вопрос по Event Structure

Сообщение Alex89 »

Может быть он имел ввиду, что цикл с event структурой без event timeout не будет выполняться, если не будут происходить события? Но event вообще нужно использовать отдельным потоком, тогда все будет нормально.
Аватара пользователя
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: Вопрос по Event Structure

Сообщение mzu2006 »

иногда event structure используется для обработки событий, генерируемых системными компонентами. Например, DAQmx способен высылать сообщение по опустошению половины буфера, например. Такие события удобно обрабатывать отдельным потоком, используя отдельную Event Structure. И тогда, пригодится timeout case, чтобы сгенерировать ошибку.
Pavel

Activity
developer
developer
Сообщения: 271
Зарегистрирован: 31 июл 2009, 08:07
Награды: 1
Версия LabVIEW: 8.5

Re: Вопрос по Event Structure

Сообщение Pavel »

eg писал(а):Это какое такое ещё подвисание?
Пардон, за то, что ввел в заблуждение - на работе запары. Что может “подвесить”? Как тут уже написали - это отсутствие событий. К примеру, родитель этого потока помер или референс кто-то прикрыл. Согласен, что такое случается редко, но такое случается (особенно на этапах отладки большого многопоточного проекта). Я уже не занимаюсь программированием по “большому”, поэтому довольно-таки сложно привести пример сходу, но в моей практике были случаи, когда из-за некорректного закрытия потока (abort vi) работающего с железом LV подвисала намертво. Референс был утерян и как следствие до потока не достучаться. Так что тоймауты иногда бывают полезны.
Ответить
  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

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