Многофункциональная кнопка

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

Многофункциональная кнопка

Postby LEO_NIK on 23 Dec 2016, 20:34

Здравствуйте! Есть ВП и у него два режима работы (как они переключаются для моего вопроса, полагаю, не важно). На лицевой панели пусть для простоты одна кнопка с надписью "1; a, b, c" и индикатор ( если точно, то на лицевой панели кроме функциональных кнопок расположены кнопки-клавиатура как у сотового телефона и индикатор) . В Режиме №1 при нажатии на эту кнопку на индикаторе всегда появляется только цифра, соответствующая этой кнопке, в моём примере "1". В режиме №2 этой кнопке соответствуют 3 буквы: a, b, c. Дальше, как в сотовом при наборе СМС. По циклу: при однократном нажатии на индикаторе высветится буква "a", при последовательном, без паузы (её надо задать, например, 1-2 сек) двукратном нажатии - "b", три раза - "с". Видимо, и удаление неправильной буквы, если пауза превышена. Как реализовать многофункциональность одной кнопки?
Если необходимо уточнение, то сами кнопки - в кластере, считывание по Label с помощью свойства Controls.
LEO_NIK
user
user
 
Posts: 86
Joined: 09 Sep 2016, 20:09
LabVIEW Version: 2013
Karma: 0

Re: Многофункциональная кнопка

Postby Kosist on 23 Dec 2016, 21:09

Идейно можно сделать так. Нажали на кнопку, считываете ее лейбл. Если это число, то вводите число. Если буквы - то считаете нажатия (нужен какой-то простой счетчик с таймером), и по количеству нажатий пишете нужную букву, и сбрасываете лейбл кнопки снова на буквы. А изначально, лейбл меняется в зависимости от выбранного режима.
Но лучше лейбл не трогать, а использовать Boolean Text.
Мы делили апельсин - много наших полегло...
User avatar
Kosist
leader
leader
 
Posts: 645
Joined: 21 Feb 2011, 23:44
Location: СумГУ
Medals: 2
Activity (1) Gold (1)
LabVIEW Version: 2013-2015
Karma: 203
CLAD I/O VIP students

Re: Многофункциональная кнопка

Postby LEO_NIK on 23 Dec 2016, 21:22

Kosist wrote:...Нажали на кнопку, считываете ее лейбл. Если это число, то вводите число. Если буквы - то считаете нажатия...

Но ведь на кнопке ЛЕЙБЛ содержит и цифру, и буквы. Кнопка-то в разных режимах одна и та же. Как идентифицировать?

Kosist wrote: ...Но лучше лейбл не трогать, а использовать Boolean Text.

Наверное, и Boolean Text будет одинаков? Или можно на одной кнопке сформировать два разных Boolean Text?
LEO_NIK
user
user
 
Posts: 86
Joined: 09 Sep 2016, 20:09
LabVIEW Version: 2013
Karma: 0

Re: Многофункциональная кнопка

Postby Kosist on 23 Dec 2016, 22:41

LEO_NIK wrote:Кнопка-то в разных режимах одна и та же. Как идентифицировать?

LEO_NIK wrote:Наверное, и Boolean Text будет одинаков? Или можно на одной кнопке сформировать два разных Boolean Text?

Вы же режим кнопки как-то меняете? Тогда два метода:
1. Сравниваете, в каком Вы режиме - и используете либо цифры, либо буквы.
2. Меняете программно Boolean Text через Property Node в зависимости от режима (у меня в телефоне так и сделано - отображается либо цифровая, либо буквенная клавиатура), и затем смотрите по Boolean Text.
Но лучше - я в верхнем посте немного поспешил - проверяйте, в каком Вы режиме, и в зависимости от этого, вводите нужные символы; цифры или буквы.
Как по мне, тут главный вопрос как организовать правильно и красиво ввод букв по нескольких нажатиях на кнопку, с таймером... Я попробовал на скорую руку, не совсем работает...
Покажите свои наработки, если что...
Мы делили апельсин - много наших полегло...
User avatar
Kosist
leader
leader
 
Posts: 645
Joined: 21 Feb 2011, 23:44
Location: СумГУ
Medals: 2
Activity (1) Gold (1)
LabVIEW Version: 2013-2015
Karma: 203
CLAD I/O VIP students

Re: Многофункциональная кнопка

Postby LEO_NIK on 23 Dec 2016, 23:28

Kosist wrote:
LEO_NIK wrote:...Сравниваете, в каком Вы режиме - и используете либо цифры, либо буквы

