Example #1
0
def sixButtonEventHandler():
    global currentScreen
    for event in pygame.event.get():
            if event.type == pygame.QUIT:
                return False

            if event.type == pygame.MOUSEBUTTONDOWN:
                mouse_pos = event.pos  # gets mouse position

                # checks if mouse position is over the button

                if buttons[0].collidepoint(mouse_pos):
                    if(currentScreen == "main"):
                        print("Write functionality here")
                        
                    elif(currentScreen == "table"):
                        table.goUp(5)
                    
                elif buttons[1].collidepoint(mouse_pos):
                    if(currentScreen == "main"):
                        currentScreen = "table"
                    elif(currentScreen == "table"):
                        print("Write functionality here")

                    
                elif buttons[2].collidepoint(mouse_pos):
                    if(currentScreen == "main"):
                        print("Write functionality here")
                        
                    elif(currentScreen == "table"):
                        print("Write functionality here")
                    
                elif buttons[3].collidepoint(mouse_pos):
                    if(currentScreen == "main"):
                        print("Write functionality here")
                        
                    elif(currentScreen == "table"):
                        table.goDown(5)
                    
                elif buttons[4].collidepoint(mouse_pos):
                    if(currentScreen == "main"):
                        print("Write functionality here")
                    
                    elif(currentScreen == "table"):
                        print("Write functionality here")
                    
                elif buttons[5].collidepoint(mouse_pos):
                    if(currentScreen == "main"):
                        print("Write functionality here")
                        
                    elif(currentScreen == "table"):
                        currentScreen = "main"
                    
            if(event.type == pygame.KEYDOWN):
                if(event.key == K_ESCAPE):
                    return False
    return True
Example #2
0
def end():
    global config
    global bEnd
    global tThread
    bEnd = True
    print("Ending the program, write the configuration to a file")
    with open('playvibe_config.ini', 'w') as config_file:
        config.write(config_file)

    GPIOController.destroy()
Example #3
0
def main():
    pygame.init()
    myfont = pygame.font.SysFont("freesansbold", 30)
    #Dette bruges til at køre Sopare
    process = subprocess.Popen(('./sopare.py -l'), stdout=subprocess.PIPE, stderr=subprocess.STDOUT, bufsize=1, close_fds=ON_POSIX, cwd="../sopare")
    q = Queue()
    t = threading.Thread(target=enqueue_output, args=(process.stdout, q))
    t.daemon = True
    t.start()

    while True:
        #using our enqueue_output thread to find out if sopare has sent anything
        try:  line = q.get_nowait() # or q.get(timeout=.1)
        except Empty:
            pass #do nothing
        else: # got a line from sopare
            nextline = line
            if process.poll() is not None:
                break
            #decoding from bytes to string
            currentline = nextline.decode()
            #This is where our if/elif statements will control the GPIO pins when a specific word is recognized
            if("ropox" in currentline):
                table.goUp(5) #Needs all logic and the command tree

        #optimized layoutcontrol
        if(currentScreen == "main"):
            sixButtonLayout(["PROFIL", "BORD", "SKAB", u"LÅS", "OVN", "INDSTILLINGER"], myfont)
        elif(currentScreen == "table"):
            sixButtonLayout(["OP", u"HØJDE", u"LÅS", "NED", "PROFIL", "TILBAGE"], myfont)
            # display headline
        pygame.display.set_caption('ROPOX')
        text("ROPOX", myfont, (width/2, height/10))
        pygame.display.flip()
        #managing clicks on buttons
        keepGoing = sixButtonEventHandler()
        if not keepGoing:
            break
        screen.fill(bg)
        clock.tick(fps)
        
    pygame.quit()
    if(os.name != "nt"):
        table.cleanUp()
    sys.exit
Example #4
0
def stopButtonEventHandler():
    global currentScreen
    #Running through all events this iteration
    for event in pygame.event.get():
            if event.type == pygame.QUIT:
                return False

                                                     
            if event.type == pygame.MOUSEBUTTONDOWN:
                mouse_pos = event.pos  # gets mouse position

                # checks if mouse position is over the button

                if buttons[0].collidepoint(mouse_pos):
                    if(currentScreen == "stop"):
                        table.stopTable()
                        currentScreen = "main"
    return True
