0

我已经用 Volumio 播放器设置了一个 Raspberry Pi。现在我想用旋转编码器控制音量。并且还想暂停或播放当前歌曲。

#!/usr/bin/env python
#
# Raspberry Pi Rotary Test Encoder Class
#
# Author : Bob Rathbone
# Site   : http://www.bobrathbone.com
#
# This class uses a standard rotary encoder with push switch
#

import sys
import time
from rotary_class import RotaryEncoder
import subprocess

# Define GPIO inputs
PIN_A = 21  
PIN_B = 16  
BUTTON = 4

# This is the event callback routine to handle events
def switch_event(event):
    if event == RotaryEncoder.CLOCKWISE:
        print "Volume up"
        subprocess.call(['mpc', 'volume', '+1'])

    elif event == RotaryEncoder.ANTICLOCKWISE:
        print "Volume down"
        subprocess.call(['mpc', 'volume', '-1' ])

    elif event == RotaryEncoder.BUTTONDOWN:
        print "Pause/Play"      

#   elif event == RotaryEncoder.BUTTONUP:
#       print "Button up"
    return

# Define the switch
rswitch = RotaryEncoder(PIN_A,PIN_B,BUTTON,switch_event)

while True:
    time.sleep(0.5)

这是我已经拥有的编码器。但是当我启动它并尝试将音量设置为+1时,我得到了一个错误。

这个:

Traceback (most recent call last):
  File "/home/pi/radio/rotary_class.py", line 87, in switch_event
    self.callback(event)
  File "./test_rotary_class.py", line 35, in switch_event
    subprocess.call(['mpc', 'volume', '-1' ])
  File "/usr/lib/python2.7/subprocess.py", line 493, in call
    return Popen(*popenargs, **kwargs).wait()
  File "/usr/lib/python2.7/subprocess.py", line 679, in __init__
    errread, errwrite)
  File "/usr/lib/python2.7/subprocess.py", line 1259, in _execute_child
    raise child_exception
OSError: [Errno 2] No such file or directory

如果有人可以帮助我并告诉我如何暂停/播放,那就太好了:)

4

2 回答 2

1

我认为您的代码没有问题,但错误表明mpc可执行文件不在您的路径中(No such file or directory)。

尝试用mpc绝对路径替换或使其可从您的 python 脚本中访问。

于 2015-05-05T14:13:26.657 回答
0

如果有人可以帮助我并告诉我如何暂停/播放,那就太好了:)

mpc toggle

就是你要找的。

于 2018-01-15T00:20:16.080 回答