Автоматическое повторное нажатие кнопки
- Select
- developer
- Сообщения: 281
- Зарегистрирован: 12 дек 2017, 23:56
- Версия LabVIEW: 18
- Откуда: Врата надежды.
- Поблагодарили: 2 раза
Автоматическое повторное нажатие кнопки
Всем добрый вечер,
Задача построить кнопку, которая бы симулировала аппаратную PUSH BUSH, т.е. в отжатом положении имеет Off, нажатие On.
Кнопка после первого ручного нажатия, спустя 70 - 100 ms должна еще раз нажаться, ее механическое свойство Latch When Relased.
Для чего мне это нужно:
у меня по входным портам CPU (доступа к hex нет) конфигурируется аппаратно свитчами на 1 из 8 вариантов открытия выходных портов, к примеру после нажатия по входу = 1, выходной порт переходит в непрерывный высокий уровень 1, или открывается на 1 с, или наоборот постоянно открытый высокий уровень переходит в низкий до следующего нажатия и т.д. Из за отсутствия возможности манипулирования этими свойствами на одном CPU, я вынужден брать 2, 3, и более CPU и настраивать их под нужные варианты управления, запитывать, строить обвязку от встречных напряжений на задействованные порты и прочий гимор.
Имея программную кнопку PUSH BUSH, с настройкой времени повторного автоматического нажатия, я бы смог как минимум посадить на 1 CPU одновременно 2 варианта управления, при этом с конфигурацией под 1 вариант.
Здесь на форуме я рассматривал вариант автоматического отключения кнопки спустя заданное время, но мой алгоритм иного назначения, поэтому не стал все валить в одну кучу.
Набросок какой то диаграммы, если мало что понятно из в.с. загружу.
Задача построить кнопку, которая бы симулировала аппаратную PUSH BUSH, т.е. в отжатом положении имеет Off, нажатие On.
Кнопка после первого ручного нажатия, спустя 70 - 100 ms должна еще раз нажаться, ее механическое свойство Latch When Relased.
Для чего мне это нужно:
у меня по входным портам CPU (доступа к hex нет) конфигурируется аппаратно свитчами на 1 из 8 вариантов открытия выходных портов, к примеру после нажатия по входу = 1, выходной порт переходит в непрерывный высокий уровень 1, или открывается на 1 с, или наоборот постоянно открытый высокий уровень переходит в низкий до следующего нажатия и т.д. Из за отсутствия возможности манипулирования этими свойствами на одном CPU, я вынужден брать 2, 3, и более CPU и настраивать их под нужные варианты управления, запитывать, строить обвязку от встречных напряжений на задействованные порты и прочий гимор.
Имея программную кнопку PUSH BUSH, с настройкой времени повторного автоматического нажатия, я бы смог как минимум посадить на 1 CPU одновременно 2 варианта управления, при этом с конфигурацией под 1 вариант.
Здесь на форуме я рассматривал вариант автоматического отключения кнопки спустя заданное время, но мой алгоритм иного назначения, поэтому не стал все валить в одну кучу.
Набросок какой то диаграммы, если мало что понятно из в.с. загружу.
LabView 14,18
-
Kosist
- expert
- Сообщения: 1236
- Зарегистрирован: 21 фев 2011, 23:44
- Награды: 2
- Версия LabVIEW: 2013-2020
- Благодарил (а): 23 раза
- Поблагодарили: 30 раз
- Контактная информация:
Re: Автоматическое повторное нажатие кнопки
Диаграмму в студию, т.к. лично для меня объяснение было довольно путанное, и не вполне понятное...
Но вопрос следующий - а обязательно это делать именно кнопкой? Почему бы не организовать логику управления в стейт-машине, и там уже отслеживать состояние управляющих сигналов, и по таймеру их повторно отжимать/нажимать? Ведь все сигналы можно представить как массив булеанов - вот и изменяйте их значения на True/False, и отсылайте куда нужно с нужным интервалом.
Т.е. жмете кнопку на интерфейсе -> отлавливаете это событие -> переходите в нужный стейт стейт машины -> отслеживаете таймер -> делаете что нужно + можете также "клацать" кнопкой программно, чтобы юзеру было видно, что происходит.
Но вопрос следующий - а обязательно это делать именно кнопкой? Почему бы не организовать логику управления в стейт-машине, и там уже отслеживать состояние управляющих сигналов, и по таймеру их повторно отжимать/нажимать? Ведь все сигналы можно представить как массив булеанов - вот и изменяйте их значения на True/False, и отсылайте куда нужно с нужным интервалом.
Т.е. жмете кнопку на интерфейсе -> отлавливаете это событие -> переходите в нужный стейт стейт машины -> отслеживаете таймер -> делаете что нужно + можете также "клацать" кнопкой программно, чтобы юзеру было видно, что происходит.
Мы делили апельсин - много наших полегло...
- Select
- developer
- Сообщения: 281
- Зарегистрирован: 12 дек 2017, 23:56
- Версия LabVIEW: 18
- Откуда: Врата надежды.
- Поблагодарили: 2 раза
Re: Автоматическое повторное нажатие кнопки
Диаграмма и vi.
При нажатии на кнопку, открывается 1, нужно чтоб она после первого открытия 1и перехода в 0, еще раз открылась 1 спустя 100 ms и вернулась в 0.
Это в данной ситуации мне представляется громоздко и вовлекает в дополнительные аппаратные вложения.
При нажатии на кнопку, открывается 1, нужно чтоб она после первого открытия 1и перехода в 0, еще раз открылась 1 спустя 100 ms и вернулась в 0.
Может я не правильно понял, Вы пердлагаете посредством Visa мониторить объект лист, производить сбор состояния портов CPU и т.д.?организовать логику управления в стейт-машине, и там уже отслеживать состояние управляющих сигналов, и по таймеру их повторно отжимать/нажимать? Ведь все сигналы можно представить как массив булеанов - вот и изменяйте их значения на True/False, и отсылайте куда нужно с нужным интервалом.
Это в данной ситуации мне представляется громоздко и вовлекает в дополнительные аппаратные вложения.
- Вложения
-
- Push Bush.png (4.24 КБ) 4203 просмотра
-
- Push push.vi
- (8.31 КБ) 101 скачивание
LabView 14,18
-
Vitekkz88
- expert
- Сообщения: 1100
- Зарегистрирован: 21 янв 2014, 15:45
- Награды: 3
- Версия LabVIEW: 12,13,14
- Откуда: Томск
- Контактная информация:
Re: Автоматическое повторное нажатие кнопки
Select, когда Вы используете механическое свойство кнопки Lath - то нет возможности использовать её свойства val, val(sgl) из property node. Стройте подобное поведение используя механическое свойство кнопки Switch. Либо делайте последовательность из frame-structure:
1. То, что вы пердставили
2. Задержка 100 мс
3. Логика из шага 1 + индикатор для визуализации, что кнопка была нажата.
1. То, что вы пердставили
2. Задержка 100 мс
3. Логика из шага 1 + индикатор для визуализации, что кнопка была нажата.
Инженер - это открыто светящийся интеллект, свободный и не обидный юмор, это легкость и широта мысли...Это воспитанность, тонкость вкусов, хорошая речь, плавно согласованная и без сорных словечек...
-А. И. Солженицын
-А. И. Солженицын
-
taras_33
- professional
- Сообщения: 392
- Зарегистрирован: 31 окт 2009, 18:25
- Награды: 1
- Версия LabVIEW: 2019
- Поблагодарили: 13 раз
- Контактная информация:
Re: Автоматическое повторное нажатие кнопки
Если не принципиально нажимать именно кнопку, то можно использовать FGV например так
Но мне кажется что то тут не так, странный какой то подход...
Но мне кажется что то тут не так, странный какой то подход...
- Вложения
-
- Double Press Btn.vi
- (9.61 КБ) 86 скачиваний
Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the Universe trying to produce bigger and better idiots.
So far, the Universe is winning!
So far, the Universe is winning!
- Select
- developer
- Сообщения: 281
- Зарегистрирован: 12 дек 2017, 23:56
- Версия LabVIEW: 18
- Откуда: Врата надежды.
- Поблагодарили: 2 раза
Re: Автоматическое повторное нажатие кнопки
taras_33,
Самое то, Большое спасибо за содействие.
Что именно Вас смущает?
Самое то, Большое спасибо за содействие.
Что именно Вас смущает?
LabView 14,18
-
Vitekkz88
- expert
- Сообщения: 1100
- Зарегистрирован: 21 янв 2014, 15:45
- Награды: 3
- Версия LabVIEW: 12,13,14
- Откуда: Томск
- Контактная информация:
Re: Автоматическое повторное нажатие кнопки
FGV - Functional Global Variable(функциональная глобальная переменная), это если кто не разобрался
Инженер - это открыто светящийся интеллект, свободный и не обидный юмор, это легкость и широта мысли...Это воспитанность, тонкость вкусов, хорошая речь, плавно согласованная и без сорных словечек...
-А. И. Солженицын
-А. И. Солженицын
- Select
- developer
- Сообщения: 281
- Зарегистрирован: 12 дек 2017, 23:56
- Версия LabVIEW: 18
- Откуда: Врата надежды.
- Поблагодарили: 2 раза
Re: Автоматическое повторное нажатие кнопки
Vitekkz88, FGV с белого листа не потяну, хорошо бы пример посмотреть с кнопками и ледами. taras_33,
Действительно, такой код выполняет те действия о которых я говорил, но попытка прикрутить его к моей ситуации зашла в тупик. У меня Select задает условия в виде констант и отправляет их на выборку из массива. Буду курить этот метод дальше.
Действительно, такой код выполняет те действия о которых я говорил, но попытка прикрутить его к моей ситуации зашла в тупик. У меня Select задает условия в виде констант и отправляет их на выборку из массива. Буду курить этот метод дальше.
LabView 14,18
- Select
- developer
- Сообщения: 281
- Зарегистрирован: 12 дек 2017, 23:56
- Версия LabVIEW: 18
- Откуда: Врата надежды.
- Поблагодарили: 2 раза
Re: Автоматическое повторное нажатие кнопки
Задача все еще актуальна, попробую представить ее в другом ракурсе.
Нужно каким то образом выполнить автоматический повтор (запуск) сигнала из моего примера в начале темы (повтор предыдущей процедуры). Кнопка дважды с интервалом в 100 ms запускает команду на выборку из массива.
Нужно каким то образом выполнить автоматический повтор (запуск) сигнала из моего примера в начале темы (повтор предыдущей процедуры). Кнопка дважды с интервалом в 100 ms запускает команду на выборку из массива.
LabView 14,18
-
taras_33
- professional
- Сообщения: 392
- Зарегистрирован: 31 окт 2009, 18:25
- Награды: 1
- Версия LabVIEW: 2019
- Поблагодарили: 13 раз
- Контактная информация:
Re: Автоматическое повторное нажатие кнопки
Старею видимо, непонятливый стал....Нужно каким то образом выполнить автоматический повтор (запуск) сигнала из моего примера в начале темы (повтор предыдущей процедуры). Кнопка дважды с интервалом в 100 ms запускает команду на выборку из массива
Первый пост - механическое свойство кнопки:
В представленном примере, если это можно назвать примером, механическое свойство Latch when pressed...механическое свойство Latch When Relased.
Что в представленном Вами примере, Вы называете процедурой?сигнала из моего примера в начале темы (повтор предыдущей процедуры).
Покажите как выглядит эта команда.команду на выборку из массива
Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the Universe trying to produce bigger and better idiots.
So far, the Universe is winning!
So far, the Universe is winning!
- Select
- developer
- Сообщения: 281
- Зарегистрирован: 12 дек 2017, 23:56
- Версия LabVIEW: 18
- Откуда: Врата надежды.
- Поблагодарили: 2 раза
Re: Автоматическое повторное нажатие кнопки
taras_33,
Для большей ясности, это сейчас работает правильно, но код прожорливый.
Для большей ясности, это сейчас работает правильно, но код прожорливый.
LabView 14,18
-
- professor
- Сообщения: 3407
- Зарегистрирован: 31 июл 2011, 23:05
- Награды: 2
- Версия LabVIEW: 12-18
- Благодарил (а): 49 раз
- Поблагодарили: 176 раз
- Контактная информация:
Re: Автоматическое повторное нажатие кнопки
код не прожорливый, а бессмысленный.Select писал(а):taras_33,
Для большей ясности, это сейчас работает правильно, но код прожорливый.
Использовать циклы, чтобы не использовать секвенсы? Или ради чего такие извращения?
-
taras_33
- professional
- Сообщения: 392
- Зарегистрирован: 31 окт 2009, 18:25
- Награды: 1
- Версия LabVIEW: 2019
- Поблагодарили: 13 раз
- Контактная информация:
Re: Автоматическое повторное нажатие кнопки
Да Вы батенька мазохист! Ну да ладно, обсуждать Ваш код смысла не вижу.Для большей ясности, это сейчас работает правильно
Два вопроса. Какое механическое свойство кнопки? Должно быть два выхода?
Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the Universe trying to produce bigger and better idiots.
So far, the Universe is winning!
So far, the Universe is winning!
- Select
- developer
- Сообщения: 281
- Зарегистрирован: 12 дек 2017, 23:56
- Версия LabVIEW: 18
- Откуда: Врата надежды.
- Поблагодарили: 2 раза
Re: Автоматическое повторное нажатие кнопки
taras_33,
Механическое свойство кнопки Latch When, выход один, после нажатия кнопки выполняется итерация в 1-м цикле и повторяется с задержкой во втором. Таким образом я дважды транслирую один и тот же сигнал в одно нажатие кнопки.
Немного подправил диаграмму, так же прилагаю vi.
Каким образом эту процедуру оптимизировать не исключая представленные элементы в 1 цикле?
Механическое свойство кнопки Latch When, выход один, после нажатия кнопки выполняется итерация в 1-м цикле и повторяется с задержкой во втором. Таким образом я дважды транслирую один и тот же сигнал в одно нажатие кнопки.
Немного подправил диаграмму, так же прилагаю vi.
Каким образом эту процедуру оптимизировать не исключая представленные элементы в 1 цикле?
- Вложения
-
- Push push.vi
- (11.06 КБ) 84 скачивания
LabView 14,18
-
taras_33
- professional
- Сообщения: 392
- Зарегистрирован: 31 окт 2009, 18:25
- Награды: 1
- Версия LabVIEW: 2019
- Поблагодарили: 13 раз
- Контактная информация:
Re: Автоматическое повторное нажатие кнопки
Как же один? Я вижу два. И еще меня любопытство раздирает, какую полезную нагрузку в Вашем коде играют Add функции? Какой смысл добавлять к чему бы то ни было ноль?выход один
Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the Universe trying to produce bigger and better idiots.
So far, the Universe is winning!
So far, the Universe is winning!
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
- 1 Ответы
- 129 Просмотры
-
Последнее сообщение Artem.spb