Одновременное нажатие кнопок

Обсуждение, связанное с разработкой ПО верхнего уровня

Одновременное нажатие кнопок

Postby zzontt on 31 Jul 2014, 13:57

Есть ли возможность объединить несколько кнопок в одну?
Тесть при нажатие на одну кнопку на лицевой панели, одновременно с ней нажимается еще одна или две кнопки одновременно с ней.
Как это сделать программно я не знаю так как события генерируемые этими кнопками обрабатываются в трех разных циклах работающих параллельно.
zzontt
beginner
beginner
 
Posts: 15
Joined: 31 Jul 2014, 13:48
LabVIEW Version: 2010
Karma: 0

Re: Одновременное нажатие кнопок

Postby IvanLis on 31 Jul 2014, 14:52

zzontt wrote:Есть ли возможность объединить несколько кнопок в одну?
Тесть при нажатие на одну кнопку на лицевой панели, одновременно с ней нажимается еще одна или две кнопки одновременно с ней.
Как это сделать программно я не знаю так как события генерируемые этими кнопками обрабатываются в трех разных циклах работающих параллельно.


Нажатие кнопок обрабатывайте с использованием Event структуры.
Для имитации нажатия кнопки используйте Property Node -> Value(Signaling).
User avatar
IvanLis
professor
professor
 
Posts: 4636
Joined: 02 Dec 2009, 17:44
Location: СССР
Medals: 7
Activity (2) Professionalism (1) Tutorials (1) Gold (1) Man of the year 2012 (1)
Автор (1)
LabVIEW Version: 2010
Karma: 728
hardware VIP bloggers teachers

Re: Одновременное нажатие кнопок

Postby zzontt on 31 Jul 2014, 15:38

IvanLis wrote:
zzontt wrote:Есть ли возможность объединить несколько кнопок в одну?
Тесть при нажатие на одну кнопку на лицевой панели, одновременно с ней нажимается еще одна или две кнопки одновременно с ней.
Как это сделать программно я не знаю так как события генерируемые этими кнопками обрабатываются в трех разных циклах работающих параллельно.


Нажатие кнопок обрабатывайте с использованием Event структуры.
Для имитации нажатия кнопки используйте Property Node -> Value(Signaling).


По пробовал, на разобраться не получилось. Не могли бы вы покзать на простеньком примере.
Ниже прикрепленная упрощенная структура моего проекта, подскажите как сделать так что бы при нажатие на OK Button, вместе с ней происходило имитация нажатия на OK Button2 и OK Button3.
Снимок.jpg
zzontt
beginner
beginner
 
Posts: 15
Joined: 31 Jul 2014, 13:48
LabVIEW Version: 2010
Karma: 0

Re: Одновременное нажатие кнопок

Postby Vitekkz88 on 31 Jul 2014, 17:12

По пробовал, на разобраться не получилось. Не могли бы вы покзать на простеньком примере.

По Вашему же примеру.
Как уже говорили
Для имитации нажатия кнопки используйте Property Node -> Value(Signaling).

Это и используйте.Для создания Property Node наведите на необходимый контрол/индикатор курсор мыши,щелкните правой кнопкой и выберите пункт "Create ->Property Node", либо достань Property Node из палитры Programming - > Application и на вход подключите ссылку контрола/индикатора. Как создать ссылку(reference) думаю сообразите.
Ну а дальше как на картинке:
Attachments
Кнопка.png
Инженер - это открыто светящийся интеллект, свободный и не обидный юмор, это легкость и широта мысли...Это воспитанность, тонкость вкусов, хорошая речь, плавно согласованная и без сорных словечек...
-А. И. Солженицын
User avatar
Vitekkz88
expert
expert
 
Posts: 1047
Joined: 21 Jan 2014, 15:45
Location: Томск
Medals: 3
Activity (1) Silver (1) Автор (1)
LabVIEW Version: 12,13,14
Karma: 301
hardware I/O VIP

Re: Одновременное нажатие кнопок

Postby zzontt on 01 Aug 2014, 09:18

Vitekkz88 wrote:
По пробовал, на разобраться не получилось. Не могли бы вы покзать на простеньком примере.

По Вашему же примеру.
Как уже говорили
Для имитации нажатия кнопки используйте Property Node -> Value(Signaling).

Это и используйте.Для создания Property Node наведите на необходимый контрол/индикатор курсор мыши,щелкните правой кнопкой и выберите пункт "Create ->Property Node", либо достань Property Node из палитры Programming - > Application и на вход подключите ссылку контрола/индикатора. Как создать ссылку(reference) думаю сообразите.
Ну а дальше как на картинке:

