Автоматическое повторное нажатие кнопки

Простейшие вопросы в области инженерной разработки
Аватара пользователя
Select
developer
developer
Сообщения: 261
Зарегистрирован: 12 дек 2017, 23:56
Репутация: 0
Версия LabVIEW: 18
Откуда: Врата надежды.

Re: Автоматическое повторное нажатие кнопки

Сообщение Select »

Выход один заложен тех заданием, здесь у меня 2 выхода, т.к. ничего другого в голову не пришло чтоб повторить итерацию и я понимаю что это криво, как временное решение это рулит и запускает сигнал именно в том варианте о котором здесь морочу всем голову, пожалуй первый цикл лишний его можно удалить оставив 1 итерацию в основном цикле.
Add 0 я указал для наглядности, чтоб была видна механика кнопки, там же и лед. Выставленный здесь пример это упрощенная и отрезанная часть от рабочей части диаграммы. Вместо Numeric у меня подключается Enum массив с предустановленными ID значениями для частотного генератора и т.д.
LabView 14

Аватара пользователя
taras_33

Activity
professional
professional
Сообщения: 343
Зарегистрирован: 31 окт 2009, 18:25
Награды: 1
Репутация: 0
Версия LabVIEW: 2019
Контактная информация:

Re: Автоматическое повторное нажатие кнопки

Сообщение taras_33 »

Действительно, такой код выполняет те действия о которых я говорил, но попытка прикрутить его к моей ситуации зашла в тупик. У меня Select задает условия в виде констант и отправляет их на выборку из массива. Буду курить этот метод дальше.
Ну если так принципиально нужен именно Select...
Double Press Btn_2.png
Выставленный здесь пример это упрощенная и отрезанная часть от рабочей части диаграммы. Вместо Numeric у меня подключается Enum массив с предустановленными ID значениями для частотного генератора и т.д.
Так чего Вы шифруетесь? Покажите всю диаграмму, чтоб понять в какой Вы там в тупик зашли.
Вложения
Double Press Btn_2.vi
(13.21 КБ) 55 скачиваний
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!

Аватара пользователя
Select
developer
developer
Сообщения: 261
Зарегистрирован: 12 дек 2017, 23:56
Репутация: 0
Версия LabVIEW: 18
Откуда: Врата надежды.

Re: Автоматическое повторное нажатие кнопки

Сообщение Select »

Double Press Btn_2.vi не завелся у меня 14.
возможно в Вашем примере, время завершения 1-го цикла большое, так же у меня в основном цикле есть и другие процедуры, таймер во 2 цикле позволяет мне настроить задержку как мне удобно.
То, что сейчас у меня работает выглядит так. Если не составит труда, прокомментируйте увиденные здесь проблемы и подводные камни.
Смотрел загрузку памяти, ничего критического не заметил, другие функции, присутствующие в основном цикле не тормозят, железо не виснет. :dntknw:
Целиком выставить всю блок диаграмму не реально, она выходит за пределы экрана, да и нет в этом смысла. Здесь 1:1 выставленна самостоятельная процедура как она есть в проекте.
Вложения
Push push 1.png
LabView 14

Аватара пользователя
taras_33

Activity
professional
professional
Сообщения: 343
Зарегистрирован: 31 окт 2009, 18:25
Награды: 1
Репутация: 0
Версия LabVIEW: 2019
Контактная информация:

Re: Автоматическое повторное нажатие кнопки

Сообщение taras_33 »

возможно в Вашем примере, время завершения 1-го цикла большое
Это не циклы, это FGV - рассмативайте этот "цикл" как обычную переменную с расширенными возможностями, которая помнит предыдущее значение, поэтому время здесь не при делах и задержек нет. Задержка между "нажатиями-отпусканиями" определяется задержкой основного цикла. Скажем в моем примере она составляет 500mS. Вы нажали кнопку - на выходе установилась единичка, через пол секунды она сменится на ноль, еще через пол секунды снова единичка, потом снова ноль. Т.e. время между сменами состояний определяется скоростью работы основного цикла.

