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

Простейшие вопросы в области инженерной разработки

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

Postby Select on 09 Nov 2018, 23:15

Выход один заложен тех заданием, здесь у меня 2 выхода, т.к. ничего другого в голову не пришло чтоб повторить итерацию и я понимаю что это криво, как временное решение это рулит и запускает сигнал именно в том варианте о котором здесь морочу всем голову, пожалуй первый цикл лишний его можно удалить оставив 1 итерацию в основном цикле.
Add 0 я указал для наглядности, чтоб была видна механика кнопки, там же и лед. Выставленный здесь пример это упрощенная и отрезанная часть от рабочей части диаграммы. Вместо Numeric у меня подключается Enum массив с предустановленными ID значениями для частотного генератора и т.д.
LabView 14
User avatar
Select
assistant
assistant
 
Posts: 110
Joined: 12 Dec 2017, 23:56
Location: Врата надежды.
LabVIEW Version: 14
Karma: 0

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

Postby taras_33 on 10 Nov 2018, 02:39

Действительно, такой код выполняет те действия о которых я говорил, но попытка прикрутить его к моей ситуации зашла в тупик. У меня Select задает условия в виде констант и отправляет их на выборку из массива. Буду курить этот метод дальше.


Ну если так принципиально нужен именно Select...
Double Press Btn_2.png


Выставленный здесь пример это упрощенная и отрезанная часть от рабочей части диаграммы. Вместо Numeric у меня подключается Enum массив с предустановленными ID значениями для частотного генератора и т.д.

Так чего Вы шифруетесь? Покажите всю диаграмму, чтоб понять в какой Вы там в тупик зашли.
Attachments
Double Press Btn_2.vi
(13.21 KiB) Downloaded 14 times
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!
User avatar
taras_33
developer
developer
 
Posts: 255
Joined: 31 Oct 2009, 18:25
Location: Minsk -> Miami
Medals: 1
Activity (1)
LabVIEW Version: 2016
Karma: 121
CLD VIP

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

Postby Select on 10 Nov 2018, 12:55

Double Press Btn_2.vi не завелся у меня 14.
возможно в Вашем примере, время завершения 1-го цикла большое, так же у меня в основном цикле есть и другие процедуры, таймер во 2 цикле позволяет мне настроить задержку как мне удобно.
То, что сейчас у меня работает выглядит так. Если не составит труда, прокомментируйте увиденные здесь проблемы и подводные камни.
Смотрел загрузку памяти, ничего критического не заметил, другие функции, присутствующие в основном цикле не тормозят, железо не виснет. :dntknw:
Целиком выставить всю блок диаграмму не реально, она выходит за пределы экрана, да и нет в этом смысла. Здесь 1:1 выставленна самостоятельная процедура как она есть в проекте.
Attachments
Push push 1.png
LabView 14
User avatar
Select
assistant
assistant
 
Posts: 110
Joined: 12 Dec 2017, 23:56
Location: Врата надежды.
LabVIEW Version: 14
Karma: 0

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

Postby taras_33 on 10 Nov 2018, 19:13

возможно в Вашем примере, время завершения 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!
User avatar
taras_33
developer
developer
 
Posts: 255
Joined: 31 Oct 2009, 18:25
Location: Minsk -> Miami
Medals: 1
Activity (1)
LabVIEW Version: 2016
Karma: 121
CLD VIP

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

Postby Select on 10 Nov 2018, 23:23

Вам действительно нужно каждые 600 mS (500 mS + 10 mS) отправлять данные в частотный генератор?

Такого поведения не обнаруживаю, на протяжении всего активного состояния vi происходит два импульса выбранной частоты в одно нажатие кнопки, что и требуется. Никаких дальнейших повторов каждые 600 ms не происходит. Или мы говорим о разных вещах?
Flat Sequence Structure пробовал по аналогии с FGV, но я как то неверно строил там связи, или чего-то не хватало, не пошло.
LabView 14
User avatar
Select
assistant
assistant
 
Posts: 110
Joined: 12 Dec 2017, 23:56
Location: Врата надежды.
LabVIEW Version: 14
Karma: 0

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

Postby Artem.spb on 12 Nov 2018, 11:23

Select wrote:
Вам действительно нужно каждые 600 mS (500 mS + 10 mS) отправлять данные в частотный генератор?

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

Как не происходит? Главный цикл работает, значит повторы идут. То, что импульса нет, не значит отсутствие сигнала. Вы просто отправляете 0 на выход.
Artem.spb
expert
expert
 
Posts: 1422
Joined: 31 Jul 2011, 23:05
Medals: 2
Activity (1) Автор (1)
LabVIEW Version: 12,14,15
Karma: 246
CLD hardware I/O VIP freelance

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

Postby taras_33 on 12 Nov 2018, 15:38

Как не происходит? Главный цикл работает, значит повторы идут. То, что импульса нет, не значит отсутствие сигнала. Вы просто отправляете 0 на выход.

Артем прав...
Я бы изменил структуру программы. Например Producer-Consumer или
если извратиться, как показано ниже, применил бы конечный автомат
Double Press - State machine.png