Спасибо. Все прекрасно получилось.
Но вот попробовав распространить этот же метод на три кнопки стоп, которые внутри трех малых циклов, меня ждало разочарование они таким образом взаимодействовать не хотят, с чем это связанно, не подскажите?
zzontt
beginner
beginner
 
Posts: 15
Joined: 31 Jul 2014, 13:48
LabVIEW Version: 2010
Karma: 0

Re: Одновременное нажатие кнопок

Postby Vitekkz88 on 01 Aug 2014, 16:30

Но вот попробовав распространить этот же метод на три кнопки стоп, которые внутри трех малых циклов, меня ждало разочарование они таким образом взаимодействовать не хотят, с чем это связанно, не подскажите?

А Вам необходимо изменить тип механического действия кнопок "Стоп". По умолчанию они создаются с типом Latch When Released. Поменяйте этот тип на любой из Switch и все должно сработать.
Как менять тип мех.действия: на интерфейсной панели щелкаете правой кнопкой мышки по кнопке. Находите строчку Mechanical Action и выбираете. Либо можно зайти в свойства этого контрола и перейти на вкладку Operation.

А будет еще интересней,если Вы почитаете про notifier-ы(уведомители). В приложениях чаще всего используют их для остановки множества циклов. :wink:
Инженер - это открыто светящийся интеллект, свободный и не обидный юмор, это легкость и широта мысли...Это воспитанность, тонкость вкусов, хорошая речь, плавно согласованная и без сорных словечек...
-А. И. Солженицын
User avatar
Vitekkz88
expert
expert
 
Posts: 1047
Joined: 21 Jan 2014, 15:45
Location: Томск
Medals: 3
Activity (1) Silver (1) Автор (1)
LabVIEW Version: 12,13,14
Karma: 301
hardware I/O VIP

Re: Одновременное нажатие кнопок

Postby Vitekkz88 on 01 Aug 2014, 17:15

zzontt
Вот смотри пример на нотифаерах. Найдешь их в палитре Programm -> synchronization.
Всего ОДНА кнопка "Стоп" на 4 цикла:)
Почитай еще,что такое dataflow. Именно на этом принципе и основано программирование в LabVIEW.
Attachments
STOP.png
Инженер - это открыто светящийся интеллект, свободный и не обидный юмор, это легкость и широта мысли...Это воспитанность, тонкость вкусов, хорошая речь, плавно согласованная и без сорных словечек...
-А. И. Солженицын
User avatar
Vitekkz88
expert
expert
 
Posts: 1047
Joined: 21 Jan 2014, 15:45
Location: Томск
Medals: 3
Activity (1) Silver (1) Автор (1)
LabVIEW Version: 12,13,14
Karma: 301
hardware I/O VIP

Re: Одновременное нажатие кнопок

Postby zzontt on 06 Aug 2014, 10:30

Vitekkz88 wrote:
Но вот попробовав распространить этот же метод на три кнопки стоп, которые внутри трех малых циклов, меня ждало разочарование они таким образом взаимодействовать не хотят, с чем это связанно, не подскажите?

А Вам необходимо изменить тип механического действия кнопок "Стоп". По умолчанию они создаются с типом Latch When Released. Поменяйте этот тип на любой из Switch и все должно сработать.
Как менять тип мех.действия: на интерфейсной панели щелкаете правой кнопкой мышки по кнопке. Находите строчку Mechanical Action и выбираете. Либо можно зайти в свойства этого контрола и перейти на вкладку Operation.

Спасибо за совет этот способ сработал.
Vitekkz88 wrote:
А будет еще интересней,если Вы почитаете про notifier-ы(уведомители). В приложениях чаще всего используют их для остановки множества циклов. :wink:

А вот с эти попробую разобраться, мне не надо останавливать все 4 цикла, на том примере что вы привели ниже, мне надо остановить только три внутренних, но все усложняется тем что они в Case-структурах.
zzontt
beginner
beginner
 
Posts: 15
Joined: 31 Jul 2014, 13:48
LabVIEW Version: 2010
Karma: 0

Re: Одновременное нажатие кнопок

Postby zzontt on 06 Aug 2014, 11:27

Vitekkz88 wrote:zzontt
Вот смотри пример на нотифаерах. Найдешь их в палитре Programm -> synchronization.
Всего ОДНА кнопка "Стоп" на 4 цикла:)
Почитай еще,что такое dataflow. Именно на этом принципе и основано программирование в LabVIEW.

