Оптимизация функций

dsg25
Offline
Зарегистрирован: 25.05.2022

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

rkit
Offline
Зарегистрирован: 23.11.2016

1. Нажатие

2. Отпускание

3. Нажатие

4. Опускание

5. Возможный таймаут второго нажатия

Получается минимум 5 функций на каждую кнопку.

dsg25
Offline
Зарегистрирован: 25.05.2022

rkit пишет:

1. Нажатие

2. Отпускание

3. Нажатие

4. Опускание

5. Возможный таймаут второго нажатия

Получается минимум 5 функций на каждую кнопку.

Под•••ал?
Спасибо, суть уловил.

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

dsg25 пишет:
Под•••ал? Спасибо, суть уловил.
Боюсь, что не уловил. Вам действительно сказали, что по уму функций должно быть гораздо больше, чем две.

Дим-мычъ
Offline
Зарегистрирован: 20.03.2021

Мою шутку удалили, но это не совсем была шутка)). Я имел ввиду, что вопрос очень общий , но кнопки могут быть разные: аналоговые(лесенка), на прерываниях, кнопка ресет, наконец .

Если кнопки однотипные(например опрос в loop каждые 2мс), то можно сделать массив кнопок, и, использовать для каждой кнопки одни и те  же функции(как в #1),  просто изменяя индекс кнопки в массиве ,  и опрашивать их по очереди, напр 

button[ i ];   i++;  if(i > n)   i = 0;

Это по оптимизации ИМХО.

BOOM
BOOM аватар
Offline
Зарегистрирован: 14.11.2018

Дим-мычъ пишет:

button[ i ];   i++;  if(i > n)   i = 0;

Вот такую конструкцию недавно видел (адаптировал под пример выше):

button[ i ];  i = (i + 1) % n;

)))))

b707
Offline
Зарегистрирован: 26.05.2017

Дим-мычъ пишет:

можно сделать массив кнопок,  и опрашивать их по очереди, напр 

button[ i ];   i++;  if(i > n)   i = 0;

 

и что, по-твоему, делает первая часть этого выражения?

Дим-мычъ
Offline
Зарегистрирован: 20.03.2021

b707 пишет:

и что, по-твоему, делает первая часть этого выражения?

Здесь три строчки кода

1. button[i]; //в функцию опроса кнопки передаётся значение пина кнопки button[i] из массива button[];

2. i++; // увеличиваем индекс на 1.

3. if(i > n) i = 0; //если i > n(число пинов кнопок) i = 0; начинаем опрос сначала

b707
Offline
Зарегистрирован: 26.05.2017

Дим-мычъ пишет:

1. button[i]; //в функцию опроса кнопки передаётся значение пина кнопки button[i] из массива button[];

передается ? в функцию? - ты что-то куришь...

Дим-мычъ
Offline
Зарегистрирован: 20.03.2021

b707 пишет:

 ты что-то куришь...

 Следите за собой. Это не готовый код, а лишь ответ в "общем". Каков вопрос- таков ответ.

Вот BOOM почему-то сразу понял

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

b707 пишет:

Дим-мычъ пишет:

button[ i ];   i++;  if(i > n)   i = 0;

и что, по-твоему, делает первая часть этого выражения?

Это зависит от того, какого типа button, и как в этом типе определена операция взятия элемента по индексу.

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Дим-мычъ пишет:

3. if(i > n) i = 0; //если i > n(число пинов кнопок) i = 0; начинаем опрос сначала

Здесь ошибка!

Если n - "число пинов кнопок", то должно быть >=, а не >, т.к. они с нуля нумеруются.

Дим-мычъ
Offline
Зарегистрирован: 20.03.2021

ЕвгенийП пишет:

Здесь ошибка!

Если n - "число пинов кнопок", то должно быть >=, а не >, т.к. они с нуля нумеруются.

Спасибо что поправили

mykaida
mykaida аватар
Offline
Зарегистрирован: 12.07.2018

dsg25 пишет:
Всем привет! Помогите новичку. Есть две кнопки. Есть функция обработки двойного нажатия. Как будет правильнее, использовать две функции для каждой кнопки или в одной функции опросить две кнопки?

А чего по-Вашему двойное нажатие? Опишите в подробностях. Типа:

Нажал, ушел поссать, пришел (у Вас как с простатой?)

Нажал один раз  сразу (0.15 секунд) второй - ушел поссать.

Нажал, нажал, нажал!!! Нихера не работает!

Morroc
Offline
Зарегистрирован: 24.10.2016

Конечно не работает - "Нажал, нажал, нажал" это тройное, а не двойное ! )))

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

Morroc пишет:

Конечно не работает - "Нажал, нажал, нажал" это тройное, а не двойное ! )))

А если так: "нажал, нажал, нажал, отпустил, отпустил, отпустил"?

Green
Offline
Зарегистрирован: 01.10.2015

А если "та - да - да - ДААМ..."?