Страница 1 из 2

Ввод текста тремя кнопками

Добавлено: 13 ноя 2018, 20:21
fgfg66
Здравствуйте.

Нужен интерфейс ввода пятизначного кода тремя кнопками.

Код: Выделить всё

Имеем три кнопки: Плюс, минус, сохранить.
На лсд дисплее пятизначная строка. 
Мигает первый символ. 
Кнопками крутим вверх-вниз кнопками "плюс" и "минус". 
На нужном символе нажимаем кнопку "сохранить"
Мигает второй символ. Выбираем, сохраняем.

.... повторяем для каждого символа

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

Но возможно это уже реализовано и не стоит изобретать велосипед.

Ввод текста тремя кнопками

Добавлено: 14 ноя 2018, 00:33
Oleg1345140
fgfg66 писал(а): 13 ноя 2018, 20:21Пока вижу что это можно реализовать счетчиком - перебором из массива кодов букв.. сдвигать посимвольно, складывая в одну переменную. При достижении сдвига пять раз, делать проверку.

Но возможно это уже реализовано и не стоит изобретать велосипед.
Правильное виденье, подобным образом делал набор энкодором, только использовал не буквы а цифры.

Ввод текста тремя кнопками

Добавлено: 14 ноя 2018, 00:49
fgfg66
Ну значит чертежа велосипеда нет. Буду городить свой. ;)

Ввод текста тремя кнопками

Добавлено: 14 ноя 2018, 07:59
fsergei70
Oleg1345140 писал(а): 14 ноя 2018, 00:33 подобным образом делал набор энкодором
Здравствуйте, примером не поделитесь?

Ввод текста тремя кнопками

Добавлено: 14 ноя 2018, 10:59
Oleg1345140
fsergei70 писал(а): 14 ноя 2018, 07:59
Oleg1345140 писал(а): 14 ноя 2018, 00:33 подобным образом делал набор энкодором
Здравствуйте, примером не поделитесь?
Доберусь до дому поделюсь, но не думаю что кроме концепции что то пригодится.

Пользовательский блок и пропажа памяти

Добавлено: 15 ноя 2018, 14:02
fgfg66
День добрый, Знатоки!

Нужен был функционал перебор счетчиком символов из массива.
Плюс мигание в момент выбора.
Нагородил логики, всё работает. Но дубляж для пяти счетчиков занял много места на схеме.
В классическом программировании есть принцип DRY (dont repeat yourself), не повторяй себя. Загоняй повторяющийся код в функции.

Решил убрать все в пользовательский блок для изящества схемы.
По аналогии с обычным программированием это ведь функция обычная? Так?


Упс.. не хватает памяти. Два блока работает, на трех уже ошибка.. А ведь на рассыпухе все отлично работает.

Посмотрел компиляцию, массивы не дублирует, код не раздувает. Что я делаю не так?



Схемку прилагаю
2018-11-15_13-39-56.png
Отправлено спустя 4 минуты 14 секунд:
Цифры-_Буквы_(FBD).ubi
Отправлено спустя 5 минут 7 секунд:
Пока у меня подозрения на массив. В нем 36 строчек. 5 счетчиков это уже 150 строк. Когда массив был один.. то он не дублировался. В пользовательском блоке возможно каждый массив новый.

Пользовательский блок и пропажа памяти

Добавлено: 15 ноя 2018, 14:38
Sancho
Для содержимого массива из приложенного в блоке совсем не обязательно вообще создавать массив.
Таблица ascii.
На выходе блока будет один элемент типа char - его прибавить к строке.
Если не секрет, можно посмотреть на то, что происходит после блока. Не скрином.
И остальные массивы.

Пользовательский блок и пропажа памяти

Добавлено: 15 ноя 2018, 14:45
fsergei70
На сколько я понял нужно вводить слово из 5 символов, может попробовать так.

Пользовательский блок и пропажа памяти

Добавлено: 15 ноя 2018, 14:53
Sancho
Зачем вообще массив?

Пользовательский блок и пропажа памяти

Добавлено: 15 ноя 2018, 15:15
fsergei70
Sancho писал(а): 15 ноя 2018, 14:53Зачем вообще массив?
А как по другому? Через блок таблица кодов? Интересно что места будет меньше занимает в памяти

Пользовательский блок и пропажа памяти

Добавлено: 15 ноя 2018, 15:21
fgfg66
Sancho писал(а): 15 ноя 2018, 14:38 Если не секрет, можно посмотреть на то, что происходит после блока. Не скрином.
И остальные массивы.
Там секрета нет, все счетчики собираются в строку и на дисплей. Хотел выложить код, но Flprog 4.1.1 не сохранил проект.. Блин. Вроде и сохранить нажимал, и автосохранение стоит и при компиляции сохраняет. И файл проекта свежий. Откатило на три дня. Спасибо хоть теперь могу со скрина пересобрать.. преимущество графического программирования.
Sancho писал(а): 15 ноя 2018, 14:53Зачем вообще массив?
Массив нужен для того чтобы со счетчика переводить в буквы. Такое вот решение на ум пришло.
Sancho писал(а): 15 ноя 2018, 14:38Для содержимого массива из приложенного в блоке совсем не обязательно вообще создавать массив.
Таблица ascii.
Я сначала ее попробовал, но она выдает код, а мне надо букву А например. Таблица выдает 65.

