Compare commits
3 commits
0b11e06e05
...
c2e1ac3ae9
Author | SHA1 | Date | |
---|---|---|---|
c2e1ac3ae9 | |||
461eadf47a | |||
0ac94b5b31 |
2 changed files with 108 additions and 22 deletions
48
main.py
48
main.py
|
@ -3,28 +3,32 @@
|
|||
import RPi.GPIO as GPIO
|
||||
import time
|
||||
|
||||
GPIO.setmode(GPIO.BCM)
|
||||
|
||||
GPIO.setup(23, GPIO.IN, pull_up_down=GPIO.PUD_UP)
|
||||
GPIO.setup(24, GPIO.OUT)
|
||||
|
||||
try:
|
||||
lastState = GPIO.input(23)
|
||||
if lastState == False:
|
||||
def buttonEventHandler(value):
|
||||
print "buton event!"
|
||||
if value is 0:
|
||||
GPIO.output(24, True)
|
||||
while True:
|
||||
button_state = GPIO.input(23)
|
||||
if button_state == lastState:
|
||||
print('No Change...')
|
||||
else:
|
||||
if button_state == False:
|
||||
GPIO.output(24, True)
|
||||
print('Button Pressed...')
|
||||
else:
|
||||
GPIO.output(24, False)
|
||||
print('Button Released...')
|
||||
lastState = button_state
|
||||
time.sleep(0.02)
|
||||
except:
|
||||
GPIO.cleanup()
|
||||
print('Button Pressed...')
|
||||
else:
|
||||
GPIO.output(24, False)
|
||||
print('Button Released...')
|
||||
|
||||
def main():
|
||||
print "Let's do this!"
|
||||
|
||||
GPIO.setmode(GPIO.BCM)
|
||||
|
||||
GPIO.setup(23, GPIO.IN, pull_up_down=GPIO.PUD_UP)
|
||||
GPIO.setup(24, GPIO.OUT)
|
||||
#GPIO.add_event_detect(23, GPIO.FALLING)
|
||||
#GPIO.add_event_callback(23, buttonEventHandler)
|
||||
try:
|
||||
while True:
|
||||
GPIO.wait_for_edge(23, GPIO.BOTH)
|
||||
buttonEventHandler(GPIO.input(23))
|
||||
except KeyboardInterrupt as e:
|
||||
GPIO.cleanup()
|
||||
raise
|
||||
|
||||
if __name__== "__main__":
|
||||
main()
|
||||
|
|
82
service/service.py
Normal file
82
service/service.py
Normal file
|
@ -0,0 +1,82 @@
|
|||
#! /usr/bin/env python
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
from pulsectl import Pulse
|
||||
import SocketServer
|
||||
from threading import Thread
|
||||
|
||||
LISTEN_ON = ("10.0.0.4", 2000)
|
||||
|
||||
def main():
|
||||
pulse = Pulse('mic-control')
|
||||
|
||||
sources = pulse.source_list()
|
||||
|
||||
sourceNumber = getSourceSelection(sources)
|
||||
|
||||
server = SocketServer.TCPServer(LISTEN_ON, RequestHandler)
|
||||
|
||||
try:
|
||||
server.serve_forever()
|
||||
except KeyboardInterrupt:
|
||||
server.shutdown()
|
||||
server.server_close()
|
||||
|
||||
|
||||
def getSourceSelection(sources):
|
||||
sourceCount = len(sources) - 1
|
||||
error = False
|
||||
while True:
|
||||
message = error if error else "Please select a source: "
|
||||
print(message)
|
||||
for i, source in enumerate(sources):
|
||||
print "%i: %s" % (i, source.description)
|
||||
selection = raw_input("Enter a number[0-%i]:" % sourceCount)
|
||||
print("")
|
||||
try :
|
||||
return getInt(selection, sourceCount)
|
||||
except InputError as e:
|
||||
error = e.message
|
||||
|
||||
def getInt(value, sourceCount):
|
||||
|
||||
number = 0
|
||||
try:
|
||||
number = int(value)
|
||||
except ValueError as e:
|
||||
raise InputError("Enter only a number...")
|
||||
|
||||
if number not in range(0, sourceCount):
|
||||
raise InputError("Not a valid option...")
|
||||
|
||||
return number
|
||||
|
||||
class RequestHandler(SocketServer.StreamRequestHandler):
|
||||
def handle(self):
|
||||
|
||||
for line in self.rfile:
|
||||
message = line.strip()
|
||||
if message in messageTypes:
|
||||
messageTypes[message]()
|
||||
self.wfile.write(message)
|
||||
print("Closed!")
|
||||
self.request.close()
|
||||
|
||||
|
||||
def buttonPressed():
|
||||
print("down!")
|
||||
|
||||
def buttonReleased():
|
||||
print("up!")
|
||||
|
||||
messageTypes = {
|
||||
'button_press': buttonPressed,
|
||||
'button_release': buttonReleased,
|
||||
}
|
||||
|
||||
class InputError(Exception):
|
||||
def __init__(self, message):
|
||||
self.message = message
|
||||
|
||||
|
||||
main()
|
Loading…
Reference in a new issue