Разместите свой проект бесплатно и начните получать предложения от фрилансеров-исполнителей уже спустя минуты после публикации!

Посмотреть код в чем проблема, Python

истекло время актуальности


Добрый день.

Есть код вот такой https://github.com/sergge1/todo-sensorbtnled/blob/master/sensorbtnled.py 

Код включает или отключает светодиодную ленту в зависимости от срабатывания датчиков движения.

Добавил проигрывание аудиофайла через omxplayer (смотрите строка 74), но вот почему-то при срабатывании датчика - сначала запускается аудиофайл, и только когда он закончился воспроизводится - включается лента.

Посмотрите подскажите, что сделать чтобы аудиофайл запускался параллельно с лентой, и всего один раз нужно за время работы скрипта (только при первом срабатывании)


image



  1. 1 день700 ₴
    Василь
    Василь Заболотний
    364   проверен    12  3   1

    Здравствуйте!

    Готов помочь, обращайтесь. Сделаю быстро и качественно

    Украина Винница | 7 ноября в 20:59 |
  2. 1 день100 ₴
    Макс
    Макс Гончаренко
    834     17  0

    Приветствую!
    Есть идея, пишите в телеграм: t.me/nacknime

    -0-0-0-0-0-0-0-0

    Украина Корюковка | 7 ноября в 21:01 |
  3.  фрилансер больше не работает на сервисе
  1. ставка отозвана
  • Александр Ожгибесов
    7 ноября в 21:00 |

    Отправьте 74 строку в новый тред. А для проигрывания лишь единожды используйте булеву переменную, которая будет сообщать впервые запущен скрипт или нет

  • Антон Южаков
    7 ноября в 21:08 |

    Для запуска проигрывания используйте subprocess.Popen вместо subprocess.call.

    call ожидает завершение вызова, а Popen нет.

  • Сергей Паливода
    10 ноября в 20:21 |

    В My_thread объявить две переменные. played_once = False и play_music = False.

    В 74 строке вместо `call(['omxplayer', ...` поставить play_music = True. 

    После `colorWipe(strip2, colors, 0)` 

    написать условие 

    if (not played_once) and (play_music):

       call(['omxplayer', ...

        play_music = False

        played_once = True


    Таким образом, музыка воспроизведётся один раз. После включения ленты (обновлени состояния ленты делаеться через colorWipe() ).

    Но, выполнение скрипта приостановиться на время воспроизведения аудио файла. Выше написали варианты решений. Например, запустить в subprocess.