質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.44%
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Q&A

解決済

1回答

955閲覧

raspberry pi でinput文を含むpythonプログラムをforeground で自動起動したい。

tsururin2003

総合スコア1

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

0グッド

0クリップ

投稿2023/02/19 04:50

編集2023/02/19 11:11

実現したいこと

raspberry pi にバーコードリーダを付けて、raspberry pi を起動したときに
入力プログラム (python)を自動起動してバーコードの読み取り待機状態にしたい。
読み取ったデータはファイルに書き込んだ後、サーバに格納します。
なお、raspberry piのGPIOの値を読み取って2種類の書き込みを行います。

前提

IOT的に使用したいので、キーボードやディスプレイはありません。
USB接続のバーコードリーダーのみ接続されています。

コンソールからコマンドでpythonプログラムを起動したときは、思った通りの動作をしています。しかし、cron で自動起動したときは、ディスプレイにはinput 待ちのプロンプトは出ません。ps コマンドで確認しても起動が確認できません。
バーコードで読み取らせても、単に数字の羅列をコマンドとして認識してエラーになります。

該当のソースコード

python

1#!/usr/bin/python 2import RPi.GPIO as GPIO 3import datetime 4import time 5import platform 6from smb.SMBConnection import SMBConnection 7 8t_delta = datetime.timedelta(hours=9) 9JST = datetime.timezone(t_delta, 'JST') 10now = datetime.datetime.now(JST) 11gpio_leds = 5 12gpio_sws = 16 13gpio_lede = 6 14gpio_swe = 20 15GPIO.setmode(GPIO.BCM) 16GPIO.setwarnings(False) 17GPIO.setup(gpio_leds, GPIO.OUT) 18GPIO.setup(gpio_lede, GPIO.OUT) 19GPIO.setup(gpio_sws, GPIO.IN, pull_up_down=GPIO.PUD_DOWN) 20GPIO.setup(gpio_swe, GPIO.IN, pull_up_down=GPIO.PUD_DOWN) 21while True: 22 now = datetime.datetime.now(JST) 23 d2 = now.strftime('%Y%m%d') 24 d = now.strftime('%Y%m%d%H%M') 25 var = input("barcode:") 26 f = open(d2+'barcode.txt','a', encoding='UTF-8') 27 sw_status = GPIO.input(gpio_leds) 28 if sw_status == 1: 29 #print('led start') 30 f.write(d + ",MZstart,D2," + format(var) + "\n") 31 sw_status = GPIO.input(gpio_lede) 32 if sw_status == 1: 33 #print('led start') 34 f.write(d + ",MZend,D2," + format(var) + "\n") 35 f.close() 36 # connection open 37 conn = SMBConnection( 38 'pi', 39 'hogehoge', 40 platform.uname().node, 41 'DESKTOP-XXXXX', 42 domain='WORKGROUP', 43 use_ntlm_v2=True) 44 conn.connect('192.168.24.51', 139) 45 with open('/home/pi/' + d2 + 'barcode.txt', 'rb') as file: 46 conn.storeFile('iottest', d2+'hoge.txt', file) 47 conn.close() 48try: 49 while(True): 50 time.sleep(1) 51 #print("sleep") 52except KeyboardInterrupt: 53 print("break") 54 GPIO.cleanup()

起動したとき、自動実行したinput文を含んだpythonプログラムを
foregroundで起動できればいいんだと思いますが、わかる方ご教授ください。
それとも、そもそもinput文を使用したpythonプログラムは自動機能できないのでしょうか。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

y_waiwai

2023/02/19 06:43

このままではコードが読めないので、質問を編集し、</>(コードの挿入)ボタンを押し、出てくる’’’の枠の中にコードを貼り付けてください
guest

回答1

0

ベストアンサー

投稿2023/02/20 01:27

can110

総合スコア38313

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

tsururin2003

2023/02/20 10:35

CUI環境での情報を参照し、参照ページに記載されている通り実施したところ、うまく動作しました。 自動ログイン後コンソール画面にinput文のプロンプトが表示され、バーコードリーダで読み取ることができました。 有益な情報提供ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.44%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問