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

Обсуждение, связанное с разработкой ПО верхнего уровня
Ответить
LEO_NIK
user
user
Сообщения: 86
Зарегистрирован: 09 сен 2016, 20:09
Версия LabVIEW: 2013
Контактная информация:

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

Сообщение LEO_NIK »

Здравствуйте! Есть ВП и у него два режима работы (как они переключаются для моего вопроса, полагаю, не важно). На лицевой панели пусть для простоты одна кнопка с надписью "1; a, b, c" и индикатор ( если точно, то на лицевой панели кроме функциональных кнопок расположены кнопки-клавиатура как у сотового телефона и индикатор) . В Режиме №1 при нажатии на эту кнопку на индикаторе всегда появляется только цифра, соответствующая этой кнопке, в моём примере "1". В режиме №2 этой кнопке соответствуют 3 буквы: a, b, c. Дальше, как в сотовом при наборе СМС. По циклу: при однократном нажатии на индикаторе высветится буква "a", при последовательном, без паузы (её надо задать, например, 1-2 сек) двукратном нажатии - "b", три раза - "с". Видимо, и удаление неправильной буквы, если пауза превышена. Как реализовать многофункциональность одной кнопки?
Если необходимо уточнение, то сами кнопки - в кластере, считывание по Label с помощью свойства Controls.
Аватара пользователя
Kosist

Activity Gold
expert
expert
Сообщения: 1236
Зарегистрирован: 21 фев 2011, 23:44
Награды: 2
Версия LabVIEW: 2013-2020
Благодарил (а): 23 раза
Поблагодарили: 30 раз
Контактная информация:

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

Сообщение Kosist »

Идейно можно сделать так. Нажали на кнопку, считываете ее лейбл. Если это число, то вводите число. Если буквы - то считаете нажатия (нужен какой-то простой счетчик с таймером), и по количеству нажатий пишете нужную букву, и сбрасываете лейбл кнопки снова на буквы. А изначально, лейбл меняется в зависимости от выбранного режима.
Но лучше лейбл не трогать, а использовать Boolean Text.
Мы делили апельсин - много наших полегло...
LEO_NIK
user
user
Сообщения: 86
Зарегистрирован: 09 сен 2016, 20:09
Версия LabVIEW: 2013
Контактная информация:

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

Сообщение LEO_NIK »

Kosist писал(а):...Нажали на кнопку, считываете ее лейбл. Если это число, то вводите число. Если буквы - то считаете нажатия...
Но ведь на кнопке ЛЕЙБЛ содержит и цифру, и буквы. Кнопка-то в разных режимах одна и та же. Как идентифицировать?
Kosist писал(а): ...Но лучше лейбл не трогать, а использовать Boolean Text.
Наверное, и Boolean Text будет одинаков? Или можно на одной кнопке сформировать два разных Boolean Text?
Аватара пользователя
Kosist

Activity Gold
expert
expert
Сообщения: 1236
Зарегистрирован: 21 фев 2011, 23:44
Награды: 2
Версия LabVIEW: 2013-2020
Благодарил (а): 23 раза
Поблагодарили: 30 раз
Контактная информация:

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

Сообщение Kosist »

LEO_NIK писал(а):Кнопка-то в разных режимах одна и та же. Как идентифицировать?
LEO_NIK писал(а):Наверное, и Boolean Text будет одинаков? Или можно на одной кнопке сформировать два разных Boolean Text?
Вы же режим кнопки как-то меняете? Тогда два метода:
1. Сравниваете, в каком Вы режиме - и используете либо цифры, либо буквы.
2. Меняете программно Boolean Text через Property Node в зависимости от режима (у меня в телефоне так и сделано - отображается либо цифровая, либо буквенная клавиатура), и затем смотрите по Boolean Text.
Но лучше - я в верхнем посте немного поспешил - проверяйте, в каком Вы режиме, и в зависимости от этого, вводите нужные символы; цифры или буквы.
Как по мне, тут главный вопрос как организовать правильно и красиво ввод букв по нескольких нажатиях на кнопку, с таймером... Я попробовал на скорую руку, не совсем работает...
Покажите свои наработки, если что...
Мы делили апельсин - много наших полегло...
LEO_NIK
user
user
Сообщения: 86
Зарегистрирован: 09 сен 2016, 20:09
Версия LabVIEW: 2013
Контактная информация:

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

Сообщение LEO_NIK »

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

Activity Gold
expert
expert
Сообщения: 1236
Зарегистрирован: 21 фев 2011, 23:44
Награды: 2
Версия LabVIEW: 2013-2020
Благодарил (а): 23 раза
Поблагодарили: 30 раз
Контактная информация:

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

Сообщение Kosist »

За код сильно не бейте - это просто идейно, proof of concep...
Одиночную кнопку можно заменить кластером, но тогда нужно на каждую кнопку навесить массив букв, и выбирать из них по индексу - так будет лучше, чем сейчас.
Так что связать кластер/кнопку, Event Structure и цикл можно как-то так...
Вложения
enter letter.vi
(14.4 КБ) 180 скачиваний
Enter letter.png
Мы делили апельсин - много наших полегло...
Blackman

Activity
leader
leader
Сообщения: 932
Зарегистрирован: 17 янв 2016, 15:02
Награды: 1
Версия LabVIEW: 6.1,8.5,20

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

Сообщение Blackman »

Первая кнопка при удержании зацикливается через заданные символы. Скоростью цикла можно управлять клавишей Shift (свойство LabVIEW).
Вторая кнопка имитирует работу кнопки телефона в текстовом режиме. При удержании устанавливается в цифру. Клавиша Shift не влияет.
Вложения
Phone Button FP.PNG
Phone Button FP.PNG (5.56 КБ) 17504 просмотра
Blackman--Phone Button.vi
(14.11 КБ) 185 скачиваний
LEO_NIK
user
user
Сообщения: 86
Зарегистрирован: 09 сен 2016, 20:09
Версия LabVIEW: 2013
Контактная информация:

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

