Помогите разобраться с Python скриптом

Автор studio2, 22 января 2016, 22:52:52

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

studio2

Друзья, я новичок и только начинаю разбираться. Прошу сделать мне скидку))
На rasberry pi установлен raspibian
Есть скрипт:

import RPi.GPIO as GPIO
import time
import os

GPIO.setmode(GPIO.BCM)

GPIO.setup(17, GPIO.IN, pull_up_down=GPIO.PUD_UP)

while True:
    input_state = GPIO.input(17)
    if input_state == False:
        os.system("omxplayer -o hdmi /video/hostel.mp4")
    input_state = GPIO.input(18)
    if input_state == False:
        os.system("omxplayer -o hdmi /video/timer.mp4")

Задача такая - при замыкании контакта 17 воспроизводиться файл hostel.mp4
Во время воспроизведения, при замыкании контакта 18 файл hostel перестает воспроизводиться и начинает timer.mp4

А сейчас воспроизводит, что первое замкнуто и не прерывается для воспроизведения другого.
Помогите пожалуйста, что нужно правильно сделать?
Спасибо!   

Используйте теги для оформления текста, ogost

alsoijw

#1
[b]studio2[/b],
1) вставляй в теге [​code=python][​/code](набери руками или воспользуйся кнопкой на форуме но не копируй у меня)
2) Для реализации задуманного тебе нужно как-то управлять воспроизведением(останавливать). Имхо самый простой это открытие видео в самой программе.


Cообщение объединено 22 января 2016, 23:45:25

как то так
Мало видеть нам начало - надо видеть и конец. Если видишь ты создание - значит где-то есть ТВОРЕЦ
Многие жалуются: геометрия в жизни не пригодилась. Ямб от хорея им приходится отличать ежедневно?

studio2

Цитата: alsoijw от 22 января 2016, 23:30:39
[b]studio2[/b],
Для реализации задуманного тебе нужно как-то управлять воспроизведением(останавливать). Имхо самый простой это открытие видео в самой программе.


Cообщение объединено 22 января 2016, 23:45:25

как то так

Да, я уже понял, что нужно управлять воспроизведением.
у omxplayer есть кнопка на клавиатуре "q" остановить воспроизведение.
Как в python смоделировать нажатие клавиши с клавиатуры?
Опыта вообще нет и читать большие тексты программ для меня сейчас маловероятно что я там что то пойму.
Если можно код с коментами.
Спасибо.

alsoijw

studio2, скорее всего для этого тебе потребуется stdin.
Мало видеть нам начало - надо видеть и конец. Если видишь ты создание - значит где-то есть ТВОРЕЦ
Многие жалуются: геометрия в жизни не пригодилась. Ямб от хорея им приходится отличать ежедневно?

vic5710

#4
так по логике вашего алгоритма пока НЕ закончиться воспроизведение, опроса состояния кнопки НЕ будет
имхо вам надо subprocess, чтобы запустить воспроизведение и опрос кнопок независимо


Cообщение объединено 23 января 2016, 20:55:42

http://www.py-my.ru/post/4bfb3c691d41c846bc000061#!

studio2

Цитата: vic5710 от 23 января 2016, 20:40:13
так по логике вашего алгоритма пока НЕ закончиться воспроизведение, опроса состояния кнопки НЕ будет
имхо вам надо subprocess, чтобы запустить воспроизведение и опрос кнопок независимо


Cообщение объединено 23 января 2016, 20:55:42

http://www.py-my.ru/post/4bfb3c691d41c846bc000061#!

Да, я уже думал про subprocess. Буду двигаться в этом направлении.

Спасибо!

studio2

Прочитал много, но с учетом отсутствия опыта многого не понял.
Всетаки скажите можно ли реализовать вышеописанную задачу на Python?
Или все же нужен C++?

alsoijw

Мало видеть нам начало - надо видеть и конец. Если видишь ты создание - значит где-то есть ТВОРЕЦ
Многие жалуются: геометрия в жизни не пригодилась. Ямб от хорея им приходится отличать ежедневно?

studio2

Цитата: alsoijw от 26 января 2016, 23:20:44
studio2, можно. Я приводил пример.

Спасибо за ответ!
Но если Вас не затруднит более развернуто можно?
Еще раз поймите, только начинаю разбираться с программированием Python

vic5710

попробуй с своём коде добавить параметр & (не знаю будет ли работать)
os.system("killall omxplayer)
os.system("omxplayer blabla &")

alsoijw

vic5710, во время работы скрипта будет нельзя запускать omxplayer. ИМХО костыль.
studio2, суть крайне проста. Создаётся окно с помощью к примеру Gtk. Потом туда добавляется виджет который будет воспроизводить видео. Как только нужно будет остановить видео, то нужно будет вызвать только один метод останавливающий воспроизведение. В той ссылке есть код для 2 питона. Немного поработав над кодом ты сможешь получить то что нужно.
ЗЫ писать можно на практически любом языке. Другое дело в том на сколько быстро ты будешь писать на этом языке.
Мало видеть нам начало - надо видеть и конец. Если видишь ты создание - значит где-то есть ТВОРЕЦ
Многие жалуются: геометрия в жизни не пригодилась. Ямб от хорея им приходится отличать ежедневно?

vic5710

#11
alsoijw, у меня запускается

/usr/bin/env python
import os
while True:
    input=raw_input()
    if input == 'q':
        os.system("killall totem")
        break
    elif input=='1':
        os.system("killall totem; totem --play 1.mp4 &")
    elif input == '2':
        os.system("killall totem; totem --play 2.mp4 &")


Cообщение объединено 27 января 2016, 16:15:16

пробовал с клавы но разницы не вижу

alsoijw

vic5710, что запускается? Тотем? Я имел в виду то что при нажатии на кнопку будет убит любой процесс тотема, хотя я не уверен что можно будет запустить в нескольких разных процессах.
Мало видеть нам начало - надо видеть и конец. Если видишь ты создание - значит где-то есть ТВОРЕЦ
Многие жалуются: геометрия в жизни не пригодилась. Ямб от хорея им приходится отличать ежедневно?

vic5710

#13
Цитата: alsoijw от 27 января 2016, 16:41:09
vic5710, что запускается? Тотем? Я имел в виду то что при нажатии на кнопку будет убит любой процесс тотема, хотя я не уверен что можно будет запустить в нескольких разных процессах.
будет убит и запущен новый тотем с другим файлом mp4. стандартное управление процессами
man killall

Cообщение объединено 27 января 2016, 17:52:22

если killall не будет то будет несколько окон с соотв. файлами. я понял вашу идею, но имхо ТС ето ниасилит. у omx емнип есть параметр начала воспроизведения в сек., так что можно параллельно запустить счётчик времени , если нужна пауза

alsoijw

Провёл эксперимент. Если плеер(totem) уже запущен, то при повторной команде он откроет второй файл. Для других плееров поведение может отличатся.
Мало видеть нам начало - надо видеть и конец. Если видишь ты создание - значит где-то есть ТВОРЕЦ
Многие жалуются: геометрия в жизни не пригодилась. Ямб от хорея им приходится отличать ежедневно?