Ввод текста тремя кнопками

Добавлено: 15 ноя 2018, 15:39
Sancho
Секундочку.

Отправлено спустя 6 минут 11 секунд:
Конвертация типов -> char
На вход подай со счётчика, предварительно прибавив 48, диапазон придётся увеличить, т.к. между цифрами и буквами есть в виде больше, меньше и т.д.
Примерно так по твоему алгоритму:

Ввод текста тремя кнопками

Добавлено: 15 ноя 2018, 15:57
Sancho
av писал(а): 15 ноя 2018, 15:46fgfg66, зачем вы плодите темы ? ЗДЕСЬ бы и задавали вопрос !
Согласен. Объединяю темы.

Отправлено спустя 5 минут 55 секунд:
Ввод текста тремя кнопками
av писал(а): 15 ноя 2018, 15:46Вы хотите сделать типа кодового замка. Я правильно понял ?
Если да, то количество знаков в строке.
Забыл в своём блоке задекларировать, сори:
byte count_1;
bool old_Takt;

Ввод текста тремя кнопками

Добавлено: 15 ноя 2018, 16:00
fgfg66
av писал(а): 15 ноя 2018, 15:46fgfg66, зачем вы плодите темы ? ЗДЕСЬ бы и задавали вопрос !

Отправлено спустя 4 минуты :
fgfg66, исходя из темы по этой ссылке. Вы хотите сделать типа кодового замка. Я правильно понял ?

Да, кодовый замок. Нужно ввести код тремя кнопками. В той теме я получил ответ, что нужно подумать самому. Подумал и сделал.

Это совсем другая тема - не хватки памяти при использовании пользовательского блока. Идея с массивом не практична, если он занимает место в памяти в зависимости от количества блока. Получается не экономия, а наоборот.
Я еще учусь FBD. Уж больно он мне понравился. Детство вспомнил, 155ЛА3, все дела ))

Сейчас скачаю версию 4.2, перепишу заново и опробую ваши коды. За помощь спасибо!

Ввод текста тремя кнопками

Добавлено: 15 ноя 2018, 16:25
Sancho
Обновил

Отправлено спустя 3 минуты 41 секунду:
fsergei70 писал(а): 15 ноя 2018, 14:45На сколько я понял нужно вводить слово из 5 символов, может попробовать так.
И что получим, Серёга?
Несколько знаков в массиве из нескольких String. Каждый со своим индексом...

Отправлено спустя 19 минут 50 секунд:
fgfg66 писал(а): 15 ноя 2018, 16:00Да, кодовый замок. Нужно ввести код тремя кнопками. В той теме я получил ответ, что нужно подумать самому. Подумал и сделал.
Как будут, в планах, вводится кодовые слова? Те, с которыми будет сравниваться вводимое пользователем. Или это будут константы до перешивки?

Ввод текста тремя кнопками

Добавлено: 15 ноя 2018, 16:34
fsergei70
Sancho писал(а): 15 ноя 2018, 16:25Обновил
Сань а зачем так много входов? Как переделать под 3 входа + - выбираем символ и кнопкой сохранить, чтоб к энкодеру можно было прикрутить.

Отправлено спустя 2 минуты 52 секунды:
т.е. выбираем символ кнопками + - жмем кнопку, выбираем следующий символ и т. д.

Ввод текста тремя кнопками

Добавлено: 15 ноя 2018, 16:37
fgfg66
fsergei70 писал(а): 15 ноя 2018, 14:45На сколько я понял нужно вводить слово из 5 символов, может попробовать так.
Изящно. Правда у меня перебираемый символ мигал, чтобы было понятно, где меняется.

Ввод текста тремя кнопками

Добавлено: 15 ноя 2018, 16:42
Sancho
fsergei70 писал(а): 15 ноя 2018, 16:34Сань а зачем так много входов? Как переделать под 3 входа + - выбираем символ и кнопкой сохранить, чтоб к энкодеру можно было прикрутить.
Я показал разницу в размере кода при тех-же самых входах, что и у ТС. Мой код около 100 байт...

Ввод текста тремя кнопками

Добавлено: 15 ноя 2018, 16:45
fgfg66
Sancho писал(а): 15 ноя 2018, 16:42Я показал разницу в размере кода при тех-же самых входах, что и у ТС. Мой код около 100 байт...
Очень круто!

[ref]fsergei70[/ref], Хотел посмотреть ваш пользовательский блок. Он на C. Но выдает ошибку. Скриншот прилагаю. Что это может быть?
error.png

Ввод текста тремя кнопками

Добавлено: 15 ноя 2018, 16:46
fsergei70
Sancho писал(а): 15 ноя 2018, 16:42Я показал разницу в размере кода при тех-же самых входах, что и у ТС. Мой код около 100 байт...
Размер это хорошо, немного не понятно назначение входов.