Нужен совет!
-
- junior
- Сообщения: 66
- Зарегистрирован: 13 дек 2018, 13:55
- Версия LabVIEW: 2018
- Откуда: Саратов
Нужен совет!
Мужики выручите застрял на такой штуке. Мне нужно что бы я прокликал кнопки, а индикаторы загорелись в той последовательности в которой кликал, но с задержкой в секунду. Т.е я быстро все их кликнул, а они с задержкой друг за другом включились. Пробовал сделать с очередью Queue, но что то не выходит. Помогите советом, как сделать правильно?
-
IvanLis
- guru
- Сообщения: 5463
- Зарегистрирован: 02 дек 2009, 17:44
- Награды: 7
- Версия LabVIEW: 2015, 2016
- Откуда: СССР
- Благодарил (а): 28 раз
- Поблагодарили: 87 раз
Re: Нужен совет!
Мужик, с очередью тоже должно работать, только цикл обработки очереди должен медленнее работать, чем производитель событий. Выкладывайте, что Вы уже сделали, будем разбираться в чем ошибка.yakuba26 писал(а):Мужики выручите застрял на такой штуке. Мне нужно что бы я прокликал кнопки, а индикаторы загорелись в той последовательности в которой кликал, но с задержкой в секунду. Т.е я быстро все их кликнул, а они с задержкой друг за другом включились. Пробовал сделать с очередью Queue, но что то не выходит. Помогите советом, как сделать правильно?
Знание нескольких принципов освобождает от знания многих фактов!
Правила форума
Как добавить в сообщение картинку или файл
Конвертация / версий (форматов) VI
Как правильно задать вопрос...
Правила форума
Как добавить в сообщение картинку или файл
Конвертация / версий (форматов) VI
Как правильно задать вопрос...
-
- junior
- Сообщения: 66
- Зарегистрирован: 13 дек 2018, 13:55
- Версия LabVIEW: 2018
- Откуда: Саратов
Re: Нужен совет!
[quote="IvanLis"][quote="yakuba26"]
Я понимаю, что сделал полную ерунду, но больше на ум не приходит.
Я понимаю, что сделал полную ерунду, но больше на ум не приходит.
- Вложения
-
- Untitled 1.vi
- (7.92 КБ) 77 скачиваний
-
IvanLis
- guru
- Сообщения: 5463
- Зарегистрирован: 02 дек 2009, 17:44
- Награды: 7
- Версия LabVIEW: 2015, 2016
- Откуда: СССР
- Благодарил (а): 28 раз
- Поблагодарили: 87 раз
Re: Нужен совет!
Вам необходимо в цикле отправки использовать EventCase, что бы событие генерировалось только при нажатии кнопки. И писать события последовательно, именно в той очередности как они генерируются.yakuba26 писал(а):Я понимаю, что сделал полную ерунду, но больше на ум не приходит.
В цикле обработки необходимо добавить задержку после фиксации события перед изменением состояния индикатора. События обрабатывать последовательно.
Откройте любой пример с использованием очереди и найдите отличия логике работы.
Знание нескольких принципов освобождает от знания многих фактов!
Правила форума
Как добавить в сообщение картинку или файл
Конвертация / версий (форматов) VI
Как правильно задать вопрос...
Правила форума
Как добавить в сообщение картинку или файл
Конвертация / версий (форматов) VI
Как правильно задать вопрос...
-
- junior
- Сообщения: 66
- Зарегистрирован: 13 дек 2018, 13:55
- Версия LabVIEW: 2018
- Откуда: Саратов
Re: Нужен совет!
Не могли показать небольшим примером если не сложно Про эвент и задержку понял, но вот более подходящий пример так и не нашелIvanLis писал(а): И писать события последовательно, именно в той очередности как они генерируются.
В цикле обработки необходимо добавить задержку после фиксации события перед изменением состояния индикатора. События обрабатывать последовательно.
-
IvanLis
- guru
- Сообщения: 5463
- Зарегистрирован: 02 дек 2009, 17:44
- Награды: 7
- Версия LabVIEW: 2015, 2016
- Откуда: СССР
- Благодарил (а): 28 раз
- Поблагодарили: 87 раз
Re: Нужен совет!
Примера выполнения Вашей задачи Вы и не найдете.yakuba26 писал(а):Не могли показать небольшим примером если не сложно Про эвент и задержку понял, но вот более подходящий пример так и не нашел
За основу нужно брать стандартные примеры:
Example
Refer to the Queue Overflow and Underflow VI in the labview\examples\Synchronization\Queue directory for an example of using the Obtain Queue function.
Знание нескольких принципов освобождает от знания многих фактов!
Правила форума
Как добавить в сообщение картинку или файл
Конвертация / версий (форматов) VI
Как правильно задать вопрос...
Правила форума
Как добавить в сообщение картинку или файл
Конвертация / версий (форматов) VI
Как правильно задать вопрос...
-
Jakob Brontfeyn
- expert
- Сообщения: 1729
- Зарегистрирован: 28 фев 2008, 11:01
- Награды: 6
- Благодарил (а): 1 раз
- Контактная информация:
-
- junior
- Сообщения: 66
- Зарегистрирован: 13 дек 2018, 13:55
- Версия LabVIEW: 2018
- Откуда: Саратов
Re: Нужен совет!
Можете пожайлуста подсказать, как сделать, что бы на выходе из очереди, булиновский элемент очереди передовался определенному индикатору?
( тип данных очереди булиновский )
( тип данных очереди булиновский )
-
- professor
- Сообщения: 3404
- Зарегистрирован: 31 июл 2011, 23:05
- Награды: 2
- Версия LabVIEW: 12-18
- Благодарил (а): 49 раз
- Поблагодарили: 174 раза
- Контактная информация:
Re: Нужен совет!
Если элементы попадают в очередь в строгом порядке, то проверяйте индекс цикла (например, case-структурой), и в зависимости от него действуйтеyakuba26 писал(а):Можете пожайлуста подсказать, как сделать, что бы на выходе из очереди, булиновский элемент очереди передовался определенному индикатору?
( тип данных очереди булиновский )
Если элементы попадают в очередь в случайном порядке, то никак.
Измените очередь: отправляйте кластер: получатель и значение. Дальше опять case-структурой
-
- junior
- Сообщения: 66
- Зарегистрирован: 13 дек 2018, 13:55
- Версия LabVIEW: 2018
- Откуда: Саратов
Re: Нужен совет!
Artem.spb,
Не могли бы подсказать, как сделать задержку в очереди? Ставлю обычную задержку она не работает, очередь не тормозится. Хочу что бы элементы из очереди удалялись ( считывались с задержкой ). Решил пока кейсы не ставить, попробовать на сравнении.
Не могли бы подсказать, как сделать задержку в очереди? Ставлю обычную задержку она не работает, очередь не тормозится. Хочу что бы элементы из очереди удалялись ( считывались с задержкой ). Решил пока кейсы не ставить, попробовать на сравнении.
-
- professor
- Сообщения: 3404
- Зарегистрирован: 31 июл 2011, 23:05
- Награды: 2
- Версия LabVIEW: 12-18
- Благодарил (а): 49 раз
- Поблагодарили: 174 раза
- Контактная информация:
Re: Нужен совет!
что за дикая дикость? элементы из очереди должны извлекаться как можно быстрее, без всяких задержек. Задержка, если уж нужна, должна быть на стороне отправки. Иначе, если отправка идёт чаще, чем чтение, у вас очередь будет бесконечно расти.yakuba26 писал(а):Artem.spb,
Хочу что бы элементы из очереди удалялись ( считывались с задержкой ).
-
- leader
- Сообщения: 932
- Зарегистрирован: 17 янв 2016, 15:02
- Награды: 1
- Версия LabVIEW: 6.1,8.5,20
Re: Нужен совет!
Это не выход - тупик.yakuba26 писал(а):Нашел выход из ситуации, увеличил время задержки
Событие Mouse Down не обязательно приводит к изменению состояния кнопки. В результате это может привести к не соответствию значения (состояния) кнопки значению (состоянию) индикатора. В приведенном примере задержка задается контролом duration (msec). Попробуйте быстро щелкать по кнопке не дожидаясь реакции индикатора.
-
- junior
- Сообщения: 66
- Зарегистрирован: 13 дек 2018, 13:55
- Версия LabVIEW: 2018
- Откуда: Саратов
Re: Нужен совет!
Ну пока осечек не было с Mouse Down. Вот как сделал в итоге. У меня стоповые кнопки идет в приоритете над пусковыми ( остальные ивенты идентичны ). Потом всю эту очередь буду посылать в порт.Blackman писал(а):Это не выход - тупик.yakuba26 писал(а):Нашел выход из ситуации, увеличил время задержки
Событие Mouse Down не обязательно приводит к изменению состояния кнопки. В результате это может привести к не соответствию значения (состояния) кнопки значению (состоянию) индикатора. В приведенном примере задержка задается контролом duration (msec). Попробуйте быстро щелкать по кнопке не дожидаясь реакции индикатора.
А что у вас за блоки для назначения ссылки на очередь? Нигде не встречал таких.
-
IvanLis
- guru
- Сообщения: 5463
- Зарегистрирован: 02 дек 2009, 17:44
- Награды: 7
- Версия LabVIEW: 2015, 2016
- Откуда: СССР
- Благодарил (а): 28 раз
- Поблагодарили: 87 раз
Re: Нужен совет!
В качестве зарядки для мозгов можете разобраться с примером.
Untitled 1.vi - собственно основная программа.
Здесь в верхнем цикле, при нажатии на конку, мы передаем таймеру название кнопки.
В нижнем цикле мы обрабатываем очередь, принимаем имя кнопки и в зависимости от нажатой кнопки зажигаем один из четырех индикаторов.
Это может и не самое элегантное решение, но наверняка самое ресурсо экономичное.
И не забудьте правильно указать путь к таймеру в статической ссылке (указана стрелкой).
Untitled 2 (SubVI).vi - таймер (реентерабельная subVI), который запускается в асинхронном режиме по нажатии на кнопку и по истечении 1 сек отправляет в очередь сообщение с именем нажатой кнопки.Untitled 1.vi - собственно основная программа.
Здесь в верхнем цикле, при нажатии на конку, мы передаем таймеру название кнопки.
В нижнем цикле мы обрабатываем очередь, принимаем имя кнопки и в зависимости от нажатой кнопки зажигаем один из четырех индикаторов.
Это может и не самое элегантное решение, но наверняка самое ресурсо экономичное.
И не забудьте правильно указать путь к таймеру в статической ссылке (указана стрелкой).
Знание нескольких принципов освобождает от знания многих фактов!
Правила форума
Как добавить в сообщение картинку или файл
Конвертация / версий (форматов) VI
Как правильно задать вопрос...
Правила форума
Как добавить в сообщение картинку или файл
Конвертация / версий (форматов) VI
Как правильно задать вопрос...