Skocz do zawartości

Raspberry Pi 3 uruchomienie skryptu z GUI przy starcie


Gieneq

Pomocna odpowiedź

Prześledziłem 5 metod uruchamiania skryptu pythona przy starcie i nie pomogło. Metody te działają w skryptach z CLI, ale potrzebuję uruchomić skrypt z pygame i GUI - nieskończona pętla, renderowanie z jakimś FPS itd.

import pygame
from pygame.locals import *
import time
import sys
import os

widthTFT = 480
heightTFT = 320

pygame.init()
screenSize = [widthTFT, heightTFT]
screen = pygame.display.set_mode(screenSize, pygame.FULLSCREEN)
pygame.mouse.set_visible(True)
print('width, height ({0}, {1})'.format(widthTFT, heightTFT))
print('press ESC to exit.')

clock = pygame.time.Clock()

# guis
BUTTON_OFFSET = 5
BUTTON_WIDTH = 40

MENU_RECT = pygame.Rect(0, 0, widthTFT, BUTTON_WIDTH + 2 * BUTTON_OFFSET)
MENU_COLOR = (222, 222, 222)

while True:
    # catch inputs
    for event in pygame.event.get():

        # force shutdown hotkey
        if event.type == pygame.KEYDOWN:
            if event.key == pygame.K_ESCAPE:
                sys.exit()

    # update

    # render
    screen.fill([0, 0, 0])

    #menu
    pygame.draw.rect(screen, MENU_COLOR, MENU_RECT, 0)

    pygame.display.flip()
    clock.tick(30)

pygame.quit()

Zrobiłem na około, napisałem skrypt, który po wciśnięciu przycisku otwiera ww. skrypt z GUI - działa tylko jak otwieram go z ręki w terminalu. Po dodaniu do /etc/rc.local i reboocie, po wciśnięciu przycisku za wyjątkiem ssh.

import RPi.GPIO as GPIO
import os
import time
GPIO.setmode(GPIO.BCM)
# ROZKLAD GPIO na belce 6 19 20 13 5 21

print "Entrance launched!"

GPIO_LAUNCH_BUTTON = 6
GPIO.setup(GPIO_LAUNCH_BUTTON, GPIO.IN, pull_up_down=GPIO.PUD_UP)

# zdarzenia
def keyEvent(channel):
    print "Button clicked on channel: {0}".format(channel)
    os.system('python /home/pi/Desktop/areaProcessor.py &')

GPIO.add_event_detect(GPIO_LAUNCH_BUTTON, GPIO.RISING, callback=keyEvent, bouncetime=300)

while(True):
    time.sleep(0.2)

Chciałem przekierować ewentualne błędy w lini z /etc/rc.local ale tworzy plik logu i nic w nim nie ma.

#!/bin/sh -e
#
# rc.local

# Print the IP address
_IP=$(hostname -I) || true
if [ "$_IP" ]; then
  printf "My IP address is %s\n" "$_IP"
fi

sudo python /home/pi/Desktop/entranceAreaProcessor.py & > /home/pi/Desktop/log.$

exit 0

Uprawnienia plików są z naddatkiem, także tego z logiem, oraz proces od skryptu obsługi przycisku działa po reboocie:

pi@raspberrypi:~/Desktop $ ls -la | grep Processor.py
-rwxrwxrwx  1 pi   pi   2410 Sep  4 07:07 areaProcessor.py
-rwxrwxrwx  1 pi   pi    521 Sep  3 21:10 entranceAreaProcessor.py

pi@raspberrypi:~ $ ps -ef | grep python
root       421     1  0 07:37 ?        00:00:00 sudo python /home/pi/Desktop/entranceAreaProcessor.py
root       465   421  0 07:37 ?        00:00:00 python /home/pi/Desktop/entranceAreaProcessor.py
pi         958   939 

 

Link do komentarza
Share on other sites

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.