GPIO exit added

This commit is contained in:
Balthasar Reuter
2018-05-09 23:17:22 +02:00
parent ae43f34807
commit b30412960a
3 changed files with 25 additions and 1 deletions

View File

@@ -49,7 +49,7 @@ class Photobooth:
self._lampOff = lambda : self._gpio.lampOff(lamp) self._lampOff = lambda : self._gpio.lampOff(lamp)
self._gpio.setButton(config.getInt('Gpio', 'trigger_pin'), self.gpioTrigger) self._gpio.setButton(config.getInt('Gpio', 'trigger_pin'), self.gpioTrigger)
self._gpio.setButton(config.getInt('Gpio', 'exit_pin'), self.teardown) self._gpio.setButton(config.getInt('Gpio', 'exit_pin'), self.gpioExit)
else: else:
self._lampOn = lambda : None self._lampOn = lambda : None
self._lampOff = lambda : None self._lampOff = lambda : None
@@ -119,6 +119,9 @@ class Photobooth:
print('Camera already started') print('Camera already started')
self.initRun() self.initRun()
continue continue
elif str(event) == 'teardown':
self.teardown()
return -1
elif str(event) != 'triggered': elif str(event) != 'triggered':
print('Unknown event received: ' + str(event)) print('Unknown event received: ' + str(event))
raise RuntimeError('Unknown event received', str(event)) raise RuntimeError('Unknown event received', str(event))
@@ -270,6 +273,11 @@ class Photobooth:
self._gpioTrigger() self._gpioTrigger()
def gpioExit(self):
self._send.send(gui.TeardownState())
def triggerOff(self): def triggerOff(self):
self._lampOff() self._lampOff()

View File

@@ -80,8 +80,10 @@ class PyQt5Gui(Gui):
if isinstance(state, IdleState): if isinstance(state, IdleState):
self.showIdle() self.showIdle()
elif isinstance(state, TriggerState): elif isinstance(state, TriggerState):
self._transport.send('triggered') self._transport.send('triggered')
elif isinstance(state, GreeterState): elif isinstance(state, GreeterState):
global cfg global cfg
self._p.handleKeypressEvent = self.handleKeypressEventNoTrigger self._p.handleKeypressEvent = self.handleKeypressEventNoTrigger
@@ -101,16 +103,24 @@ class PyQt5Gui(Gui):
elif isinstance(state, PoseState): elif isinstance(state, PoseState):
self._p.setCentralWidget(PyQt5PictureMessage('Pose!')) self._p.setCentralWidget(PyQt5PictureMessage('Pose!'))
elif isinstance(state, AssembleState): elif isinstance(state, AssembleState):
self._p.setCentralWidget(PyQt5WaitMessage('Processing picture...')) self._p.setCentralWidget(PyQt5WaitMessage('Processing picture...'))
elif isinstance(state, PictureState): elif isinstance(state, PictureState):
img = ImageQt.ImageQt(state.picture) img = ImageQt.ImageQt(state.picture)
self._p.setCentralWidget(PyQt5PictureMessage('', img)) self._p.setCentralWidget(PyQt5PictureMessage('', img))
QTimer.singleShot(cfg.getInt('Photobooth', 'display_time') * 1000, lambda : self._transport.send('ack')) QTimer.singleShot(cfg.getInt('Photobooth', 'display_time') * 1000, lambda : self._transport.send('ack'))
self._printer.print(state.picture) self._printer.print(state.picture)
elif isinstance(state, TeardownState):
self._transport.send('teardown')
self.showStart()
elif isinstance(state, ErrorState): elif isinstance(state, ErrorState):
self.showError(state.title, state.message) self.showError(state.title, state.message)
else: else:
raise ValueError('Unknown state') raise ValueError('Unknown state')

View File

@@ -155,3 +155,9 @@ class PreviewState(MessageState, PictureState):
def __init__(self, **kwargs): def __init__(self, **kwargs):
super().__init__(**kwargs) super().__init__(**kwargs)
class TeardownState(GuiState):
def __init__(self, **kwargs):
super().__init__(**kwargs)