Example #5
0
def main():
    global screen
    global currentScreen
    global listening
    global tablelistening
    screen = pygame.display.set_mode(size)
    pygame.init()
    pygame.mouse.set_visible(False)
    myfont = pygame.font.SysFont("freesansbold", 30)
    #Dette bruges til at køre Sopare
    process = subprocess.Popen(('./sopare.py -l'), shell = True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT, bufsize=1, close_fds=ON_POSIX, cwd="../sopare")
    q = Queue() #Maybe little q in queue
    t = Thread(target=enqueue_output, args=(process.stdout, q))
    t.daemon = True
    t.start()

    try:
        while True:
            #using our enqueue_output thread to find out if sopare has sent anything
            try:  line = q.get_nowait() # or q.get(timeout=.1)
            except Empty:
                pass #do nothing
            else: # got a line from sopare
                nextline = line
                if process.poll() is not None:
                    break
                #decoding from bytes to string
                currentline = nextline.decode()
                #This is where our if/elif statements will control the GPIO pins when a specific word is recognized
                if("result:stop" in currentline):
                    table.stopTable()
                    listening = False
                    tablelistening = False
                    currentScreen = "main"
                if("result:ropox" in currentline):
                    listening = True
                    tablelistening = False
                    currentScreen = "listening"
                    waitThread = Thread(target = wait, )
                    waitThread.daemon = False
                    waitThread.start
                    #Lytter skærm
                if listening:
                    if("result:table" in currentline):
                        tablelistening = True
                        listening = False
                if tablelistening:
                    if("result:up" in currentline):
                        table.goUp(5)
                        tablelistening = False
                        action = u"Bord hæves..."
                        currentScreen = "stop"
                        # STOP KNAP osv.
                    elif("result:down" in currentline):
                        table.goDown(5)
                        tablelistening = False
                        action = u"Bord kører ned..."
                        currentScreen = "stop"
                        # STOP KNAP osv.
            
            #optimized layoutcontrol
            if(currentScreen == "main"):
                sixButtonLayout(["PROFIL", "BORD", "SKAB", u"LÅS", "OVN", "INDSTILLINGER"], myfont) # 123Ovn kunne måske ændres til træning
            elif(currentScreen == "table"):
                sixButtonLayout(["OP", u"HØJDE", u"LÅS", "NED", "PROFIL", "TILBAGE"], myfont)
            elif(currentScreen == "settings"):
                sixButtonLayout(["Sprog", u"Træn", u"Følsomhed", "Udtræk Data", "Ydligere?", "TILBAGE"], myfont)
            elif(currentScreen == "training"):
                sixButtonLayout(["Ropox", u"Bord", u"Hæv", "Ned", "Stop", "TILBAGE"], myfont)
            elif(currentScreen == "stop"):
                stopButtonLayout("STOP", myfont, action)
            elif(currentScreen == "listening"):
                if(listening):
                    listeningLayout("Lytter...")
                elif(tablelistening):
                    listeningLayout("Bord...")

                #123 Her kunne laves endnu et elif(): med nogle navne til knapper i træningsscreen, op, ned, ropox, bord tilbage
                #Currentscreen kunne blive døbt training

            pygame.display.set_caption('ROPOX')
            if(currentScreen != "stop"):   # display headline
                text("ROPOX", myfont, (width/2, height/10))
            pygame.display.flip()
            #managing clicks on buttons
            if(currentScreen == "stop"):
                keepGoing = stopButtonEventHandler()
            else:
                keepGoing = sixButtonEventHandler()
            if not keepGoing:
                break
            screen.fill(bg)
            clock.tick(fps)
    except Exception as e:
        os.killpg(os.getpgid(process.pid), signal.SIGTERM)
        table.stopTable()
        table.cleanUp()
        print(e)

        
    os.killpg(os.getpgid(process.pid), signal.SIGTERM)
    table.stopTable()
    pygame.quit()
    if(os.name != "nt"):
        table.cleanUp()
    sys.exit