Сообщение LEO_NIK »

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

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

Сообщение LEO_NIK »

Kosist писал(а):За код сильно не бейте...
Как раз всё наоборот, спасибо, то что надо! Сделано даже то, о чём я не писал, но это понадобилось бы чуть позже: накапливать отображаемые на индикаторе символы, проще говоря, писать слова и числа. У меня их пока по одному и для буквы, и для цифры. Да и разные буквы у одной кнопки я ещё не пробовал. В общем, супер! Спасибо!
А вот программу Blackman--Phone Button.vi не смог открыть, у меня более старая версия :labview: - 13-я. Если можно, перепишите её для 13-й.
Blackman

Activity
leader
leader
Сообщения: 932
Зарегистрирован: 17 янв 2016, 15:02
Награды: 1
Версия LabVIEW: 6.1,8.5,20

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

Сообщение Blackman »

:think:
Вложения
Phone Button BD.PNG
Blackman--Phone Button 13.vi
(9.41 КБ) 176 скачиваний
LEO_NIK
user
user
Сообщения: 86
Зарегистрирован: 09 сен 2016, 20:09
Версия LabVIEW: 2013
Контактная информация:

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

Сообщение LEO_NIK »

Эта версия программы запустилась на :labview: -13, спасибо.
Blackman писал(а):Первая кнопка ... Вторая кнопка ...
Меня вполне устраивает первый вариант и он намного проще. Правда нет деления на режимы (цифровой и буквенный), но поскольку в кнопке есть и то, и другое, то может даже обойдусь без этих режимов. Будет еще проще.
Blackman писал(а):Скоростью цикла можно управлять клавишей Shift (свойство LabVIEW).
В создаваемом ВП вся его работа будет определяться только собственными кнопками и регуляторами. Ни одна кнопка клавиатуры не задействована, только мышка. Как в этом случае мне заложить в программу скорость смены символов? Где прочитать об этом свойстве (Shift)? Хотя та скорость, которая сейчас установлена, меня вполне устраивает, она реальная при работе с кнопкой. Вопрос для "общего развития".
LEO_NIK
user
user
Сообщения: 86
Зарегистрирован: 09 сен 2016, 20:09
Версия LabVIEW: 2013
Контактная информация:

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

Сообщение LEO_NIK »

Blackman писал(а):Первая кнопка ...
Хочу поменять внешний вид кнопки (как у Кн2), чтобы при нажатии и самовозврате она слегка изменяла внешний вид так, как Кн2, расположенная на лицевой панели для примера, но сохранялась её функциональность. При нажатии она должна оставаться круглой кнопкой, слегка изменяя цвет (это я придумал), без жёлтого квадрата. Мне нужно лишь создать эффект нажатия. А может есть стандартная функция для имитации нажатия, с удовольствием воспользуюсь?
И более общий вопрос, с него надо бы начинать. Что это за кнопка (как её создать?), при нажатии на которую ПКМ всплывает меню, где есть позиции списка: Select Item, Add Item ... и в свойствах кнопки есть Edit Items с возможностью редактирования?
Вложения
Blackman--Phone Button 13 New .vi
(19.05 КБ) 174 скачивания
Blackman

Activity
leader
leader
Сообщения: 932
Зарегистрирован: 17 янв 2016, 15:02
Награды: 1
Версия LabVIEW: 6.1,8.5,20

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

Сообщение Blackman »

Это обычный Enum c одной измененной кнопкой Increment. Разберите "кнопку" в редакторе и все станет понятно. Вторая картинка меняется так же как и первая. Вы зря удалили первый пустой символ. Он наверняка понадобится. Добавил кнопку для цифры "3". Так как нет "boolean text" картинки придется делать для каждой кнопки свои или найти готовые и скачать.
Вложения
Blackman--Phone Button 13 New .vi
(19.76 КБ) 202 скачивания
LEO_NIK
user
user
Сообщения: 86
Зарегистрирован: 09 сен 2016, 20:09
Версия LabVIEW: 2013
Контактная информация:

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

Сообщение LEO_NIK »

Спасибо за помощь!
Blackman писал(а):Разберите "кнопку" в редакторе и все станет понятно
Пытался, но что-то не получилось...
Blackman писал(а):Вы зря удалили первый пустой символ.
В свойствах кнопки есть же редактор списка. Думаю, что как удалил, так и верну на место.
Blackman писал(а): Добавил кнопку для цифры "3".
Спасибо, нужна и "3".
Blackman писал(а):Так как нет "boolean text" картинки придется делать для каждой кнопки свои или найти готовые и скачать.
Все кнопки типа "2", которую я привёл как пример, у меня есть. Если об этом речь. Я пока не смог вложить в них список из цифры и нескольких букв в каждую, как у Вас.
Ещё раз спасибо.
LEO_NIK
user
user
Сообщения: 86
Зарегистрирован: 09 сен 2016, 20:09
Версия LabVIEW: 2013
Контактная информация:

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

Сообщение LEO_NIK »

Blackman писал(а):Это обычный Enum c одной измененной кнопкой Increment. Разберите "кнопку" в редакторе и все станет понятно.
Пока для меня это совсем не " ...обычный Enum c одной измененной кнопкой Increment", прямо загадка какая-то. В редакторе я могу поменять установки, картинку... на уже готовую кнопку. НО как самому, с нуля установить на лицевую панель Control, чтобы был в нём список, ничего не получается. Если не сложно, укажите, пожалуйста, последовательность создания такой кнопки.
Ответить

Вернуться в «Лицевая панель»