実現したいこと
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プログラムは自動機能できないのでしょうか。
このままではコードが読めないので、質問を編集し、</>(コードの挿入)ボタンを押し、出てくる’’’の枠の中にコードを貼り付けてください

回答1件
あなたの回答
tips
プレビュー