Example #6
0
def sixButtonEventHandler():
    global currentScreen
    #Running through all events this iteration
    for event in pygame.event.get():
            if event.type == pygame.QUIT:
                return False

                                                     #### TODO: CHECK WORDS IN ALL trainSubprocess.Train() ####
            if event.type == pygame.MOUSEBUTTONDOWN:
                mouse_pos = event.pos  # gets mouse position

                # checks if mouse position is over the button

                if buttons[0].collidepoint(mouse_pos):
                    if(currentScreen == "main"):
                        print("Write functionality here")
                        
                    elif(currentScreen == "table"):
                        table.goUp(5)

                    elif(currentScreen == "settings"):
                        print("Sprog")

                    elif(currentScreen == "training"):
                        #Will start training of the word Ropox
                       pass
                    elif(currentScreen == "stop"):
                        #STOP
                        table.stopTable()

                    
                elif buttons[1].collidepoint(mouse_pos):
                    if(currentScreen == "main"):
                        currentScreen = "table"

                    elif(currentScreen == "table"):
                        print("Write functionality here")

                    elif(currentScreen == "settings"):
                        currentScreen = "training"

                    elif(currentScreen == "training"):
                        #Will start training of the word Table
                        pass
                    
                elif buttons[2].collidepoint(mouse_pos):
                    if(currentScreen == "main"):
                        print("Write functionality here")
                        
                    elif(currentScreen == "table"):
                        print("Write functionality here")

                    elif(currentScreen == "training"):
                        #Will start training of the word Up
                        pass

                elif buttons[3].collidepoint(mouse_pos):
                    if(currentScreen == "main"):
                        print("Write functionality here")
                        
                    elif(currentScreen == "table"):
                        table.goDown(5)

                    elif(currentScreen == "training"):
                        #Will start training of the word Down
                        pass

                elif buttons[4].collidepoint(mouse_pos):
                    if(currentScreen == "main"):
                        print("Write functionality here")
                        #123 her sætter man ind at currentscreen = training så navigerer pygame til den skærm
                        #Der skal også tilføjes elif til alle disse "listeners" med elif(currentscreen == "training")
                    
                    elif(currentScreen == "table"):
                        print("Write functionality here")
                        #123 Der skal også tilføjes elif til alle disse "listeners" med elif(currentscreen == "training")
                        #Den når der klikkes på training -> op eksempelvis skal vores subprocessTraiining unktionalitet køres.
                        #Det kan nok gøres noglelunde på samme måde som vores subprocessRun køres i mainloopet
                    elif(currentScreen == "training"):
                        #Will start training of the word Stop
                        pass 

                    
                elif buttons[5].collidepoint(mouse_pos):
                    if(currentScreen == "main"):
                        currentScreen == "settings"
                        
                    elif(currentScreen == "table"):
                        currentScreen = "main"

                    elif(currentScreen == "settings"):
                        currentScreen = "main"    

                    elif(currentScreen == "training"):
                        currentScreen = "settings" 
                    
            if(event.type == pygame.KEYDOWN):
                if(event.key == K_ESCAPE):
                    return False
    return True
    lLock.release()

def periodicUpdateThread():
    while bEnd == False:
        periodicUpdate()
        time.sleep(update_intervall)

    print("Update worker has ended!")

def end():
    global config
    global bEnd
    global tThread
    bEnd = True
    print("Ending the program, write the configuration to a file")
    with open('playvibe_config.ini', 'w') as config_file:
        config.write(config_file)

    tThread.terminate()
    GPIOController.destroy()


if __name__ == "__main__":
    print("STARTING UP")
    GPIOController.init()
    atexit.register(end)
    tThread = Thread(target=periodicUpdateThread)
    tThread.start()
    start()
    
Example #8
0
 def set_intensity(self, new_intensity):
     self.intensity = new_intensity
     GPIOController.set_pin(self.gpioPin, new_intensity)
 def set_intensity(self, new_intensity):
     self.intensity = new_intensity;
     GPIOController.set_pin(self.gpioPin, new_intensity)
Example #10
0
    if currentTime >= sequence_time:
        currentTime = 0

    lLock.release()

def periodicUpdateThread():
    print("Update worker has started!")
    while bEnd == False:
        periodicUpdate()
        time.sleep(update_intervall)

    print("Update worker has ended!")

def end():
    global config
    global bEnd
    global tThread
    bEnd = True
    print("Ending the program, write the configuration to a file")
    with open('playvibe_config.ini', 'w') as config_file:
        config.write(config_file)

    GPIOController.destroy()

if __name__ == "__main__":
    GPIOController.init()
    tThread = Thread(target=periodicUpdateThread)
    tThread.start()
    start()