Хочу посоветоваться в отношении алгоритма, который постараюсь реализовать. Он близкий (если не тот же самый), как у Вас.
1. Если я правильно понимаю, то в кластере каждый элемент пронумерован и по этому номеру можно узнать, какая кнопка нажата.
2. Для этого буду использовать Event структуру.
3. После идентификации работает Case с двумя условиями True или False. Например, True соответствует первому режиму и тогда на индикатор выводится цифра, соответствующая нажатой кнопке. В противном случае - буква.
У меня вопрос: если алгоритм работоспособен, то как структурно связать друг с другом кластер, Event и Case, а также ЦИКЛ, который обязательно должен быть? Да ещё и условие на паузу при последовательном нажатии кнопки при выборе буквы.
Что касается показать наработку, то я проектирую ВЕСЬ прибор, он ещё очень сырой и работоспособен кусками, в основном начало, инициализация. А все тонкости отрабатываю на простых примерах, которые сам для себя и создаю. Вот их показать можно. Поделюсь, как только реализую сначала панель с одной (буквенно-цифровой) кнопкой, а потом со всей клавиатурой.
LEO_NIK
user
user
 
Posts: 86
Joined: 09 Sep 2016, 20:09
LabVIEW Version: 2013
Karma: 0

Re: Многофункциональная кнопка

Postby Kosist on 24 Dec 2016, 00:17

За код сильно не бейте - это просто идейно, proof of concep...
Одиночную кнопку можно заменить кластером, но тогда нужно на каждую кнопку навесить массив букв, и выбирать из них по индексу - так будет лучше, чем сейчас.
Так что связать кластер/кнопку, Event Structure и цикл можно как-то так...
Attachments
enter letter.vi
(14.4 KiB) Downloaded 7 times
Enter letter.png
Мы делили апельсин - много наших полегло...
User avatar
Kosist
leader
leader
 
Posts: 645
Joined: 21 Feb 2011, 23:44
Location: СумГУ
Medals: 2
Activity (1) Gold (1)
LabVIEW Version: 2013-2015
Karma: 203
CLAD I/O VIP students

Re: Многофункциональная кнопка

Postby Blackman on 24 Dec 2016, 01:13

Первая кнопка при удержании зацикливается через заданные символы. Скоростью цикла можно управлять клавишей Shift (свойство LabVIEW).
Вторая кнопка имитирует работу кнопки телефона в текстовом режиме. При удержании устанавливается в цифру. Клавиша Shift не влияет.
Attachments
Phone Button FP.PNG
Phone Button FP.PNG (5.56 KiB) Viewed 307 times
Blackman--Phone Button.vi
(14.11 KiB) Downloaded 8 times
Blackman
leader
leader
 
Posts: 554
Joined: 17 Jan 2016, 15:02
Medals: 1
Activity (1)
LabVIEW Version: 6.1,8.5,20
Karma: 118

Re: Многофункциональная кнопка

Postby LEO_NIK on 24 Dec 2016, 02:26

Спасибо Kosist и Blackman. Пока занимался сам, пришли Ваши сообщения. Ещё их не смотрел. За это время я моделировал с 1-й кнопкой. Ранее я не отметил, что кнопка с самовозвратом, а вот цифра или буква при нажатии должна оставаться даже после самовозврате кнопки. Что-то получилось, правда кнопка СТОП не работает, но мне сейчас это и не важно. Посмотрите мой вариант. Возможно, Вам покажется, что можно сделать и проще, но я стремился делать поближе к проектируемому ВП, где именно такой алгоритм - с МАШИНОЙ СОСТОЯНИЙ.
Attachments
Пример одну буквенно-цифровую кнопку.vi
(18.45 KiB) Downloaded 8 times
LEO_NIK
user
user
 
Posts: 86
Joined: 09 Sep 2016, 20:09
LabVIEW Version: 2013
Karma: 0

Re: Многофункциональная кнопка

Postby LEO_NIK on 24 Dec 2016, 02:51

Kosist wrote:За код сильно не бейте...

Как раз всё наоборот, спасибо, то что надо! Сделано даже то, о чём я не писал, но это понадобилось бы чуть позже: накапливать отображаемые на индикаторе символы, проще говоря, писать слова и числа. У меня их пока по одному и для буквы, и для цифры. Да и разные буквы у одной кнопки я ещё не пробовал. В общем, супер! Спасибо!
А вот программу Blackman--Phone Button.vi не смог открыть, у меня более старая версия :labview: - 13-я. Если можно, перепишите её для 13-й.
LEO_NIK
user
user
 
Posts: 86
Joined: 09 Sep 2016, 20:09
LabVIEW Version: 2013
Karma: 0

Re: Многофункциональная кнопка

Postby Blackman on 24 Dec 2016, 10:12

:think:
Attachments
Phone Button BD.PNG
Blackman--Phone Button 13.vi
(9.41 KiB) Downloaded 10 times
Blackman
leader
leader
 
Posts: 554
Joined: 17 Jan 2016, 15:02
Medals: 1
Activity (1)
LabVIEW Version: 6.1,8.5,20
Karma: 118

