Ich bin recht neu in Python und versuche gerade eine Klasse mit unterschiedlichen Funktionen laufen zu lassen. Das ganze steuert dann einen Arduino über eine pyfirmata.
Das klappt auch ganz gut. Hier das der ausgedünnte Code der Klasse:
Code: Alles auswählen
class myArduino():
def __init__(self):
print "Start"
# weitere Einstellungen
def fade(self):
print "Fade"
def flash(self,speed=0.1):
print "Flash"
def wait(self,delay=0.1):
time.sleep(delay)
def run(self, task):
while True:
self.running = getattr(self, task)()
Das klappt; leider aber nur genau ein mal.
Code: Alles auswählen
a = myArduino()
MAX_LENGTH = 4096
def handle(clientsocket):
while 1:
buf = clientsocket.recv(MAX_LENGTH)
if buf == '': return #client terminated connection
a.run(buf)
print buf
serversocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
PORT = 10000
HOST = '0.0.0.0'
serversocket.bind((HOST, PORT))
serversocket.listen(10)
def readSocket():
while 1:
#accept connections from outside
(clientsocket, address) = serversocket.accept()
ct = threading.Thread(target=handle, args=(clientsocket,))
ct.run()
s = threading.Thread(target=readSocket, args=())
s.start()
Was muss ich wo wie ändern, damit ich die Klasse myArduino genau einmal laufen habe und trotzdem die ganze Zeit auf den socket lausche?
