Видео не останавливается при нажатии кнопки, а светодиод не горит во время воспроизведения видео - PullRequest
0 голосов
/ 27 июня 2019

Итак, моя цель такова:

Нажмите кнопку, светодиод включится и воспроизведение видео.

После полной продолжительности видео, светодиод и видео должны выключитьсяавтоматически.Кроме того, во время воспроизведения видео и светодиод, и видео можно отключить, нажав кнопку вручную.

В тот момент, когда я устанавливаю задержку в 10 с, светодиод включается для этих 10секунд.В противном случае светодиод вообще не включится.Также иногда выдается сообщение «omxplayer.bin: процесс не найден».Иногда, когда я снимаю сон, видео не воспроизводится.

GPIO.setmode(GPIO.BCM)

button1=17 #pin for button
LED1=18 #pin for LED

GPIO.setup(button1, GPIO.IN, pull_up_down=GPIO.PUD_UP)
GPIO.setup(LED1, GPIO.OUT)

BS1=False #button state
last_state1 = True
input_state1 = True
player = False #video player state

while(1):


        #Read states of input
        input_state1 = GPIO.input(button1)

        #If GPIO(17) is shorted to Ground/ When the button is pressed.
        if input_state1 != last_state1:

            if GPIO.input(button1)==0:
                print ("LED ON")
                if BS1 ==False:
                    GPIO.output(LED1,True) #turn on LED
                    BS1=True

                elif (player and not input_state1):
                    print(player)
                    print(input_state1)

                    os.system('killall omxplayer.bin')
                    omxc = Popen(['omxplayer', '-b', movie1])
                    print ("Killall omxplayer")
                    player = True  

                elif not input_state1:
                    omxc = Popen(['omxplayer', '-b', movie1])
                    print ("Video Plays")
                    player = True
                    sleep(10)  


            else:
                    os.system('killall omxplayer.bin')
                    player = False
                    print ("Video Stops")

                    GPIO.output(LED1,False)
                    BS1=False
                    print ("LED OFF")
                    sleep(.5)
        #Set last_input states
        last_state1 = input_state1

GPIO.cleanup()
...