如何在Python3中将按键发送到终端?

时间:2018-08-09 16:24:33

标签: python-3.x keyboard mplayer

我正在使用Python脚本将旧的旋转电话用作网络广播的输入设备。拨号器通过GPIO连接到Raspberry Pi3,并在我拨打“ 1”时启动mplayer播放电台。 当我启动脚本形式的终端(通过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 个答案:

没有答案