strul med python/pygame
Jag har skapat två trådar i mitt program där den ena samlar värden från en PIC och den andra visar en analog varvräknare i realtid. Varvräknaren kör jag med hjälp av pygame och det är den som strular. Koden ser ut såhär:
class LivePlottThread(threading.Thread):
def run(self):
ScreenWidth = 300
ScreenHeight = 300
pygame.init()
screen = pygame.display.set_mode((ScreenWidth,ScreenHeight))
pygame.display.set_caption('Robbans Dyno')
tavla = pygame.image.load('tavla.png').convert()
visare = pygame.image.load('visare.gif').convert()
i = 0
while LoggWin.avbryt==0 or LoggWin.plotlengd > i:
if LoggWin.plotlengd > i:
visare2 = pygame.transform.rotate(visare, 287-LoggWin.Signal[1][i]/2)
height=visare2.get_height()
width=visare2.get_width()
center = ((ScreenWidth-width)/2,(ScreenHeight-height)/2)
pygame.display.flip()
screen.blit(tavla, (0, 0)) #draw the background
screen.blit(visare2, center)
i += 1
pygame.quit()
def OnQuit(self, event):
self.Destroy()
De sista tre raderna är jag inte ens säker på att man behöver, jag har testat att köra utan dem utan att upptäckt nån skillnad.
Det funkar kanonbra första gången jag kör men om jag försöker köra en datainsamling med varvräknaren igång utan att ha avslutat och startat om programmet får jag följande varning:
Exception in thread Thread-5:
Traceback (most recent call last):
File "F:\Program\Python\lib\threading.py", line 442, in __bootstrap
self.run()
File "F:\Program\Python\DataLogger\Dyno2.py", line 329, in run
screen = pygame.display.set_mode((ScreenWidth,ScreenHeight))
error: DirectDraw2::SetCooperativeLevel: Invalid parameters
Jag förstår inte hur jag ska lösa felet. Sen är det en annan grej med just pygame också. Jag vill ha varvräknaren ligga i samma fönster som jag startar den från, som det är nu öppnas ett nytt fönster, men jag lyckas inte med detta heller. Jag kör wxpython om det kan vara till nån hjälp.
Jag har ett par konstiga fel till men det är kanske bäst att försöka lösa ett i taget.