1

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?

2

Odp: Chwilowa dezaktywacja przycisku

Ustaw plik w systemie, jeżeli plik istnieje to nie uruchamiaj skryptu dalej. A obok po 5s usuń plik.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

3

Odp: Chwilowa dezaktywacja przycisku

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

4 (edytowany przez wabikboy 2015-04-22 08:43:18)

Odp: Chwilowa dezaktywacja przycisku

wstaw fi nad

elif [ "$BUTTON" = "wps" ]; then

i usuń jedno za

TL-WR1043ND: HDD-USB, extroot, LCD, Pilot, MP3 - Radio Player, NAS, Torrent, FTP, Sterowanie głosem, Komunikaty Głosowe, Termometr, PowerSwitch - Sterownik oświetlenia, Budzik, LTE - ODU IDU 200
Raspberry Pi + HDMI-VGA + Lcd Controller + Lcd z laptopa = Pogodynka smile

5

Odp: Chwilowa dezaktywacja przycisku

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.

6 (edytowany przez wabikboy 2015-04-22 11:28:54)

Odp: Chwilowa dezaktywacja przycisku

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ś smile
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.

TL-WR1043ND: HDD-USB, extroot, LCD, Pilot, MP3 - Radio Player, NAS, Torrent, FTP, Sterowanie głosem, Komunikaty Głosowe, Termometr, PowerSwitch - Sterownik oświetlenia, Budzik, LTE - ODU IDU 200
Raspberry Pi + HDMI-VGA + Lcd Controller + Lcd z laptopa = Pogodynka smile

7

Odp: Chwilowa dezaktywacja przycisku

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?

8 (edytowany przez wabikboy 2015-04-22 12:22:28)

Odp: Chwilowa dezaktywacja przycisku

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ć

TL-WR1043ND: HDD-USB, extroot, LCD, Pilot, MP3 - Radio Player, NAS, Torrent, FTP, Sterowanie głosem, Komunikaty Głosowe, Termometr, PowerSwitch - Sterownik oświetlenia, Budzik, LTE - ODU IDU 200
Raspberry Pi + HDMI-VGA + Lcd Controller + Lcd z laptopa = Pogodynka smile

9

Odp: Chwilowa dezaktywacja przycisku

Nie uwierzysz ale bez zmian nadal polecenie wykonuje tyle razy ile przycisnąłem przycisk.

10 (edytowany przez wabikboy 2015-04-22 13:48:18)

Odp: Chwilowa dezaktywacja przycisku

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

TL-WR1043ND: HDD-USB, extroot, LCD, Pilot, MP3 - Radio Player, NAS, Torrent, FTP, Sterowanie głosem, Komunikaty Głosowe, Termometr, PowerSwitch - Sterownik oświetlenia, Budzik, LTE - ODU IDU 200
Raspberry Pi + HDMI-VGA + Lcd Controller + Lcd z laptopa = Pogodynka smile

11

Odp: Chwilowa dezaktywacja przycisku

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...

12

Odp: Chwilowa dezaktywacja 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.

13

Odp: Chwilowa dezaktywacja przycisku

rombad napisał/a:

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

TL-WR1043ND: HDD-USB, extroot, LCD, Pilot, MP3 - Radio Player, NAS, Torrent, FTP, Sterowanie głosem, Komunikaty Głosowe, Termometr, PowerSwitch - Sterownik oświetlenia, Budzik, LTE - ODU IDU 200
Raspberry Pi + HDMI-VGA + Lcd Controller + Lcd z laptopa = Pogodynka smile