Added debug gui

This commit is contained in:
deckensteuerung 2018-08-22 19:23:36 +02:00
parent 629be93221
commit 51e8263dbd
2 changed files with 38 additions and 1 deletions

View File

@ -7,7 +7,10 @@ ScreenY = 40
Serial = "/dev/ttyACM0" Serial = "/dev/ttyACM0"
# kills app after some seconds if it sends no data # kills app after some seconds if it sends no data
NoDataTimeout = 10 NoDataTimeout = 20
UseGui = True
GuiScaleFactor = 10
# first app is always running in IDLE # first app is always running in IDLE
Apps = [ Apps = [

34
main.py
View File

@ -6,6 +6,35 @@ import threading
import json import json
from bottle import route, run from bottle import route, run
import time import time
if config.UseGui:
import pygame
class Gui(threading.Thread):
def __init__(self):
super().__init__()
self.data = b"\x00"*config.ScreenX*config.ScreenY*3
def setData(self, data):
self.data = data
def run(self):
sf = config.GuiScaleFactor
screen = pygame.display.set_mode((sf*config.ScreenX, sf*config.ScreenY))
pygame.display.set_caption("Pixelserver - GUI Vis")
while True:
for event in pygame.event.get():
if event.type == pygame.QUIT:
sys.exit(0)
screen.fill((0, 255, 0))
for x in range(config.ScreenX):
for y in range(config.ScreenY):
i = x+y*config.ScreenX
r = (self.data[i*3+0])
g = (self.data[i*3+1])
b = (self.data[i*3+2])
pygame.draw.rect(screen, (r, g, b), pygame.Rect(sf*x, sf*y, sf, sf))
pygame.display.flip()
class SerialWriter(threading.Thread): class SerialWriter(threading.Thread):
def __init__(self): def __init__(self):
@ -62,6 +91,9 @@ class AppRunner(threading.Thread):
self.last_update = time.time() self.last_update = time.time()
self.watchdog = WatchDog(lambda: self.appTimedOut(), lambda: self.terminateApp()) self.watchdog = WatchDog(lambda: self.appTimedOut(), lambda: self.terminateApp())
self.watchdog.start() self.watchdog.start()
if config.UseGui:
self.gui = Gui()
self.gui.start()
def requestApp(self, app, param=""): def requestApp(self, app, param=""):
with self.lock: with self.lock:
@ -101,6 +133,8 @@ class AppRunner(threading.Thread):
data = os.read(oshandle, config.ScreenX*config.ScreenY*3) data = os.read(oshandle, config.ScreenX*config.ScreenY*3)
self.last_update = time.time() self.last_update = time.time()
self.serial.setData(data) self.serial.setData(data)
if config.UseGui:
self.gui.setData(data)
except: except:
pass pass