class CWTabMachine(CWStateMachine): def __init__(self): self.capture = cv2.VideoCapture(0) self.initHandler() self.initStates() self.setNextStates() self.setErrorStates() CWStateMachine.__init__(self, self.standBy) def initHandler(self): self.parameterHandler = CWParameterHandler() self.frameHandler = CWFrameHandler(self.capture, self.parameterHandler) self.serialHandler = CWSerialHandler() def initStates(self): self.stopFill = CWStopFill(self.frameHandler, self.serialHandler, self.parameterHandler) self.startFill = CWStartFill(self.frameHandler, self.serialHandler, self.parameterHandler) self.stopRotate = CWStopRotate(serialHandler=self.serialHandler) self.startRotate = CWStartRotate(self.frameHandler, self.serialHandler, self.parameterHandler) self.standBy = CWStandBy(self.frameHandler, self.serialHandler, self.parameterHandler) self.detectGlass = CWDetectGlass(self.frameHandler, self.serialHandler, self.parameterHandler) def setNextStates(self): self.stopFill.nextState = self.startRotate self.startFill.nextState = self.stopFill self.startRotate.nextState = self.detectGlass self.detectGlass.nextState = self.stopRotate self.stopRotate.nextState = self.startFill self.standBy.nextState = self.startRotate def setErrorStates(self): self.stopFill.errorState = self.standBy self.startFill.errorState = self.standBy self.startRotate.errorState = self.standBy self.stopRotate.errorState = self.standBy self.detectGlass.errorState = self.standBy self.standBy.errorState = self.standBy def run(self): try: while True: self.currentState.run() self.currentState = self.currentState.next() if self.parameterHandler.stopProgram == True: self.frameHandler.release() self.serialHandler.close() break except: print (sys.exc_info()) self.frameHandler.release() self.serialHandler.close()
def initHandler(self): self.parameterHandler = CWParameterHandler() self.frameHandler = CWFrameHandler(self.capture, self.parameterHandler) self.serialHandler = CWSerialHandler()