Ваш последний пример:
Вместо Numeric у меня подключается Enum массив с предустановленными ID значениями для частотного генератора и т.д.
Вам действительно нужно каждые 600 mS (500 mS + 10 mS) отправлять данные в частотный генератор? В моем понимании установил необходимую частоту и забыл, до следующей необходимости ее изменить.
Но при любом раскладе while цикл это, как говорил Artem, извращение, замените его на Flat Sequence Structure
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!

Аватара пользователя
Select
developer
developer
Сообщения: 261
Зарегистрирован: 12 дек 2017, 23:56
Репутация: 0
Версия LabVIEW: 18
Откуда: Врата надежды.

Re: Автоматическое повторное нажатие кнопки

Сообщение Select »

Вам действительно нужно каждые 600 mS (500 mS + 10 mS) отправлять данные в частотный генератор?
Такого поведения не обнаруживаю, на протяжении всего активного состояния vi происходит два импульса выбранной частоты в одно нажатие кнопки, что и требуется. Никаких дальнейших повторов каждые 600 ms не происходит. Или мы говорим о разных вещах?
Flat Sequence Structure пробовал по аналогии с FGV, но я как то неверно строил там связи, или чего-то не хватало, не пошло.
LabView 14

Artem.spb

Activity Автор
expert
expert
Сообщения: 1942
Зарегистрирован: 31 июл 2011, 23:05
Награды: 2
Репутация: 0
Версия LabVIEW: 12-18
Контактная информация:

Re: Автоматическое повторное нажатие кнопки

Сообщение Artem.spb »

Select писал(а):
Вам действительно нужно каждые 600 mS (500 mS + 10 mS) отправлять данные в частотный генератор?
Такого поведения не обнаруживаю, на протяжении всего активного состояния vi происходит два импульса выбранной частоты в одно нажатие кнопки, что и требуется. Никаких дальнейших повторов каждые 600 ms не происходит. Или мы говорим о разных вещах?
Flat Sequence Structure пробовал по аналогии с FGV, но я как то неверно строил там связи, или чего-то не хватало, не пошло.
Как не происходит? Главный цикл работает, значит повторы идут. То, что импульса нет, не значит отсутствие сигнала. Вы просто отправляете 0 на выход.

Аватара пользователя
taras_33

Activity
professional
professional
Сообщения: 343
Зарегистрирован: 31 окт 2009, 18:25
Награды: 1
Репутация: 0
Версия LabVIEW: 2019
Контактная информация:

Re: Автоматическое повторное нажатие кнопки

Сообщение taras_33 »

Как не происходит? Главный цикл работает, значит повторы идут. То, что импульса нет, не значит отсутствие сигнала. Вы просто отправляете 0 на выход.
Артем прав...
Я бы изменил структуру программы. Например Producer-Consumer или
если извратиться, как показано ниже, применил бы конечный автомат
Double Press - State machine.png
Правда здесь есть недостаток - повторные нажатия на кнопку будут игнорироваться, пока не обработается первое.
посмотрите вложенный проект LV2014 вдруг поможет.
Вложения
Double Press Btn Folder.zip
(15.93 КБ) 30 скачиваний
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!

Аватара пользователя
Select
developer
developer
Сообщения: 261
Зарегистрирован: 12 дек 2017, 23:56
Репутация: 0
Версия LabVIEW: 18
Откуда: Врата надежды.

Re: Автоматическое повторное нажатие кнопки

Сообщение Select »

taras_33 писал(а):
посмотрите вложенный проект LV2014 вдруг поможет.
:labview: 14 этот vi не открывает.
Относительно тишины при переходе в нулевую частоту, согласен, действительно каждые 600 mS происходит генерация белого шума однородной плотности. Вопрос, как это влияет на окружение? В трансмиттерах, как впрочем и во всех приемопередающих системах это явление присутствует всегда и имеет относительный уровень по отношению к модулируемым сигналам на выделенных частотах. В моем случае это звенящий ноль, ну и пусть себе звенит и ни на какие процессы не влияет. У меня все процессы в программе построены на переходах от нуля, к нужной частоте.
Как не просил, так и не получаю коммент почему такой код не есть хорошо, мазохизм, изврат и т.п. К примеру, если в микропроцессорах явление дребезга обусловлено мусором, кривым алгоритмом или непродуманным до конца дизайном, существует масса способов коррекции и доведения до желаемого результата.
Попробую поиграться построить конечный автомат.
LabView 14