Re: Многофункциональная кнопка

Postby LEO_NIK on 24 Dec 2016, 11:28

Эта версия программы запустилась на :labview: -13, спасибо.
Blackman wrote:Первая кнопка ... Вторая кнопка ...

Меня вполне устраивает первый вариант и он намного проще. Правда нет деления на режимы (цифровой и буквенный), но поскольку в кнопке есть и то, и другое, то может даже обойдусь без этих режимов. Будет еще проще.
Blackman wrote:Скоростью цикла можно управлять клавишей Shift (свойство LabVIEW).

В создаваемом ВП вся его работа будет определяться только собственными кнопками и регуляторами. Ни одна кнопка клавиатуры не задействована, только мышка. Как в этом случае мне заложить в программу скорость смены символов? Где прочитать об этом свойстве (Shift)? Хотя та скорость, которая сейчас установлена, меня вполне устраивает, она реальная при работе с кнопкой. Вопрос для "общего развития".
LEO_NIK
user
user
 
Posts: 86
Joined: 09 Sep 2016, 20:09
LabVIEW Version: 2013
Karma: 0

Re: Многофункциональная кнопка

Postby LEO_NIK on 24 Dec 2016, 14:14

Blackman wrote:Первая кнопка ...

Хочу поменять внешний вид кнопки (как у Кн2), чтобы при нажатии и самовозврате она слегка изменяла внешний вид так, как Кн2, расположенная на лицевой панели для примера, но сохранялась её функциональность. При нажатии она должна оставаться круглой кнопкой, слегка изменяя цвет (это я придумал), без жёлтого квадрата. Мне нужно лишь создать эффект нажатия. А может есть стандартная функция для имитации нажатия, с удовольствием воспользуюсь?
И более общий вопрос, с него надо бы начинать. Что это за кнопка (как её создать?), при нажатии на которую ПКМ всплывает меню, где есть позиции списка: Select Item, Add Item ... и в свойствах кнопки есть Edit Items с возможностью редактирования?
Attachments
Blackman--Phone Button 13 New .vi
(19.05 KiB) Downloaded 7 times
LEO_NIK
user
user
 
Posts: 86
Joined: 09 Sep 2016, 20:09
LabVIEW Version: 2013
Karma: 0

Re: Многофункциональная кнопка

Postby Blackman on 24 Dec 2016, 15:24

Это обычный Enum c одной измененной кнопкой Increment. Разберите "кнопку" в редакторе и все станет понятно. Вторая картинка меняется так же как и первая. Вы зря удалили первый пустой символ. Он наверняка понадобится. Добавил кнопку для цифры "3". Так как нет "boolean text" картинки придется делать для каждой кнопки свои или найти готовые и скачать.
Attachments
Blackman--Phone Button 13 New .vi
(19.76 KiB) Downloaded 10 times
Blackman
leader
leader
 
Posts: 554
Joined: 17 Jan 2016, 15:02
Medals: 1
Activity (1)
LabVIEW Version: 6.1,8.5,20
Karma: 118

Re: Многофункциональная кнопка

Postby LEO_NIK on 24 Dec 2016, 18:37

Спасибо за помощь!
Blackman wrote:Разберите "кнопку" в редакторе и все станет понятно

Пытался, но что-то не получилось...
Blackman wrote:Вы зря удалили первый пустой символ.

В свойствах кнопки есть же редактор списка. Думаю, что как удалил, так и верну на место.
Blackman wrote: Добавил кнопку для цифры "3".

Спасибо, нужна и "3".
Blackman wrote:Так как нет "boolean text" картинки придется делать для каждой кнопки свои или найти готовые и скачать.

Все кнопки типа "2", которую я привёл как пример, у меня есть. Если об этом речь. Я пока не смог вложить в них список из цифры и нескольких букв в каждую, как у Вас.
Ещё раз спасибо.
LEO_NIK
user
user
 
Posts: 86
Joined: 09 Sep 2016, 20:09
LabVIEW Version: 2013
Karma: 0

Re: Многофункциональная кнопка

Postby LEO_NIK on 24 Dec 2016, 20:36

Blackman wrote:Это обычный Enum c одной измененной кнопкой Increment. Разберите "кнопку" в редакторе и все станет понятно.

Пока для меня это совсем не " ...обычный Enum c одной измененной кнопкой Increment", прямо загадка какая-то. В редакторе я могу поменять установки, картинку... на уже готовую кнопку. НО как самому, с нуля установить на лицевую панель Control, чтобы был в нём список, ничего не получается. Если не сложно, укажите, пожалуйста, последовательность создания такой кнопки.
LEO_NIK
user
user
 
Posts: 86
Joined: 09 Sep 2016, 20:09
LabVIEW Version: 2013
Karma: 0


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

Who is online

Users browsing this forum: No registered users and 2 guests

cron