Как отправить нажатие клавиши на терминал в Python3?

Я работаю над сценарием Python, чтобы использовать мой старый телефон в качестве устройства ввода для веб-радио. Номеронабиратель подключается через GPIO к Raspberry Pi3 и запускает mplayer для воспроизведения станции, когда я набираю "1". Когда я запускаю терминал формы скрипта (по ssh), он работает нормально: я получаю всевозможную информацию о канале, воспроизводимых дорожках и т. Д. Кроме того, когда я нажимаю "9" или "0" на клавиатуре, громкость увеличивается и вниз.

Следующее, что я хочу сделать, это управлять громкостью, набирая "2" (увеличение громкости) или "3" (уменьшение громкости) из скрипта (!).

Я пробовал несколько библиотек, таких как xdotools и т. Д., Но все они ожидают отображения, я думаю. Пока что ничего не работает.

Это вообще возможно? У кого-нибудь есть указатели или решения? Я был бы очень благодарен, эта вещь стоила мне весь день, и я не продвинулся немного.

Это сценарий до сих пор:

#!/usr/bin/env python3

import RPi.GPIO as GPIO  
from time import sleep
import subprocess

#GPIO.setwarnings(False)
GPIO.setmode(GPIO.BCM)  
GPIO.setup(18, GPIO.IN, pull_up_down=GPIO.PUD_UP)
GPIO.setup(15, GPIO.IN, pull_up_down=GPIO.PUD_UP)

c=0
last = 1

def count(pin):
    global c 
    c = c + 1

def play_radio(dial):
    if dial == 1:
        subprocess.call("mplayer -nocache -afm ffmpeg http://playerservices.streamtheworld.com/api/livestream-redirect/SLAM_MP3.mp3",shell=True)
    if dial == 2:
        #HERE'S WHERE THE VOLUME MUST GO UP BY KEYPRESS '0'
    if dial == 3:
        #HERE'S WHERE THE VOLUME MUST GO DOWN BY KEYPRESS '9'

GPIO.add_event_detect(15, GPIO.BOTH)

while True:
    try:
        if GPIO.event_detected(15):
            current = GPIO.input(15)
            if(last != current):
                if(current == 0):
                    GPIO.add_event_detect(18, GPIO.BOTH, callback=count, bouncetime=10)
                else:
                    GPIO.remove_event_detect(18)
                    number = int((c-1)/2)
                    print(number)
                    play_radio(number)
                    c = 0                 


                last = GPIO.input(15)
    except KeyboardInterrupt:
        break
    sleep(0.3)

0 ответов

Другие вопросы по тегам