Аватара пользователя
taras_33

Activity
professional
professional
Сообщения: 343
Зарегистрирован: 31 окт 2009, 18:25
Награды: 1
Репутация: 0
Версия LabVIEW: 2019
Контактная информация:

Re: Автоматическое повторное нажатие кнопки

Сообщение taras_33 »

:labview: 14 этот vi не открывает.
Хм странно... Пересохранил в 2013
Update: Только что проверил - LV2014 данный проект открывает без проблем....
Как не просил, так и не получаю коммент почему такой код не есть хорошо, мазохизм, изврат и т.п.
Да потому что так никто не программирует! Как правило проект строят из нескольких независимых процессов - UI отдельно, коммуникация с железом отдельно, какие то ресурсо-затратные функции отдельно и т.д. Общение между ними через очереди, нотифаеры или юзер ивенты. Тогда и программа "отзывчива", не виснет, событий не пропускает...
Как Вам можно что то посоветовать если нет общего понимания всей структуры и назначения программы. Да и с Вашей стороны...
Flat Sequence Structure пробовал по аналогии с FGV, но я как то неверно строил там связи, или чего-то не хватало, не пошло.
- ну почитайте Вы самые азы... Но Вы ранее писали что на это у Вас нет времени.
непродуманным до конца дизайном, существует масса способов коррекции и доведения до желаемого результата.
Вот тут прямо в точку! См. Выше
Вложения
State machine.zip
(14.94 КБ) 33 скачивания
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!

Аватара пользователя
Select
developer
developer
Сообщения: 261
Зарегистрирован: 12 дек 2017, 23:56
Репутация: 0
Версия LabVIEW: 18
Откуда: Врата надежды.

Re: Автоматическое повторное нажатие кнопки

Сообщение Select »

taras_33, благодарю, файл открылся, благодарю за коммент, попробую Ваш вариант, по результату отпишусь.
LabView 14

Аватара пользователя
Select
developer
developer
Сообщения: 261
Зарегистрирован: 12 дек 2017, 23:56
Репутация: 0
Версия LabVIEW: 18
Откуда: Врата надежды.

Re: Автоматическое повторное нажатие кнопки

Сообщение Select »

Адаптация не получается.
В моем примере я могу организовать сколько угодно генерируемых частот задавая их диапазон с присвоением к каждому номер в виде константы, производить их выборку в массиве по предустановленным номерам и соответственно селективно запускать эти частоты.
В варианте State machine я лишен такой возможности, хотя алгоритм итерации правильный.
Версия
Double Press Btn_2.png на мой взгляд имеет больше шансов, попробую его покурить.
LabView 14

Аватара пользователя
taras_33

Activity
professional
professional
Сообщения: 343
Зарегистрирован: 31 окт 2009, 18:25
Награды: 1
Репутация: 0
Версия LabVIEW: 2019
Контактная информация:

Re: Автоматическое повторное нажатие кнопки

Сообщение taras_33 »

Видимо я чего-то не понимаю :think:
Вложения
SM.zip
LV2013
(15.3 КБ) 32 скачивания
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!

Аватара пользователя
Select
developer
developer
Сообщения: 261
Зарегистрирован: 12 дек 2017, 23:56
Репутация: 0
Версия LabVIEW: 18
Откуда: Врата надежды.

Re: Автоматическое повторное нажатие кнопки

Сообщение Select »

taras_33,
Самое то :drink:
Коллективный разум незаменим.
Товарищ Сталин сказал бы - " У этой аджики большое будущее " :brows:
Вложения
Push push.png
LabView 14

Ответить

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