Ejemplo n.º 1
0
class TastaturMove(Thread):
    def __init__(self):
        Thread.__init__(self)
        self.window = curses.initscr()
        #Klasse für die drei Schrittmotoren
        self.stepperMotor = Stepper()
        self.wheels = Wheel()
        curses.noecho()
        self.window.keypad(True)
        self.daemon = True
        self.start()

    def run(self):
        try:
            while (True):
                self.key_char = self.window.get_wch()
                print(self.key_char)
                if (self.key_char == curses.KEY_LEFT):
                    print("links")
                    self.stepperMotor.forwardM1()
                    Speak().voice("links")
                elif (self.key_char == curses.KEY_RIGHT):
                    print("rechts")
                    self.stepperMotor.backwardsM1()
                    Speak().voice("rechts")
                elif (self.key_char == curses.KEY_UP):
                    print("hoch")
                    self.stepperMotor.backwardsM3()
                    Speak().voice("hoch")
                elif (self.key_char == curses.KEY_DOWN):
                    print("runter")
                    self.stepperMotor.forwardM3()
                    Speak().voice("runter")
                elif (self.key_char == curses.KEY_HOME):
                    print("links fahren")
                    self.wheels.stopStep()
                    time.sleep(0.5)
                    self.wheels.leftStep()
                    #Speak().voice("links fahren")
                elif (self.key_char == curses.KEY_END):
                    print("rechts fahren")
                    self.wheels.stopStep()
                    time.sleep(0.5)
                    self.wheels.rightStep()
                    #Speak().voice("rechts fahren")
                elif (self.key_char == curses.KEY_PPAGE):
                    print("vorwärts fahren")
                    self.wheels.stopStep()
                    time.sleep(0.5)
                    self.wheels.forwardStep()
                    #Speak().voice("vorwärts")
                elif (self.key_char == curses.KEY_NPAGE):
                    print("rückwärts fahren")
                    self.wheels.stopStep()
                    time.sleep(0.5)
                    self.wheels.backwardStep()
                    #Speak().voice("rückwärts")
                elif (self.key_char == curses.KEY_BACKSPACE):
                    print("Stop Motoren")
                    self.wheels.stopStep()
                    #sonic bewegen
                elif (self.key_char == "r"):
                    self.stepperMotor.forwardSonic()
                elif (self.key_char == "l"):
                    self.stepperMotor.backwardSonic()
                #Einschalten falls mal die Geschwindigkeitskontrolle funktioniert
                elif (self.key_char == "s"):
                    print("langsam fahren")
                    self.wheels.slowSpeed()
                elif (self.key_char == "m"):
                    print("mittelscnell fahren")
                    self.wheels.mediumSpeed()
                elif (self.key_char == "f"):
                    print("schnell fahren")
                    self.wheels.highSpeed()
                else:
                    curses.beep()
                curses.flushinp()  # Cache Tasteninhalt löschen
                if self.key_char == "q":
                    curses.flushinp()  # Cache Tasteninhalt löschen
                    break
        except Exception as e:
            print("es gab einen Fehler: ", e)
            self.stepperMotor.setStep0()
Ejemplo n.º 2
0
class HandyMove(Thread):
    def __init__(self, dataFromClient, socketConnection):
        Thread.__init__(self)
        self.dataFromClient = dataFromClient
        self.komm_handy = socketConnection
        self.motorCamera = Stepper()
        self.wheels = Wheel()
        # angabe wie gerade gefahren wird. 0=halt 1=vorwärts 2=rückwärts 3=links 4=rechts
        self.richtung = 0
        self.verglRichtung1 = 90  # der Motor startet bei 90Grad in der Mitte
        self.verglRichtung2 = 90  # der Motor startet bei 90Grad in der Mitte
        self.daemon = True
        self.start()

    def run(self):
        # Daten vom Client empfangen damit Funktionen gestartet werden können
        try:
            while True:
                self.data = self.dataFromClient.recv(1024).decode("utf-8")
                #Abfrage ob noch Kommandos kommen, wenn nicht dann wird erneut nach dem Aufbau der Verbindung gefragt. Wird nur hier getan und nicht in handyWheels
                if not (self.data):
                    print("End transmit commands")
                    self.komm_handy.kommunikationHandyClose()
                    self.dataFromClient, self.dataFromClient1 = self.komm_handy.kommunikationHandy(
                    )
                cmdList = self.data.split("\n")
                cmdList = cmdList[:-1]
                for oneCmd in cmdList:  # comma, or other
                    dataSplit = oneCmd.split("#")
                    if (dataSplit[0] == "CMD_SERVO"):
                        print(dataSplit)
                        if ((dataSplit[1] == "0") and
                            (int(dataSplit[2]) > int(self.verglRichtung1))):
                            print("motor1, rechts wird übergeben")
                            self.motorCamera.backwardsM1(
                            )  #Motor1 wird rechts gedreht
                            Speak().voice("Kamera rechts")
                            self.verglRichtung1 = dataSplit[2]
                        elif ((dataSplit[1] == "0") and
                              (int(dataSplit[2]) < int(self.verglRichtung1))):
                            print("motor1, links wird übergeben")
                            self.motorCamera.forwardM1(
                            )  #Motor1 wird links gedreht
                            Speak().voice("Kamera links")
                            self.verglRichtung1 = dataSplit[2]
                        elif ((dataSplit[1] == "1") and
                              (int(dataSplit[2]) > int(self.verglRichtung2))):
                            print("motor2, hoch wird übergeben")
                            self.motorCamera.backwardsM2(
                            )  #Motor2 wird hoch gedreht
                            Speak().voice("Kamera hoch")
                            self.verglRichtung2 = dataSplit[2]
                        elif ((dataSplit[1] == "1") and
                              (int(dataSplit[2]) < int(self.verglRichtung2))):
                            print("motor2, runter wird übergeben")
                            self.motorCamera.forwardM2(
                            )  #Motor2 wird runter gedreht
                            Speak().voice("Kamera runter")
                            self.verglRichtung2 = dataSplit[2]
                    elif (dataSplit[0] == "CMD_MOTOR"):
                        print(dataSplit)
                        if (int(dataSplit[1]) == 0) and (int(dataSplit[3])
                                                         == 0):
                            self.wheels.stopStep()
                            self.richtung = 0
                        elif (int(dataSplit[1]) > 0) and (int(dataSplit[3]) >
                                                          0):
                            if (self.richtung != 1):
                                self.wheels.stopStep()
                                time.sleep(0.5)
                            self.wheels.forwardStep()
                            self.richtung = 1
                        elif (int(dataSplit[1]) < 0) and (int(dataSplit[3]) <
                                                          0):
                            if (self.richtung != 2):
                                self.wheels.stopStep()
                                time.sleep(0.5)
                            self.wheels.backwardStep()
                            self.richtung = 2
                        elif (int(dataSplit[1]) > 0) and (int(dataSplit[3]) <
                                                          0):
                            if (self.richtung != 3):
                                self.wheels.stopStep()
                                time.sleep(0.5)
                            self.wheels.leftStep()
                            self.richtung = 3
                        elif (int(dataSplit[1]) < 0) and (int(dataSplit[3]) >
                                                          0):
                            if (self.richtung != 4):
                                self.wheels.stopStep()
                                time.sleep(0.5)
                            self.wheels.rightStep()
                            self.richtung = 4

        except Exception as e:
            print(e)
            self.komm_handy.kommunikationHandyClose()
            self.motorCamera.setStep0()
            print("Programm Handy Steuerung geschlossen")