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

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Anonim
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.

×
×
  • 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.