Попробовал реализовать данную систему применительно к моему проекту, с моими особенностями, запускается все без ошибок, но при начале работы программы начинают сыпаться ошибки.
Attachments
Снимок.jpg
Безымянный.jpg
Безымянный.jpg (33.71 KiB) Viewed 7733 times
zzontt
beginner
beginner
 
Posts: 15
Joined: 31 Jul 2014, 13:48
LabVIEW Version: 2010
Karma: 0

Re: Одновременное нажатие кнопок

Postby Super Star on 06 Aug 2014, 13:23

если вы посмотрите на пример выше, то найдете отличия
вы каждый раз создаете и удаляете нотифер
я люблю свою работу.... Я приду сюда в субботу ...
User avatar
Super Star
adviser
adviser
 
Posts: 228
Joined: 07 Feb 2013, 08:37
LabVIEW Version: 2011
Karma: 35

Re: Одновременное нажатие кнопок

Postby zzontt on 06 Aug 2014, 14:09

Super Star wrote:если вы посмотрите на пример выше, то найдете отличия
вы каждый раз создаете и удаляете нотифер

Да нелепая ошибка, разобрался с ней, спасибо за подсказки и наводки, если не сложно посмотрите пожалуйста еще одну новую тему которую я создал в этом разделе форума.
zzontt
beginner
beginner
 
Posts: 15
Joined: 31 Jul 2014, 13:48
LabVIEW Version: 2010
Karma: 0

Re: Одновременное нажатие кнопок

Postby zzontt on 07 Aug 2014, 13:48

Vitekkz88 wrote:zzontt
Вот смотри пример на нотифаерах. Найдешь их в палитре Programm -> synchronization.
Всего ОДНА кнопка "Стоп" на 4 цикла:)
Почитай еще,что такое dataflow. Именно на этом принципе и основано программирование в LabVIEW.

Вашем примере, кнопка стоп будет работать только в том случае если запущен вложенный цикл в котором она находится, а что делать если запущен только 2 и 3 вложенный цикл, а нотификатор гененируется только в первом.
Подскажите пожалуйста, как сделать так что бы каждый цикл мог бы создавать нотификатор на остановку всех остальных, и все остальные могли его принять.
zzontt
beginner
beginner
 
Posts: 15
Joined: 31 Jul 2014, 13:48
LabVIEW Version: 2010
Karma: 0

Re: Одновременное нажатие кнопок

Postby Vitekkz88 on 07 Aug 2014, 16:51

Вашем примере, кнопка стоп будет работать только в том случае если запущен вложенный цикл в котором она находится, а что делать если запущен только 2 и 3 вложенный цикл, а нотификатор гененируется только в первом.

Да,потому что решение было предложено для более ранних пожеланий,а именно.
Ниже прикрепленная упрощенная структура моего проекта, подскажите как сделать так что бы при нажатие на OK Button, вместе с ней происходило имитация нажатия на OK Button2 и OK Button3.

Вы поглядите,где у Вас кнопка OK Button находится :wink:

Подскажите пожалуйста, как сделать так что бы каждый цикл мог бы создавать нотификатор на остановку всех остальных, и все остальные могли его принять.

А позвольте узнать,у Вас вложенные циклы сразу начинаю работать?На сколько я понимаю, Вы хотите получить такой результат:
Есть три кнопки. Если на кнопку нажать - то запускается вложенный цикл. Если её отжать - то вложенный цикл завершается и дальше вновь осуществляется
нажатие кнопки пользователем.
Или надо так: кнопку нажал - цикл запустил. Нажал вторую кнопку - запустился второй цикл и тд...?А потом одной кнопкой "Стоп" оставновить,а так же иметь возможность останавливать циклы теми же кнопками,на которые нажимали?
Нет необходимости создавать уведомителей в каждом цикле. Достаточно создать один в event-структуре и по событию кнопки "Стоп" рассылать во все потоки уведомление.
Посмотрите пример и поясните,что необходимо в итоге?
Attachments
Пример.png
Untitled 1.vi
(11.68 KiB) Downloaded 126 times
Инженер - это открыто светящийся интеллект, свободный и не обидный юмор, это легкость и широта мысли...Это воспитанность, тонкость вкусов, хорошая речь, плавно согласованная и без сорных словечек...
-А. И. Солженицын
User avatar
Vitekkz88
expert
expert
 
Posts: 1047
Joined: 21 Jan 2014, 15:45
Location: Томск
Medals: 3
Activity (1) Silver (1) Автор (1)
LabVIEW Version: 12,13,14
Karma: 301
hardware I/O VIP

Re: Одновременное нажатие кнопок

Postby zzontt on 08 Aug 2014, 12:30

