前提・実現したいこと
ラズパイでQRコードリーダを購入しました。
https://www.amazon.co.jp/gp/product/B078MG25SH/ref=ppx_yo_dt_b_asin_image_o01_s00?ie=UTF8&psc=1
GUIで(X window)実行したらうまくいきました。
が、SSHからだとエラーになりました。
元の目的はラズパイ起動時に自動起動(デーモン化)をしたい、です。
systemdで他のサービスも自動起動の設定をしているので同じようにしようとしたらエラーになりました。試したところ、SSHでも同様のエラーでした。
お知恵をお借りしたくお願いいたしますm(__)m
発生している問題・エラーメッセージ
SSHで叩いたところが以下です。
pi@raspberrypi:~ $ sudo python ~/Desktop/raspberry/qrReader_v1.py Traceback (most recent call last): File "/home/pi/Desktop/raspberry/qrReader_v1.py", line 1, in <module> from pynput.keyboard import Key, Listener File "/usr/local/lib/python3.7/dist-packages/pynput/__init__.py", line 40, in <module> from . import keyboard File "/usr/local/lib/python3.7/dist-packages/pynput/keyboard/__init__.py", line 31, in <module> backend = backend(__name__) File "/usr/local/lib/python3.7/dist-packages/pynput/_util/__init__.py", line 82, in backend if resolutions else '') ImportError: this platform is not supported: ('failed to acquire X connection: Bad display name ""', DisplayNameError('')) Try one of the following resolutions: * Please make sure that you have an X server running, and that the DISPLAY environment variable is set correctly
該当のソースコード
python の内容です。X windowで実行すると無事に動いています。
from pynput.keyboard import Key, Listener import requests import threading import slackweb qr_data = '' def on_press(key): print('print 2') # 追記<<<<<<<<<<<<これは出力されませんでした。 global qr_data, regi_key # 1文字ずつqr_dataに if str(key) != 'Key.enter': try: qr_data += key.char[0:1] return except AttributeError: return # 最後はenter入力になる else: print(qr_data) qr_data = '' if __name__ == '__main__': print('print 1') # 追記<<<<<<<<<<<<これは出力されます。 with Listener( on_press=on_press, ) as listener: listener.join()
補足情報(FW/ツールのバージョンなど)
Raspberry Pi 3 Model B+
Waveshare 7インチ HDMI タッチスクリーン
もとはwebフロントエンド、趣味でpythonやってますが、linux(サーバ系)は弱いです。
なにとぞよろしくお願いいたします。
回答2件
あなたの回答
tips
プレビュー