Как указывали другие, except KeyboardInterrupt ...
- это специальная конструкция в Python... потому что [Ctrl]-[C] обрабатывается вашим драйвером терминала и представляет сигнал "Прерывание" для вашей программы (SIGINT в Unix, Linux и подобных операционных системах). ). (Существует аналогичная обработка в операционных системах Microsoft, с другими деталями и немного другой терминологией, но код Python работает одинаково в любом случае.
Существуют и другие способы доступа к различным другим формам аппаратных событий... и модуль Python exception
не является типичным способом их реализации.
В случае с AdaFruit или другими устройствами Rasberry Pi вы должны использовать модули, которые они включают в свой пакет. Вы уже видели это и, предположительно, выполнили необходимые import
в своем коде (на основе вашей ссылки на lcd.buttonPressed()
). Проблема в том, что вы вообще не используете эту функцию.
Внимательно прочтите это: https://blog.soton.ac.uk/pi/modules-available/adafruit-rgb-lcd-display/
... он включает пример, который показывает, как вы должны его использовать. Это должно быть что-то вроде:
#!python
# Set up stuff here ...
got_event = False
while not got_event:
if lcd.buttonPressed(lcd.SELECT)
got_event = True
break
# Do other stuff, perhaps
# Or time.sleep(0.1)?
if got_event:
# In case we had other exit conditions from doing other stuff?
subprocess.call(YOUR_OTHER_PROGRAM)
Конечно, их код — это полноценная работающая программа. Здесь я отмечу лишь пару моментов. Вам нужно зацикливаться до тех пор, пока вы не получите событие, которое ищете (или зацикливаться навсегда, обрабатывая эти события, пока ваше устройство включено).
Метод lcd.buttonPressed()
проверяет, была ли кнопка нажата с момента последней очистки; но метод/функция не блокируется... он возвращает True
или False
(или, возможно, None
--- это не повлияет на эти примеры кода --- любое "ложное" значение означает, что кнопка не была нажата).
Вы хотите поспать какое-то время между проверками. В своем примере они используют задержку в полсекунды; Я использовал десятую долю секунды. (Люди обычно воспринимают ответ в течение десятой доли секунды от компьютеризированного устройства как «мгновенный», в то время как задержка в полсекунды, как правило, немного раздражает). Если вы будете проверять как можно быстрее, это просто напрасно нагреет электронику. Даже 0,01 (одной сотой секунды) сна достаточно ... но 0,05-0,1, вероятно, лучшая практика для чего-то подобного.
06.07.2015
try:
...except ...:
в Python, как правило, не самый простой способ. Обработка исключений должна использоваться для обработки исключительных ситуаций, а обычное управление потоком должно быть предпочтительным для кода, обрабатывающего нормальный поток через вашу программу. Это руководство в целом облегчит чтение и сопровождение вашего кода другим пользователям. 12.07.2015Keyboardinterrupt
в скрипте. 12.07.2015