Vitekkz88 wrote:
Вашем примере, кнопка стоп будет работать только в том случае если запущен вложенный цикл в котором она находится, а что делать если запущен только 2 и 3 вложенный цикл, а нотификатор гененируется только в первом.

Да,потому что решение было предложено для более ранних пожеланий,а именно.
Ниже прикрепленная упрощенная структура моего проекта, подскажите как сделать так что бы при нажатие на OK Button, вместе с ней происходило имитация нажатия на OK Button2 и OK Button3.

Вы поглядите,где у Вас кнопка OK Button находится :wink:

Подскажите пожалуйста, как сделать так что бы каждый цикл мог бы создавать нотификатор на остановку всех остальных, и все остальные могли его принять.

А позвольте узнать,у Вас вложенные циклы сразу начинаю работать?На сколько я понимаю, Вы хотите получить такой результат:
Есть три кнопки. Если на кнопку нажать - то запускается вложенный цикл. Если её отжать - то вложенный цикл завершается и дальше вновь осуществляется
нажатие кнопки пользователем.
Или надо так: кнопку нажал - цикл запустил. Нажал вторую кнопку - запустился второй цикл и тд...?А потом одной кнопкой "Стоп" оставновить,а так же иметь возможность останавливать циклы теми же кнопками,на которые нажимали?
Нет необходимости создавать уведомителей в каждом цикле. Достаточно создать один в event-структуре и по событию кнопки "Стоп" рассылать во все потоки уведомление.
Посмотрите пример и поясните,что необходимо в итоге?

Логика моего проекта такова, у меня есть три прибора которые выполняют измерения, и я с них собираю данные(это три вложенных цикла внутри основного, сделанны они вложенными для того что бы была возможность не останавливая полностью программу остановить измерения, в главном цикле изменить настройки приборов, а потом их опять запустить), но есть особенность в том что мне не всегда надо запускать на измерение все три прибора, иногда только 1 иногда 2 иногда все три, и если это не все три то те которые будут включены могут быть любыми( то есть, например только 2 или только 3, или 1 и 3, 2 и 3, и тд), у меня на лицевой панели есть кнопка старт и три контрола которыми я выбираю какие конкретно приборы сейчас будут работать (то есть выбрав например 2 и 3 прибор я нажимаю кнопку старт и они начинают измерения), а так же кнопка стоп которая должна остановить все работающие в данный момент приборы, пока что у меня реализованно так что мне в обязательном порядке надо запускать прибор 1, для того что бы была возможность остановить одновременно с ним 2 или/и 3, хочу от этого затыка избавится.
zzontt
beginner
beginner
 
Posts: 15
Joined: 31 Jul 2014, 13:48
LabVIEW Version: 2010
Karma: 0

Re: Одновременное нажатие кнопок

Postby Vitekkz88 on 08 Aug 2014, 13:06

у меня на лицевой панели есть кнопка старт и три контрола которыми я выбираю какие конкретно приборы сейчас будут работать (то есть выбрав например 2 и 3 прибор я нажимаю кнопку старт и они начинают измерения), а так же кнопка стоп которая должна остановить все работающие в данный момент приборы,

Вы мой пример скачали/смотрели?
Там как раз то,что вам необходимо. Вы заранее нажимаете на любые из трёх кнопок - запускаетесь. А потом кнопкой стоп можете всё сразу остановить.
Для наглядности я вынес эту кнопку за циклы:). Событие для уведомителя генерируется по нажатию на копку "Стоп" и рассылается во все активные циклы.
Либо можете работать с каждым прибором по отдельности(то есть в процессе работы вы можете остановить ранее запущенные циклы,а потом работать с любым из них...но только с одним(введу архитектуры приложения). Ну или нажать СТОП, и выбрать другую пару или сразу все три прибора.)
Кстати,можно изменить архитектуру приложения. И тогда Вы сможете рулить всеми тремя приборами хоть в процессе работы,хоть в процессе конфигурирования без предварительного запуска.
Инженер - это открыто светящийся интеллект, свободный и не обидный юмор, это легкость и широта мысли...Это воспитанность, тонкость вкусов, хорошая речь, плавно согласованная и без сорных словечек...
-А. И. Солженицын
User avatar
Vitekkz88
expert
expert
 
Posts: 1047
Joined: 21 Jan 2014, 15:45
Location: Томск
Medals: 3
Activity (1) Silver (1) Автор (1)
LabVIEW Version: 12,13,14
Karma: 301
hardware I/O VIP

Next

Return to Лицевая панель

Who is online

Users browsing this forum: No registered users and 3 guests

cron