Skip to content
  • Категории
  • Главная
  • Документация
  • Последние
  • Пользователи
Collapse
  1. Главная
  2. Разработка
  3. Python
  4. Обработка нажатия тактовой кнопки по GPIO

Обработка нажатия тактовой кнопки по GPIO

Запланировано Прикреплена Закрыта Перенесена Python
1 Сообщения 1 Posters 19 Просмотры
  • Сначала старые
  • Сначала новые
  • По количеству голосов
Авторизуйтесь, чтобы ответить
Эта тема была удалена. Только пользователи с правом управления темами могут её видеть.
  • piP Не в сети
    piP Не в сети
    pi
    написал в отредактировано pi
    #1

    На Raspberry есть программа Pronterface. Нужно частично управление перенести на блок тактовых кнопок. Возникла проблема с кнопкой подключения принтера. За подключение принтера в GUI отвечает кнопка Connect, прописанная в коде как connectbtn.

    wx.CallAfter(self.connectbtn.SetLabel, _("Connect"))
    wx.CallAfter(self.connectbtn.SetToolTip, wx.ToolTip(_("Connect to the printer")))
    wx.CallAfter(self.connectbtn.Bind, wx.EVT_BUTTON, self.connect)
    wx.CallAfter(self.gui_set_disconnected)
    

    Нажатие на кнопку вызывает def connect:

    def connect(self, event = None):
            self.log(_("Connecting..."))
            port = None
            if self.serialport.GetValue():
                port = str(self.serialport.GetValue())
            else:
                scanned = self.scanserial()
                if scanned:
                    port = scanned[0]
            baud = 115200
            try:
                baud = int(self.baud.GetValue())
            except:
                self.logError(_("Could not parse baud rate: ")
                              + "\n" + traceback.format_exc())
            if self.paused:
                self.p.paused = 0
                self.p.printing = 0
                wx.CallAfter(self.pausebtn.SetLabel, _("Pause"))
                wx.CallAfter(self.printbtn.SetLabel, _("Print"))
                wx.CallAfter(self.toolbarsizer.Layout)
                self.paused = 0
                if self.sdprinting:
                    self.p.send_now("M26 S0")
            if not self.connect_to_printer(port, baud, self.settings.dtr):
                return
            if port != self.settings.port:
                self.set("port", port)
            if baud != self.settings.baudrate:
                self.set("baudrate", str(baud))
            if self.predisconnect_mainqueue:
                self.recoverbtn.Enable()
    

    Нужно продублировать эту кнопку тактовой кнопкой, подключенной к GPIO, чтобы вызвать connect. Но с использованием цикла это не работает. Возможно это сделать без использования цикла while?

    Делал вот так:

    GPIO.output(25,True)
    
        while True:
            if GPIO.input(23):
                 self.connect()
            else:
                 break
            time.sleep(0.1)
    

    Полный код программы (без модулей) по ссылке ниже.
    rghost.ru/8P2SXKC58

    1 ответ Последний ответ
    0
    • piP pi переместил эту тему из Raspberry Pi в

    • Войти

    • Нет учётной записи? Зарегистрироваться

    • Login or register to search.
    • Первое сообщение
      Последнее сообщение
    0
    • Категории
    • Главная
    • Документация
    • Последние
    • Пользователи