diff --git a/src/core.py b/src/core.py --- a/src/core.py +++ b/src/core.py @@ -1,6 +1,7 @@ import multiprocessing import logging as log import PIL +from util import MsgQueue from gui import gui from image_analyzer import ImageAnalyzer from go import Go @@ -14,35 +15,28 @@ class Core: self.tresW=60.0 self.tresB=30.0 - self._msgQueue=multiprocessing.Queue() - self._guiQueue=multiprocessing.Queue() - self._incomingEvent=multiprocessing.Event() - self._guiEvent=multiprocessing.Event() + self._ownMessages=MsgQueue(self._handleEvent) + self._guiMessages=MsgQueue() self._frame=PIL.Image.open("../images/7.jpg") - self._guiProc=multiprocessing.Process(name="gui", target=gui, args=(self._guiQueue,self._guiEvent,self._msgQueue,self._incomingEvent)) + self._guiProc=multiprocessing.Process(name="gui", target=gui, args=(self._guiMessages,self._ownMessages)) self._guiProc.start() - self._guiQueue.put(("setCurrentFrame",(self._frame,),dict())) - self._guiEvent.set() + self._guiMessages.send("setCurrentFrame",(self._frame,)) def setCorners(self,corners): self.detector.setGridCorners(corners) self.detector.analyze(self._frame) - for r in self.detector.board: log.info(r) + self._guiMessages.send("setGameState",(self.detector.board,)) def setTresholds(self,tresB=None,tresW=None): if tresB is not None: self.tresB=tresB if tresW is not None: self.tresW=tresW + if self.detector.analyze(self._frame): + self._guiMessages.send("setGameState",(self.detector.board,)) def listen(self): - while True: - self._incomingEvent.wait() - msg=self._msgQueue.get() - if self._msgQueue.empty(): - self._incomingEvent.clear() - log.info(msg) - self._handleEvent(msg) + self._ownMessages.listen() def _handleEvent(self,e): actions={"setCorners":self.setCorners, "setTresholds":self.setTresholds}