Skocz do zawartości

Zatrzymanie programu przyciskiem GPIO


Skroll

Pomocna odpowiedź

Witam,

moje raspberry obsługuje czytnik RFID mniej więcej tak jak jest to niżej przedstawione. Problem w tym że podczas odczytu program czeka na karte i dopóki jej nie dostanie doputy nie ruszy dalej. 
Czy jest jakaś opcja żeby dać taki błąd w except (nie dokońca rozumiem to except szczerze mówiąc więc jeśli się myle poprawcie mnie) żeby się wyłączał w momencie wciśnięcia przycisku podpiętego pod GPIO? Z klawiatury to działa ale z klawiatury mnie nie urządza 😕

try:
    id, text = reader.read()
    print("ID: %s\nText: %s" % (id,text))

except KeyboardInterrupt:
	GPIO.cleanup()
    break

 

Link do komentarza
Share on other sites

Fakt, trochę nie rozumiesz... bo cały pic polega na tym, że masz przerwać funkcję reader.read() (która jest poza twoją kontrolą) i nic tu nie pomoże poza jakimiś zabawami z forkiem, sygnałami i ogólną linuksową zabawą w IPC...

Na szczęście autor biblioteki to przewidział, i oprócz funkcji read() jest jeszcze read_no_block(), czyli taki teoretyczny fragment kodu mógłby wyglądać tak:
 

id, text = reader.read_no_block()
while not id:
	if przycisk_wcisniety():
		break
	id, text = reader.read_no_block()

Możesz jakiegoś sleepa wsadzić do pętli, żeby malinka bez potrzeby nie ogrzewała pokoju. A funkcję przycisk_wcisniety() powinieneś umieć napisać sam...

 

  • Lubię! 1
  • Pomogłeś! 1
Link do komentarza
Share on other sites

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.