Temat: Chwilowa dezaktywacja przycisku
Czy da się jakoś np. na 5 sekund dezaktywować przycisk, żeby było niemożliwe dwukrotne uruchomienie skryptu tym przyciskiem w ciągu 5 sekund?
Nie jesteś zalogowany. Proszę się zalogować lub zarejestrować.
eko.one.pl → Oprogramowanie / Software → Chwilowa dezaktywacja przycisku
Strony 1
Zaloguj się lub zarejestruj by napisać odpowiedź
Czy da się jakoś np. na 5 sekund dezaktywować przycisk, żeby było niemożliwe dwukrotne uruchomienie skryptu tym przyciskiem w ciągu 5 sekund?
Ustaw plik w systemie, jeżeli plik istnieje to nie uruchamiaj skryptu dalej. A obok po 5s usuń plik.
Zmodyfikowałem oryginalny skrypt do takiej postaci, ale coś nie działa:
if [ "$ACTION" = "pressed" ]; then
if [ "$BUTTON" = "BTN_2" ]; then
if [ -e /tmp/qwerty ]; then
exit; else
touch /tmp/qwerty
#tutaj polecenie do wykonania max. raz na 5 sekund...
sleep 5
rm /tmp/qwerty;
elif [ "$BUTTON" = "wps" ]; then
#drugie polecenie
fi
fi
fi
wstaw fi nad
elif [ "$BUTTON" = "wps" ]; then
i usuń jedno za
if [ "$ACTION" = "pressed" ]; then
if [ "$BUTTON" = "BTN_2" ]; then
if [ -e /tmp/qwerty ]; then
exit; else
touch /tmp/qwerty
### POLECENIE 1 ###
sleep 5
rm /tmp/qwerty;
fi
elif [ "$BUTTON" = "wps" ]; then
### POLECENIE 2 ###
fi
fi
Zmieniłem tak jak piszesz i efekt jest taki, że jak wcisnę przycisk kilka razy w ciągu tych 5 sekund to polecenie zostanie wykonane tyle razy ile wcisnąłem z tą różnicą że za każdym razem występuje 5 sekund przerwy. Tak jakby if [ -e /tmp/qwerty ]; then exit nie działało, ale działa, bo jak utworzę plik /tmp/qwerty ręcznie to przycisk jes blokowany. Sprawdziłem też że tworzenie i usuwanie pliku /tmp/qwerty przyciskiem działa.
Napisałem Ci żebyś zmienił bo dla tego Ci nie działało w ogóle.
a że wykonuje się z przerwą 5 sek to nic dziwnego bo tak sobie to oprogramowałeś ![]()
Cezary Ci napisał że masz dezaktywować przycisk a ty zrobiłeś warunek który po wciśnięciu przycisku coś wykonuje z przerwą 5 sek.
Zrobiłem jak Cezary napisał (przynajmniej tak mi się wydaje) że jeśli plik istnieje to nie uruchamiam skryptu dalej i to działa o ile plik utworzę ręcznie, nie rozumiem czemu nie działa jeśli plik zostanie utworzony skryptem. Czyli nie tędy droga, to jak?
if [ "$ACTION" = "pressed" ]; then
if [ "$BUTTON" = "BTN_2" ]; then
if [ ! -e /tmp/qwerty ]; then
touch /tmp/qwerty
#tutaj polecenie do wykonania max. raz na 5 sekund...
fi
elif [ "$BUTTON" = "wps" ]; then
#drugie polecenie
fi
fi
sleep 5
rm /tmp/qwerty
Nie sprawdzałem ale powinno działać
Nie uwierzysz ale bez zmian nadal polecenie wykonuje tyle razy ile przycisnąłem przycisk.
if [ "$ACTION" = "pressed" ]; then
if [ ! -e /tmp/qwerty ]; then
if [ "$BUTTON" = "BTN_2" ]; then
touch /tmp/qwerty
#tutaj polecenie do wykonania max. raz na 5 sekund...
fi
elif [ "$BUTTON" = "wps" ]; then
#drugie polecenie
fi
fi
sleep 5
rm /tmp/qwerty
Nie mam możliwości testu tego ale teraz powinno być ok
Według mnie taki zapis będzie działał dla obu przycisków, ale i tak sprawdziłem i niestety bez zmian. Już nie mam pomysłu, chyba będę musiał włączać przekaźnik na 5 sekund który rozłączy kabelki od przycisku...
Już wiem że to nie zadziała. Wróciłem do standardowej postaci skryptu i wpisałem takie polecenie do wykonania /usr/bin/abc.sh o takiej zawartości:
if [ ! -e /tmp/qwerty ]; then
touch /tmp/qwerty
logger wykonano
sleep 10
rm /tmp/qwerty
fi
Jeśli uruchomię ten skrypcik ręcznie kilka razy w ciągu 10s. to w logu będzie tylko jeden wpis, jeśli przyciskiem to co 10s. będzie się pojawiał nowy wpis.
Według mnie taki zapis będzie działał dla obu przycisków ...
Działa dla jednego przycisku gdyż polecenie dla przycisku BTN_2 wykona się jeśli plik /tmp/qwerty nie istnieje
drugie polecenie wykona się bez warunku jeśli wciśniesz drugi przycisk
Widocznie każde wciśnięcie przycisku wpisywane jest do pamięci i wykonuje się po kolei
Strony 1
Zaloguj się lub zarejestruj by napisać odpowiedź
eko.one.pl → Oprogramowanie / Software → Chwilowa dezaktywacja przycisku
Forum oparte o PunBB, wspierane przez Informer Technologies, Inc