Правда здесь есть недостаток - повторные нажатия на кнопку будут игнорироваться, пока не обработается первое.
посмотрите вложенный проект LV2014 вдруг поможет.
Attachments
Double Press Btn Folder.zip
(15.93 KiB) Downloaded 11 times
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!
User avatar
taras_33
developer
developer
 
Posts: 255
Joined: 31 Oct 2009, 18:25
Location: Minsk -> Miami
Medals: 1
Activity (1)
LabVIEW Version: 2016
Karma: 121
CLD VIP

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

Postby Select on 13 Nov 2018, 00:59

taras_33 wrote:
посмотрите вложенный проект LV2014 вдруг поможет.

:labview: 14 этот vi не открывает.
Относительно тишины при переходе в нулевую частоту, согласен, действительно каждые 600 mS происходит генерация белого шума однородной плотности. Вопрос, как это влияет на окружение? В трансмиттерах, как впрочем и во всех приемопередающих системах это явление присутствует всегда и имеет относительный уровень по отношению к модулируемым сигналам на выделенных частотах. В моем случае это звенящий ноль, ну и пусть себе звенит и ни на какие процессы не влияет. У меня все процессы в программе построены на переходах от нуля, к нужной частоте.
Как не просил, так и не получаю коммент почему такой код не есть хорошо, мазохизм, изврат и т.п. К примеру, если в микропроцессорах явление дребезга обусловлено мусором, кривым алгоритмом или непродуманным до конца дизайном, существует масса способов коррекции и доведения до желаемого результата.
Попробую поиграться построить конечный автомат.
LabView 14
User avatar
Select
assistant
assistant
 
Posts: 110
Joined: 12 Dec 2017, 23:56
Location: Врата надежды.
LabVIEW Version: 14
Karma: 0

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

Postby taras_33 on 13 Nov 2018, 03:56

:labview: 14 этот vi не открывает.
Хм странно... Пересохранил в 2013
Update: Только что проверил - LV2014 данный проект открывает без проблем....
Как не просил, так и не получаю коммент почему такой код не есть хорошо, мазохизм, изврат и т.п.

Да потому что так никто не программирует! Как правило проект строят из нескольких независимых процессов - UI отдельно, коммуникация с железом отдельно, какие то ресурсо-затратные функции отдельно и т.д. Общение между ними через очереди, нотифаеры или юзер ивенты. Тогда и программа "отзывчива", не виснет, событий не пропускает...
Как Вам можно что то посоветовать если нет общего понимания всей структуры и назначения программы. Да и с Вашей стороны...
Flat Sequence Structure пробовал по аналогии с FGV, но я как то неверно строил там связи, или чего-то не хватало, не пошло.

- ну почитайте Вы самые азы... Но Вы ранее писали что на это у Вас нет времени.
непродуманным до конца дизайном, существует масса способов коррекции и доведения до желаемого результата.

Вот тут прямо в точку! См. Выше
Attachments
State machine.zip
(14.94 KiB) Downloaded 14 times
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!
User avatar
taras_33
developer
developer
 
Posts: 255
Joined: 31 Oct 2009, 18:25
Location: Minsk -> Miami
Medals: 1
Activity (1)
LabVIEW Version: 2016
Karma: 121
CLD VIP

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

Postby Select on 13 Nov 2018, 18:12

taras_33, благодарю, файл открылся, благодарю за коммент, попробую Ваш вариант, по результату отпишусь.
LabView 14
User avatar
Select
assistant
assistant
 
Posts: 110
Joined: 12 Dec 2017, 23:56
Location: Врата надежды.
LabVIEW Version: 14
Karma: 0

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

Postby Select on 14 Nov 2018, 01:37

Адаптация не получается.
В моем примере я могу организовать сколько угодно генерируемых частот задавая их диапазон с присвоением к каждому номер в виде константы, производить их выборку в массиве по предустановленным номерам и соответственно селективно запускать эти частоты.
В варианте State machine я лишен такой возможности, хотя алгоритм итерации правильный.
Версия
Double Press Btn_2.png на мой взгляд имеет больше шансов, попробую его покурить.
LabView 14
User avatar
Select
assistant
assistant
 
Posts: 110
Joined: 12 Dec 2017, 23:56
Location: Врата надежды.
LabVIEW Version: 14
Karma: 0

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

Postby taras_33 on 14 Nov 2018, 03:33

Видимо я чего-то не понимаю :think:
Attachments
SM.zip
LV2013
(15.3 KiB) Downloaded 10 times
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!
User avatar
taras_33
developer
developer
 
Posts: 255
Joined: 31 Oct 2009, 18:25
Location: Minsk -> Miami
Medals: 1
Activity (1)
LabVIEW Version: 2016
Karma: 121
CLD VIP

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

Postby Select on 14 Nov 2018, 13:39

taras_33,
Самое то :drink:
Коллективный разум незаменим.
Товарищ Сталин сказал бы - " У этой аджики большое будущее " :brows:
Attachments
Push push.png
LabView 14
User avatar
Select
assistant
assistant
 
Posts: 110
Joined: 12 Dec 2017, 23:56
Location: Врата надежды.
LabVIEW Version: 14
Karma: 0

Previous

Return to Для чайников

Who is online

Users browsing this forum: No registered users and 11 guests

cron