Hallo zusammen,
ich habe eine kleines Programm zusammenkopiert und ergänzt um auf meinem 1,8"sainsmart-Display eine Ausgabe der CU-Temperatur zu erzeugen. Damit will ich eigentlich "pygame" ausprobieren.
Das Programm läuft und damit ist fast alles gut. Ich starte es von der Konsole aus.
Aber ich kann das Programm nicht abbrechen. Auf CTRL+C reagiert es nicht.
Mein Hardware-Aufbau sieht wie folgt aus: RaspberryPi B+ Monitor an HDMI und Display über SPI angeschlossen.
Ich habe noch einen zweiten Test durchgeführt. Nachdem ich den Pi neu gestartet habe habe ich die GUI mit "startx" gestartet und dort ein Terminal geöffnet. In diesem habe ich dann das Programm gestartet. Dabei ist der Monitor dunkel geworden und das Programm lief auf dem Display. CRTL+C zeigt weider keine Reaktion.
Hier der Programmcode:
#!/usr/bin/python
# -*- coding: iso8859-1 -*-
#
# TFT display
# 2013-04-22 V0.1 by Thomas Hoeser
# http://www.hoeser-medien.de
# based on Martin's Hobby Projects:
# http://harizanov.com/2013/02/using-my-1-8-tft-as-a-raspberry-pi-status-display/
#
# Pygame-Modul importieren.
import pygame
import sys
import os
import time
time_stamp_prev=0
# Set the framebuffer device to be the TFT
os.environ["SDL_FBDEV"] = "/dev/fb1"
# don't have X11 running when you start it
# could be "fbcon", "directfb", try "aalib" for extra fun
os.environ['SDL_VIDEODRIVER']="fbcon"
#------------------------------------------------------------------------------------------------------
def displayText(text, size, line, color, clearScreen):
"""Used to display text to the screen. displayText is only configured to display
two lines on the TFT. Only clear screen when writing the first line"""
# screen-Surface mit Schwarz (RGB = 0, 0, 0) füllen.
if clearScreen:
screen.fill((0, 0, 0))
font = pygame.font.Font(None, size)
#font = pygame.font.Font(roboto, size)
text = font.render(text, 0, color)
textRotated = pygame.transform.rotate(text, 0)
textpos = textRotated.get_rect()
textpos.centerx = 80
if line == 1:
textpos.centery = 90
screen.blit(textRotated,textpos)
elif line == 2:
textpos.centery = 40
screen.blit(textRotated,textpos)
#------------------------------------------------------------------------------------------------------
def main():
global screen
# Initialisieren aller Pygame-Module und
# Fenster erstellen (wir bekommen eine Surface, die den Bildschirm repräsentiert).
pygame.init()
pygame.mouse.set_visible(0)
size = width, height = 160, 128
screen = pygame.display.set_mode(size)
sleep_time = 1
try:
while True:
res = os.popen('vcgencmd measure_temp').readline()
temperatur=res.replace("temp=","").replace("'C\n","")+" °C"
displayText('Chip-Temp.', 20, 1, (200,200,1), True )
displayText( temperatur , 30, 2, (255,0,0), False )
pygame.display.flip() #Update the full display Surface to the screen
time.sleep(sleep_time)
except KeyboardInterrupt:
print ("Ende")
sys.exit()
if __name__ == '__main__':
main()
Alles anzeigen
Wo kommt der Fehler her. Ich habe keine Idee mehr.
Gruß Andreas