Raspberry Pi在启动时不会运行脚本

时间:2015-06-09 00:08:20

标签: python linux raspberry-pi

该程序将使用条形码扫描仪验证优惠券是否合适的天气,并根据优惠券是否有效而闪烁红灯或绿灯。

我想要这个工作的方式是打开Pi,然后立即能够扫描优惠券。所有Pi必须做的就是在我打开Pi并继续使用之后开始执行该程序。我正在使用crontab开始以下程序:

#Adam Giancola 
#June 5th 2015

#This program will scan a bar code and if it matches a good bar code will         flash a light
#green or red depending on the validity of the coupon.

import sys, select, os
import time
import RPi.GPIO as GPIO
GPIO.setwarnings(False)
GPIO.setmode(GPIO.BCM)

greenLED = 16
redLED = 12

GPIO.setup(greenLED, GPIO.OUT)
GPIO.setup(redLED, GPIO.OUT)
GPIO.output(greenLED, GPIO.LOW)
GPIO.output(redLED, GPIO.LOW)
goodBarCode = "0827112134023"

try:
    #Flash LED to test if script is running at RPi boot

    GPIO.output(greenLED, GPIO.HIGH)
    time.sleep(0.5)
    GPIO.output(greenLED, GPIO.LOW)
    time.sleep(0.5)

    while(1):
        userBarCode = input("")

        if userBarCode == goodBarCode:
            GPIO.output(greenLED, GPIO.HIGH)    
            time.sleep(0.5)
            GPIO.output(greenLED, GPIO.LOW)
            time.sleep(0.5)

        else:
            GPIO.output(redLED, GPIO.HIGH)
            time.sleep(0.5)
            GPIO.output(redLED, GPIO.LOW)
            time.sleep(0.5)

except:
    GPIO.cleanup()

如果我使用" sudo python3 ... blah blah blah" ,但我已经使用crontab在启动时启动程序,我没有得到LED的反馈。我知道我的crontab配置正在运行,因为我已经运行了其他程序并且它们正在工作。为什么LED不响应?

1 个答案:

答案 0 :(得分:0)

问题是条形码扫描仪假装是键盘。当您从控制台运行它时,无论条形码扫描器输出什么,都将转到您的程序,因为它是当前在控制台的stdin上读取的程序。

当你在后台运行它时,通过rc.local,cron,init脚本或其他任何方法,你的程序将不在控制台上,它将在后台,所以它不会"看到& #34;条码扫描器键入键盘的内容。

对您而言,最好的短期解决方案可能是在控制台上启用自动登录(GUI必须关闭)并在登录后立即调用您的程序。 Full explanation here,简短版本:

编辑/ etc / inittab并将相应的行更改为:

 1:2345:respawn:/bin/login -f pi tty1 </dev/tty1 >/dev/tty1 2>&1

编辑/home/pi/.bash_profile并添加:

 sudo python3 bla bla bla