ボタン押下(GPIOピンを利用)後に左または右のキーストロークを送信する方法を理解しようとすると、this questionがつまずきました。RaspbianのキーストロークをPythonでシミュレート
xautomationをインストールした後、私のスクリプトにコードを適応させ、Popenのドキュメントを読んでみようと思ったのですが、任意のアイデア
Traceback (most recent call last):
File "/home/zdistaging/Documents/xte test.py", line 17, in <module>
keypress(shift_a_sequence)
File "/home/zdistaging/Documents/xte test.py", line 15, in keypress
p.communicate(input=sequence)
File "/usr/lib/python3.4/subprocess.py", line 941, in communicate
self.stdin.write(input)
TypeError: 'str' does not support the buffer interface
私はRaspbianジェシーに、パイ3モデルB上のpython3を実行しているピクセルで(raspberrypi.orgからダウンロード)
:私は次のエラーを取得しておく)そのままのコードを持つファイルなぜそれが間違っているのですか?
私がしようとしているのは、ユーザーがFEHスライドショーで左右にスクロールできるようにすることだけです...このアプローチでは、です。私は完全に私のためにこれを解決する誰かを探しているわけではない - 私はコーディングに関連した挑戦が好きです - 私はちょうどパイソンの超新しいです。正しい方向に私を振り向かせることは非常に役立つでしょう。
何か助力が大変ありがとうございます。
編集:コードを含めないと申し訳ありません!
from subprocess import Popen, PIPE
control_f4_sequence = '''keydown Control_L
key F4
keyup Control_L
'''
shift_a_sequence = '''keydown Shift_L
key A
keyup Shift_L
'''
def keypress(sequence):
p = Popen(['xte'], stdin=PIPE)
p.communicate(input=sequence)
keypress(shift_a_sequence)
keypress(control_f4_sequence)
編集編集:
ここでは実際に、左右両方のボタンを押すのためのスペースを出力します...私の更新されたコードです。
import time
import RPi.GPIO as GPIO
from subprocess import Popen, PIPE
GPIO.setmode(GPIO.BCM)
GPIO.setwarnings(False)
leftArrow = '''key \x1B[D''' # I've tried '''key Left'''
rightArrow = '''key \x1B[C''' # and '''key Right''' with the same results
offButton = 26 # Black wire
onButton = 19 # White wire
leftButton = 13 # Red wire
rightButton = 6 # Green wire
def keypress(sequence):
if isinstance(sequence, str):
sequence = sequence.encode('ascii')
p = Popen(['xte'], stdin=PIPE)
p.communicate(input=sequence)
GPIO.setup(offButton, GPIO.IN, GPIO.PUD_UP)
GPIO.setup(onButton, GPIO.IN, GPIO.PUD_UP)
GPIO.setup(leftButton, GPIO.IN, GPIO.PUD_UP)
GPIO.setup(rightButton, GPIO.IN, GPIO.PUD_UP)
while True:
offButton_state = GPIO.input(offButton)
onButton_state = GPIO.input(onButton)
leftButton_state = GPIO.input(leftButton)
rightButton_state = GPIO.input(rightButton)
if offButton_state == GPIO.LOW:
print("Off button pressed")
if onButton_state == GPIO.LOW:
print("On button pressed")
if leftButton_state == GPIO.LOW:
keypress(leftArrow)
print("Left button pressed")
if rightButton_state == GPIO.LOW:
keypress(rightArrow)
print("Right button pressed")
time.sleep(1)
私はsubprocess and Popen.communicate()にまで読んだが、問題はそれとか、何xte is expecting as an argumentとは何かを持っていた場合、本当に言うことができませんでした。思考?
質問に関連コードを追加してください。 –