def __init__(self, parent): super().__init__(parent=parent.controller.stm) global ctrl self.controller: Controller = parent.controller ctrl = self.controller common = Common(self) self.finish = QFinalState(self) self.addTransition(self.finished, parent.menu) self.addTransition(ctrl.button['back'].clicked, self.finish) menu = ctrl.menu.menu['КУ 215'] parent.menu.addTransition(menu.button['Утечка'].clicked, self) self.start = Start(self) self.prepare_pressure = common.prepare_pressure(self) self.pressure_4 = common.pressure_4(self) self.leak_on = LeakOn(self) self.measure = Measure(self) self.leak_off = LeakOff(self) self.show_result = ShowResult(self) self.setInitialState(self.start) self.start.addTransition(self.prepare_pressure) self.prepare_pressure.addTransition(self.prepare_pressure.finished, self.pressure_4) self.pressure_4.addTransition(ctrl.server_updated, self.pressure_4) self.pressure_4.addTransition(ctrl.button['yes'].clicked, self.leak_on) self.leak_on.addTransition(ctrl.switch['leak 0,5'].high_value, self.measure) self.measure.addTransition(ctrl.server_updated, self.measure) self.measure.addTransition(self.measure.done, self.leak_off) self.leak_off.addTransition(ctrl.switch['leak 0,5'].low_value, self.show_result)
def __init__(self, parent): super().__init__(parent=parent.controller.stm) global ctrl self.controller: Controller = parent.controller ctrl = self.controller common = Common(self) self.finish = QFinalState(self) self.addTransition(self.finished, parent.menu) self.addTransition(ctrl.button['back'].clicked, self.finish) menu = ctrl.menu.menu['РД 042'] parent.menu.addTransition(menu.button['Поддержание давления'].clicked, self) self.start = Start(self) self.pressure_check = common.PressureCheck(self) self.leak_on = LeakOn(self) self.measure = Measure(self) self.leak_off = LeakOff(self) self.show_result = ShowResult(self) self.setInitialState(self.start) self.start.addTransition(self.pressure_check) self.pressure_check.addTransition(self.pressure_check.finished, self.leak_on) self.leak_on.addTransition(ctrl.switch['leak 1'].high_value, self.measure) self.measure.addTransition(ctrl.server_updated, self.measure) self.measure.addTransition(self.measure.done, self.leak_off) self.leak_off.addTransition(ctrl.switch['leak 1'].low_value, self.show_result)
def __init__(self, parent): super().__init__(parent=parent.controller.stm) self.controller: Controller = parent.controller ctrl = self.controller self.finish = QFinalState(self) self.addTransition(self.finished, parent.menu) self.addTransition(ctrl.button['back'].clicked, self.finish) menu = ctrl.menu.menu['КЭБ 208'] parent.menu.addTransition(menu.button['Время торможения'].clicked, self) self.start = Start(self) self.prepare_pressure = PreparePressure(self) self.reset_ptc = ResetPtc(self) self.rdkp = Rdkp(self) self.measure = Measure(self) self.show_result = ShowResult(self) self.setInitialState(self.start) self.start.addTransition(self.prepare_pressure) self.prepare_pressure.addTransition(self.prepare_pressure.finished, self.reset_ptc) self.reset_ptc.addTransition(self.reset_ptc.finished, self.rdkp) self.rdkp.addTransition(ctrl.switch_with_neutral['rd-0-keb'].state_two, self.measure) self.measure.addTransition(ctrl.server_updated, self.measure) self.measure.addTransition(self.measure.done, self.show_result)
def __init__(self, parent): super().__init__(parent=parent.controller.stm) global ctrl self.controller: Controller = parent.controller ctrl = self.controller common = Common(self) self.finish = QFinalState(self) self.addTransition(self.finished, parent.menu) self.addTransition(ctrl.button['back'].clicked, self.finish) menu = ctrl.menu.menu['РД 042'] parent.menu.addTransition(menu.button['Герметичность соединений'].clicked, self) self.start = Start(self) self.pressure_check = common.PressureCheck(self) self.upr_rd = UprRd(self) self.rdkp_rd = RdkpRd(self) self.ptc = Ptc(self) self.set_ptc = SetPtc(self) self.junctions_check = JunctionsCheck(self) self.junctions_success = JunctionsSuccess(self) self.junctions_fail = JunctionsFail(self) self.setInitialState(self.start) self.start.addTransition(self.pressure_check) self.pressure_check.addTransition(self.pressure_check.finished, self.upr_rd) self.upr_rd.addTransition(ctrl.switch['upr rd 042'].high_value, self.rdkp_rd) self.rdkp_rd.addTransition(ctrl.switch_with_neutral['rd-0-keb'].state_one, self.ptc) self.ptc.addTransition(self.ptc.success, self.junctions_check) self.ptc.addTransition(self.ptc.fail, self.set_ptc) self.set_ptc.addTransition(ctrl.server_updated, self.set_ptc) self.set_ptc.addTransition(ctrl.button['yes'].clicked, self.junctions_check) self.junctions_check.addTransition(ctrl.button['yes'].clicked, self.junctions_success) self.junctions_check.addTransition(ctrl.button['no'].clicked, self.junctions_fail)
def __init__(self, parent): super().__init__(parent=parent.controller.stm) global ctrl self.controller: Controller = parent.controller ctrl = self.controller common = Common(self) self.finish = QFinalState(self) self.addTransition(self.finished, parent.menu) self.addTransition(ctrl.button['back'].clicked, self.finish) menu = ctrl.menu.menu['КУ 215'] parent.menu.addTransition(menu.button['Ступени торможения'].clicked, self) self.start = Start(self) self.prepare_pressure = common.prepare_pressure(self) self.pressure_0 = common.pressure_0(self) self.breaking_stage_1 = common.breaking_stage(self, 1) self.breaking_stage_2 = common.breaking_stage(self, 2) self.breaking_stage_3 = common.breaking_stage(self, 3) self.breaking_stage_4 = common.breaking_stage(self, 4) self.show_result = ShowResult(self) self.setInitialState(self.start) self.start.addTransition(self.prepare_pressure) self.prepare_pressure.addTransition(self.prepare_pressure.finished, self.pressure_0) self.pressure_0.addTransition(ctrl.server_updated, self.pressure_0) self.pressure_0.addTransition(ctrl.button['yes'].clicked, self.breaking_stage_1) self.breaking_stage_1.addTransition(self.breaking_stage_1.finished, self.breaking_stage_2) self.breaking_stage_2.addTransition(self.breaking_stage_2.finished, self.breaking_stage_3) self.breaking_stage_3.addTransition(self.breaking_stage_3.finished, self.breaking_stage_4) self.breaking_stage_4.addTransition(self.breaking_stage_4.finished, self.show_result)
def __init__(self, parent): super().__init__(parent=parent.controller.stm) self.controller: Controller = parent.controller ctrl = self.controller self.finish = QFinalState(self) self.addTransition(self.finished, parent) self.reset = Reset(self) self.disable_menu = DisableMenu(self) self.report_data = ReportData(self) self.menu = Menu(self) parent.addTransition( ctrl.menu.menu['Главное меню'].button['КЭБ 208'].clicked, self) self.setInitialState(self.reset) self.reset.addTransition(self.disable_menu) self.disable_menu.addTransition(self.report_data) self.report_data.addTransition(ctrl.button['back'].clicked, self.finish) self.report_data.addTransition(ctrl.menu.prepare_menu.done.clicked, self.menu) self.menu.addTransition(ctrl.button['back'].clicked, self.finish) self.prepare = Prepare(self) self.fill = Fill(self) self.junctions = Junctions(self) self.empty = Empty(self) self.end = End(self)
def __init__(self, parent): super().__init__(parent=parent.controller.stm) global ctrl self.controller: Controller = parent.controller ctrl = self.controller common = Common(self) self.finish = QFinalState(self) self.addTransition(self.finished, parent.menu) self.addTransition(ctrl.button['back'].clicked, self.finish) menu = ctrl.menu.menu['КУ 215'] parent.menu.addTransition(menu.button['Подготовка'].clicked, self) self.start = Start(self) self.install = Install(self) self.ku = KU(self) self.tc820 = Tc820(self) self.leak = Leak(self) self.enable_menu = EnableMenu(self) self.setInitialState(self.start) self.start.addTransition(self.install) self.install.addTransition(ctrl.button['yes'].clicked, self.ku) self.ku.addTransition(ctrl.switch['ku 215'].high_value, self.tc820) self.tc820.addTransition(ctrl.switch['tc 820'].low_value, self.leak) self.leak.addTransition(ctrl.switch['leak 0,5'].low_value, self.enable_menu)
def __init__(self, parent): super().__init__(parent=parent.controller.stm) self.controller: Controller = parent.controller ctrl = self.controller self.finish = QFinalState(self) self.addTransition(self.finished, parent.menu) self.addTransition(ctrl.button['back'].clicked, self.finish) menu = ctrl.menu.menu['КЭБ 208'] parent.menu.addTransition(menu.button['Герметичность соединений'].clicked, self) self.start = Start(self) self.prepare_pressure = PreparePressure(self) self.set_ptc = SetPtc(self) self.check_junctions = CheckJunctions(self) self.junctions_success = JunctionsSuccess(self) self.junctions_fail = JunctionsFail(self) self.setInitialState(self.start) self.start.addTransition(self.prepare_pressure) self.prepare_pressure.addTransition(self.prepare_pressure.finished, self.set_ptc) self.set_ptc.addTransition(self.set_ptc.finished, self.check_junctions) self.check_junctions.addTransition(ctrl.button['yes'].clicked, self.junctions_success) self.check_junctions.addTransition(ctrl.button['no'].clicked, self.junctions_fail)
def __init__(self, parent): super().__init__(parent=parent.controller.stm) global ctrl self.controller: Controller = parent.controller ctrl = self.controller common = Common(self) self.finish = QFinalState(self) self.addTransition(self.finished, parent.menu) self.addTransition(ctrl.button['back'].clicked, self.finish) menu = ctrl.menu.menu['КУ 215'] parent.menu.addTransition( menu.button['Герметичность соединений'].clicked, self) self.start = Start(self) self.prepare_pressure = common.prepare_pressure(self) self.pressure_4 = common.pressure_4(self) self.check_junctions = CheckJunctions(self) self.junctions_fail = JunctionsFail(self) self.junctions_success = JunctionsSuccess(self) self.setInitialState(self.start) self.start.addTransition(self.prepare_pressure) self.prepare_pressure.addTransition(self.prepare_pressure.finished, self.pressure_4) self.pressure_4.addTransition(ctrl.server_updated, self.pressure_4) self.pressure_4.addTransition(ctrl.button['yes'].clicked, self.check_junctions) self.check_junctions.addTransition(ctrl.button['yes'].clicked, self.junctions_success) self.check_junctions.addTransition(ctrl.button['no'].clicked, self.junctions_fail)
def __init__(self, parent): super().__init__(parent=parent.controller.stm) global ctrl self.controller: Controller = parent.controller ctrl = self.controller common = Common(self) self.finish = QFinalState(self) self.addTransition(self.finished, parent.menu) self.addTransition(ctrl.button['back'].clicked, self.finish) menu = ctrl.menu.menu['КУ 215'] parent.menu.addTransition(menu.button['Подготовка'].clicked, self) self.start = Start(self) self.install = Install(self) self.prepare_pressure = common.prepare_pressure(self) self.leak = Leak(self) self.tank = Tank(self) self.pim_0 = Pim0(self) self.enable_menu = EnableMenu(self) self.setInitialState(self.start) self.start.addTransition(self.install) self.install.addTransition(ctrl.button['yes'].clicked, self.prepare_pressure) self.prepare_pressure.addTransition(self.prepare_pressure.finished, self.leak) self.leak.addTransition(ctrl.switch['leak 0,5'].low_value, self.tank) self.tank.addTransition(ctrl.switch_with_neutral['tank'].state_two, self.pim_0) self.pim_0.addTransition(ctrl.server_updated, self.pim_0) self.pim_0.addTransition(self.pim_0.done, self.enable_menu)
def createState(self): # state defintion mainState = QState(self.fsm) finalState = QFinalState(self.fsm) self.fsm.setInitialState(mainState) initState = QState(mainState) standbyState = QState(mainState) #transition defition mainState.setInitialState(initState) mainState.addTransition(self.sigStateStop, finalState) initState.addTransition(self.sigInitOk, standbyState) standbyState.addTransition(self.sigError, initState) # #state entered slot connect mainState.entered.connect(self.mainStateEntered) initState.entered.connect(self.initStateEntered) standbyState.entered.connect(self.standbyStateEntered) finalState.entered.connect(self.finalStateEntered) #fsm start self.fsm.start() pass
def __init__(self, parent): super().__init__(parent=parent.controller.stm) global ctrl ctrl = parent.controller self.controller = ctrl common: Common = Common(self) self.finish = QFinalState(self) self.addTransition(self.finished, parent.menu) menu = ctrl.menu.menu['РД 042'] self.addTransition(ctrl.button['back'].clicked, self.finish) parent.menu.addTransition(menu.button['Подготовка'].clicked, self) self.start = Start(self) self.tc820 = Tc820(self) self.set_rd = SetRd(self) self.rdkp_0 = Rdkp0(self) self.pressure_check = common.PressureCheck(self) self.enable_menu = EnableMenu(self) self.setInitialState(self.start) self.start.addTransition(self.set_rd) self.set_rd.addTransition(ctrl.button['yes'].clicked, self.tc820) self.tc820.addTransition(ctrl.switch['tc 820'].high_value, self.rdkp_0) self.rdkp_0.addTransition( ctrl.switch_with_neutral['rd-0-keb'].state_neutral, self.pressure_check) self.pressure_check.addTransition(self.pressure_check.finished, self.enable_menu)
def __init__(self, parent): super().__init__(parent=parent) global ctrl self.controller: Controller = parent.controller ctrl = self.controller self.finish = QFinalState(self) self.addTransition(self.finished, parent.menu) self.addTransition(ctrl.button['back'].clicked, self.finish) menu = ctrl.menu.menu['КП 106'] parent.menu.addTransition(menu.button['Завершение'].clicked, self) self.start = Start(self) self.upr_rd = UprRd(self) self.rd = Rd(self) self.kp106 = Kp106(self) self.km = Km(self) self.rdkp = RdKp(self) self.tc820 = Tc820(self) self.uninstall = Uninstall(self) self.report = Report(self) self.setInitialState(self.start) self.start.addTransition(self.upr_rd) self.upr_rd.addTransition(ctrl.switch['upr rd 042'].low_value, self.rd) self.rd.addTransition(ctrl.switch['rd 042'].low_value, self.kp106) self.kp106.addTransition(ctrl.switch['kp 106'].low_value, self.km) self.km.addTransition(ctrl.switch_with_neutral['km'].state_neutral, self.rdkp) self.rdkp.addTransition( ctrl.switch_with_neutral['rd-0-keb'].state_neutral, self.tc820) self.tc820.addTransition(ctrl.switch['tc 820'].low_value, self.uninstall) self.uninstall.addTransition(ctrl.button['yes'].clicked, self.report)
def __init__(self, parent): super().__init__(parent=parent.controller.stm) global ctrl self.controller: Controller = parent.controller ctrl = self.controller common = Common(self) self.finish = QFinalState(self) self.addTransition(self.finished, parent.menu) self.addTransition(ctrl.button['back'].clicked, self.finish) menu = ctrl.menu.menu['КУ 215'] parent.menu.addTransition(menu.button['Время наполнения'].clicked, self) self.start = Start(self) self.prepare_pressure = common.prepare_pressure(self) self.pressure_0 = common.pressure_0(self) self.handle_4 = Handle4(self) self.measure = Measure(self) self.show_result = ShowResult(self) self.setInitialState(self.start) self.start.addTransition(self.prepare_pressure) self.prepare_pressure.addTransition(self.prepare_pressure.finished, self.pressure_0) self.pressure_0.addTransition(ctrl.server_updated, self.pressure_0) self.pressure_0.addTransition(ctrl.button['yes'].clicked, self.handle_4) self.handle_4.addTransition(ctrl.server_updated, self.handle_4) self.handle_4.addTransition(self.handle_4.done, self.measure) self.measure.addTransition(ctrl.server_updated, self.measure) self.measure.addTransition(self.measure.done, self.show_result)
def __init__(self, parent): super().__init__(parent=parent.controller.stm) global ctrl self.controller: Controller = parent.controller ctrl = self.controller common = Common(self) self.finish = QFinalState(self) self.addTransition(self.finished, parent.menu) self.addTransition(ctrl.button['back'].clicked, self.finish) menu = ctrl.menu.menu['РД 042'] parent.menu.addTransition(menu.button['Время наполнения'].clicked, self) self.start = Start(self) self.rdkp_0 = Rdkp0(self) self.upr_rd_off = UprRdOff(self) self.ptc = Ptc(self) self.set_ptc = SetPtc(self) self.pressure_check = common.PressureCheck(self) self.rdkp_rd = RdkpRd(self) self.upr_rd_on = UprRdOn(self) self.measure = Measure(self) self.show_result = ShowResult(self) self.setInitialState(self.start) self.start.addTransition(self.pressure_check) self.pressure_check.addTransition(self.pressure_check.finished, self.upr_rd_off) self.upr_rd_off.addTransition(ctrl.switch['upr rd 042'].low_value, self.ptc) self.ptc.addTransition(self.ptc.success, self.upr_rd_on) self.ptc.addTransition(self.ptc.fail, self.set_ptc) self.set_ptc.addTransition(ctrl.server_updated, self.set_ptc) self.set_ptc.addTransition(ctrl.button['yes'].clicked, self.upr_rd_on) self.upr_rd_on.addTransition(ctrl.switch['upr rd 042'].high_value, self.measure) self.measure.addTransition(ctrl.server_updated, self.measure) self.measure.addTransition(self.measure.done, self.show_result)
def __init__(self, parent): super().__init__(parent=parent.controller.stm) self.controller: Controller = parent.controller ctrl = self.controller self.finish = QFinalState(self) self.addTransition(self.finished, parent.menu) self.addTransition(ctrl.button['back'].clicked, self.finish) menu = ctrl.menu.menu['КЭБ 208'] parent.menu.addTransition( menu.button['Подготовка к испытанию'].clicked, self) self.start = Start(self) self.install_rd = InstallRd(self) self.rd = Rd(self) self.reset_ptc = ResetPtc(self) self.voltage = Voltage(self) self.install_keb = InstallKeb(self) self.prepare_pressure = PreparePressure(self) self.tc820 = Tc820(self) self.enable_menu = EnableMenu(self) self.setInitialState(self.start) self.start.addTransition(self.install_rd) self.install_rd.addTransition(ctrl.button['yes'].clicked, self.rd) self.rd.addTransition(ctrl.switch['rd 042'].high_value, self.reset_ptc) self.reset_ptc.addTransition(self.reset_ptc.finished, self.voltage) self.voltage.addTransition(ctrl.button['yes'].clicked, self.install_keb) self.install_keb.addTransition(ctrl.button['yes'].clicked, self.prepare_pressure) self.prepare_pressure.addTransition(self.prepare_pressure.finished, self.tc820) self.tc820.addTransition(ctrl.switch['tc 820'].high_value, self.enable_menu)
def set_states(self): """ Create state machine states """ self.rootState = QState() # Initial setup states self.languageState = QState(self.rootState) self.loadState = QState(self.rootState) self.instructState = QState(self.rootState) self.nameState = QState(self.rootState) self.setplayersState = QState(self.rootState) self.tileState = QState(self.rootState) self.checkState = QState(self.rootState) self.setupState = QState(self.rootState) # Wait state between turns self.startState = QState(self.rootState) # Playing states self.playState = QState(self.rootState) self.blankState = QState(self.rootState) self.acceptState = QState(self.rootState) self.passState = QState(self.rootState) self.challengeState = QState(self.rootState) self.exchangeState = QState(self.rootState) self.endState = QState(self.rootState) # End state self.quitState = QFinalState()
def __init__(self, parent): super().__init__(parent=parent) global ctrl self.controller: Controller = parent.controller ctrl = self.controller self.finish = QFinalState(self) self.addTransition(self.finished, parent.menu) self.addTransition(ctrl.button['back'].clicked, self.finish) menu = ctrl.menu.menu['РД 042'] parent.menu.addTransition(menu.button['Завершение'].clicked, self) self.start = Start(self) self.upr_rd = UprRd(self) self.ptc = Ptc(self) self.rd = Rd(self) self.rdkp_0 = RdKp0(self) self.tank_2 = Tank2(self) self.uninstall = Uninstall(self) self.air = Air(self) self.report = Report(self) self.setInitialState(self.start) self.start.addTransition(self.upr_rd) self.upr_rd.addTransition(ctrl.switch['upr rd 042'].low_value, self.ptc) self.ptc.addTransition(ctrl.server_updated, self.ptc) self.ptc.addTransition(self.ptc.done, self.rd) self.rd.addTransition(ctrl.switch['rd 042'].low_value, self.rdkp_0) self.rdkp_0.addTransition( ctrl.switch_with_neutral['rd-0-keb'].state_neutral, self.tank_2) self.tank_2.addTransition(ctrl.server_updated, self.tank_2) self.tank_2.addTransition(self.tank_2.done, self.uninstall) self.uninstall.addTransition(ctrl.button['yes'].clicked, self.air) self.air.addTransition(ctrl.server_updated, self.air) self.air.addTransition(self.air.done, self.report)
def __init__(self, parent): super().__init__(parent=parent.controller.stm) self.controller: Controller = parent.controller ctrl = self.controller self.finish = QFinalState(self) self.addTransition(self.finished, parent.menu) self.addTransition(ctrl.button['back'].clicked, self.finish) menu = ctrl.menu.menu['КЭБ 208'] parent.menu.addTransition(menu.button['Время отпуска'].clicked, self) self.start = Start(self) self.prepare_pressure = PreparePressure(self) self.set_ptc = SetPtc(self) self.auto = Auto(self) self.measure = Measure(self) self.show_result = ShowResult(self) self.setInitialState(self.start) self.start.addTransition(self.prepare_pressure) self.prepare_pressure.addTransition(self.prepare_pressure.finished, self.set_ptc) self.set_ptc.addTransition(self.set_ptc.finished, self.auto) self.auto.addTransition(ctrl.server_updated, self.auto) self.auto.addTransition(self.auto.done, self.measure) self.measure.addTransition(ctrl.server_updated, self.measure) self.measure.addTransition(self.measure.done, self.show_result)
def __init__(self, controller: Controller, menu_state: QState): super().__init__(parent=controller.stm) global ctrl ctrl = controller common = Common(controller=ctrl) self.finish = QFinalState(self) self.addTransition(self.finished, menu_state) self.addTransition(ctrl.button['back'].clicked, self.finish) menu = ctrl.menu.menu['БТП 020'] menu_state.addTransition(menu.button['Замещение торможения'].clicked, self) self.start = Start(self) self.ppm = common.Ppm(self) self.el_breaking = common.ElBreaking(self) self.speed_60 = common.Speed60(self) self.ku_215 = common.KU215(self) self.pim = common.Pim(self) self.enter = common.Enter(state='- 0 -', parent=self) self.el_breaking_on = ElBreakingOn(self) self.measure = Measure(self) self.ok = Ok(self) self.ok_measure = OkMeasure(self) self.el_breaking_off = ElBreakingOff(self) self.show_result = ShowResult(self) self.setInitialState(self.start) self.start.addTransition(self.ppm) self.ppm.addTransition(ctrl.server_updated, self.ppm) self.ppm.addTransition(self.ppm.done, self.el_breaking) self.el_breaking.addTransition(ctrl.switch['el. braking'].low_value, self.speed_60) self.speed_60.addTransition(ctrl.switch['>60 km/h'].low_value, self.ku_215) self.ku_215.addTransition(ctrl.switch['ku 215'].high_value, self.pim) self.pim.addTransition(ctrl.server_updated, self.pim) self.pim.addTransition(self.pim.done, self.enter) self.enter.addTransition( ctrl.switch_with_neutral['enter'].state_neutral, self.el_breaking_on) self.el_breaking_on.addTransition(ctrl.server_updated, self.el_breaking_on) self.el_breaking_on.addTransition(self.el_breaking_on.done, self.measure) self.measure.addTransition(ctrl.server_updated, self.measure) self.measure.addTransition(self.measure.done, self.ok) self.ok.addTransition(ctrl.switch['ok'].high_value, self.ok_measure) self.ok_measure.addTransition(ctrl.server_updated, self.ok_measure) self.ok_measure.addTransition(ctrl.switch['ok'].low_value, self.el_breaking_off) self.el_breaking_off.addTransition(ctrl.server_updated, self.el_breaking_off) self.el_breaking_off.addTransition(self.el_breaking_off.done, self.show_result)
def __init__(self, parent): super().__init__(parent=parent) self.enter = Enter(self) self.ku_215 = Ku215(self) self.finish = QFinalState(self) self.setInitialState(self.enter) self.enter.addTransition(ctrl.switch_with_neutral['km'].state_neutral, self.ku_215) self.ku_215.addTransition(ctrl.switch['ku 215'].high_value, self.finish)
def __init__(self, parent=None): super().__init__(parent=parent) self.pim = Pim(self) self.rd042 = Rd042(self) self.prdsd = Prdsd(self) self.finish = QFinalState(self) self.setInitialState(self.pim) self.pim.addTransition(self.pim.finished, self.rd042) self.rd042.addTransition(ctrl.switch['rd 042'].high_value, self.prdsd) self.prdsd.addTransition(self.prdsd.finished, self.finish)
def __init__(self, parent, stage: int): super().__init__(parent=parent) self.handle_stage = HandleStage(self, stage) self.stabilize = Stabilize(self) self.finish = QFinalState(self) self.setInitialState(self.handle_stage) self.handle_stage.addTransition(ctrl.server_updated, self.handle_stage) self.handle_stage.addTransition(self.handle_stage.done, self.stabilize) self.stabilize.addTransition(ctrl.server_updated, self.stabilize) self.stabilize.addTransition(self.stabilize.done, self.finish)
def __init__(self, parent=None): super().__init__(parent=parent) self.upr_rd042 = UprRd042(self) self.check_prdsd = CheckPrsd(self) self.set_prdsd = SetPrdsd(self) self.finsh = QFinalState(self) self.setInitialState(self.upr_rd042) self.upr_rd042.addTransition(ctrl.switch['upr rd 042'].high_value, self.check_prdsd) self.check_prdsd.addTransition(self.check_prdsd.success, self.finsh) self.check_prdsd.addTransition(self.check_prdsd.fail, self.set_prdsd) self.set_prdsd.addTransition(ctrl.server_updated, self.set_prdsd) self.set_prdsd.addTransition(ctrl.button['yes'].clicked, self.finsh)
def __init__(self, parent=None): super().__init__(parent=parent) self.tank = Tank(self) self.check_pim = CheckPim(self) self.set_pim = SetPim(self) self.finish = QFinalState(self) self.setInitialState(self.tank) self.tank.addTransition(ctrl.switch_with_neutral['tank'].state_one, self.check_pim) self.check_pim.addTransition(self.check_pim.success, self.finish) self.check_pim.addTransition(self.check_pim.fail, self.set_pim) self.set_pim.addTransition(ctrl.server_updated, self.set_pim) self.set_pim.addTransition(ctrl.button['yes'].clicked, self.finish)
def __init__(self, parent): super().__init__(parent=parent.controller.stm) global ctrl self.controller: Controller = parent.controller ctrl = self.controller self.finish = QFinalState(self) self.addTransition(self.finished, parent.menu) self.addTransition(ctrl.button['back'].clicked, self.finish) menu = ctrl.menu.menu['КП 106'] parent.menu.addTransition( menu.button['Подготовка к испытанию'].clicked, self) self.start = Start(self) self.install = Install(self) self.tc820 = Tc820(self) self.rdkp = Rdkp(self) self.km = Km(self) self.ptm = Ptm(self) self.set_ptm = SetPtm(self) self.kp106 = Kp106(self) self.rd042 = Rd042(self) self.upr_rd042 = UprRd042(self) self.pupr = Pupr(self) self.set_pupr = SetPupr(self) self.enable_menu = EnableMenu(self) self.setInitialState(self.start) self.start.addTransition(self.install) self.install.addTransition(ctrl.button['yes'].clicked, self.tc820) self.tc820.addTransition(ctrl.switch['tc 820'].high_value, self.rdkp) self.rdkp.addTransition(ctrl.switch_with_neutral['rd-0-keb'].state_two, self.km) self.km.addTransition(ctrl.switch_with_neutral['km'].state_one, self.ptm) self.ptm.addTransition(self.ptm.success, self.kp106) self.ptm.addTransition(self.ptm.fail, self.set_ptm) self.set_ptm.addTransition(ctrl.server_updated, self.set_ptm) self.set_ptm.addTransition(ctrl.button['yes'].clicked, self.kp106) self.kp106.addTransition(ctrl.switch['kp 106'].high_value, self.rd042) self.rd042.addTransition(ctrl.switch['rd 042'].high_value, self.upr_rd042) self.upr_rd042.addTransition(ctrl.switch['upr rd 042'].high_value, self.pupr) self.pupr.addTransition(self.pupr.success, self.enable_menu) self.pupr.addTransition(self.pupr.fail, self.set_pupr) self.set_pupr.addTransition(ctrl.server_updated, self.set_pupr) self.set_pupr.addTransition(ctrl.button['yes'].clicked, self.enable_menu)
def __init__(self, parent): super().__init__(parent=parent) self.controller: Controller = parent.controller ctrl = self.controller self.set_pim = SetPim(self) self.keb = Keb(self) self.rd = Rd(self) self.set_pupr = SetPupr(self) self.finish = QFinalState(self) self.setInitialState(self.set_pim) self.set_pim.addTransition(self.set_pim.finished, self.keb) self.keb.addTransition(ctrl.switch['keb 208'].high_value, self.rd) self.rd.addTransition(ctrl.switch['rd 042'].high_value, self.set_pupr) self.set_pupr.addTransition(self.set_pupr.finished, self.finish)
def __init__(self, controller: Controller, menu_state: QState): super().__init__(parent=controller.stm) global ctrl ctrl = controller common = Common(controller=ctrl) self.finish = QFinalState(self) self.addTransition(self.finished, menu_state) self.addTransition(ctrl.button['back'].clicked, self.finish) menu = ctrl.menu.menu['БТП 020'] menu_state.addTransition(menu.button['Повышенная скорость'].clicked, self) self.start = Start(self) self.ppm = common.Ppm(self) self.el_breaking = common.ElBreaking(self) self.speed_60 = common.Speed60(self) self.ku_215 = common.KU215(self) self.pim = common.Pim(self) self.enter = common.Enter(state='- 0 -', parent=self) self.speed_on = SpeedOn(self) self.measure_fill = MeasureFill(self) self.speed_off = SpeedOff(self) self.measure_empty = MeasureEmpty(self) self.show_result = ShowResult(self) self.setInitialState(self.start) self.start.addTransition(self.ppm) self.ppm.addTransition(ctrl.server_updated, self.ppm) self.ppm.addTransition(self.ppm.done, self.ku_215) # self.el_breaking.addTransition(ctrl.switch['el. braking'].low_value, self.speed_60) # self.speed_60.addTransition(ctrl.switch['>60 km/h'].low_value, self.ku_215) self.ku_215.addTransition(ctrl.switch['ku 215'].high_value, self.pim) self.pim.addTransition(ctrl.server_updated, self.pim) self.pim.addTransition(self.pim.done, self.enter) self.enter.addTransition(ctrl.switch_with_neutral['km'].state_neutral, self.speed_on) self.speed_on.addTransition(ctrl.server_updated, self.speed_on) self.speed_on.addTransition(self.speed_on.done, self.measure_fill) self.measure_fill.addTransition(ctrl.server_updated, self.measure_fill) self.measure_fill.addTransition(self.measure_fill.done, self.speed_off) self.speed_off.addTransition(ctrl.server_updated, self.speed_off) self.speed_off.addTransition(self.speed_off.done, self.measure_empty) self.measure_empty.addTransition(ctrl.server_updated, self.measure_empty) self.measure_empty.addTransition(self.measure_empty.done, self.show_result)
def __init__(self, parent): super().__init__(parent=parent) self.controller: Controller = parent.controller ctrl = self.controller self.upr_rd = UprRd(self) self.pupr = Pupr(self) self.check_pupr = CheckPupr(self) self.finish = QFinalState(self) self.setInitialState(self.upr_rd) self.upr_rd.addTransition(ctrl.switch['upr rd 042'].high_value, self.pupr) self.pupr.addTransition(self.pupr.success, self.finish) self.pupr.addTransition(self.pupr.fail, self.check_pupr) self.check_pupr.addTransition(ctrl.server_updated, self.check_pupr) self.check_pupr.addTransition(ctrl.button['yes'].clicked, self.finish)
def __init__(self, parent): super().__init__(parent=parent) self.controller: Controller = parent.controller ctrl = self.controller self.rdkp_0 = Rdkp0(self) self.ptc_0 = Ptc0(self) self.check_ptc_0 = CheckPtc0(self) self.finish = QFinalState(self) self.setInitialState(self.rdkp_0) self.rdkp_0.addTransition( ctrl.switch_with_neutral['rd-0-keb'].state_neutral, self.ptc_0) self.ptc_0.addTransition(self.ptc_0.success, self.finish) self.ptc_0.addTransition(self.ptc_0.fail, self.check_ptc_0) self.check_ptc_0.addTransition(ctrl.server_updated, self.check_ptc_0) self.check_ptc_0.addTransition(self.check_ptc_0.done, self.finish)
def loadState(self, dev, stateParam, stateID = ""): curExecContext = ScExecContext() curExecContext.stateMachine = self.stateMachine curHistoryState = None debug = True r = QXmlStreamReader(dev) while not r.atEnd(): r.readNext() if r.isStartElement(): logger.info("Element :<%s>", r.name()) # # <scxml> # name = r.name().lower() if name == "scxml": if stateID == "": topLevelState = curState = stateParam self.stateInfo[curState] = r.attributes().value("initial") if curState == self.stateMachine: pass # # <state> || <parallel> # elif name == "state" or name == "parallel": inRoot = False stateId = r.attributes().value("id") newState = None # # Create state # if curState is not None: logger.info("Creating state [%s] child of [%s]", stateId, curState.objectName()) type = QState.ExclusiveStates if name == "state" else QState.ParallelStates newState = QState(type, curState) # # ??? # elif stateId == stateID: topLevelState = newState = stateParam if newState is not None: self.stateInfo[newState] = r.attributes().value("initial") newState.setObjectName(stateId) # # initial state # if stateId is not "" and self.stateInfo[curState] == stateId: if curState == self.stateMachine: logger.info("Setting [%s] initial state to [%s]", self.stateMachine.objectName(), newState.objectName()) self.stateMachine.setInitialState(newState) else: logger.info("Setting [%s] initial state to [%s]", curState.objectName(), newState.objectName()) curState.setInitialState(newState) # # TODO implement src attribute management in state element # initialID = r.attributes().value("initial") self.stateByID[stateId] = newState curState = newState curExecContext.state = newState if debug: # Add entry and exit log curExecContext.script = 'logger.debug("[scxml] [debug] > Entering state: [' + stateId + ']")' curExecContext.type = ScExecContext.StateEntry curExecContext.applyScript() curExecContext.script = 'logger.debug("[scxml] [debug] < Exiting state: [' + stateId + ']")' curExecContext.type = ScExecContext.StateExit curExecContext.applyScript() # # <initial> # elif name == "initial": if curState is not None and self.stateInfo[curState] == "": logger.info("Creating state [%s] child of [%s]", stateId, curState.objectName()) newState = QState(curState) curState.setInitialState(newState) # # <history> # elif name == "history": if curState is not None: stateId = r.attributes().value("id") type = r.attributes().value("type") type = QHistoryState.ShallowHistory if type == "shallow" else QHistoryState.DeepHistory curHistoryState = QHistoryState(type) curHistoryState.setObjectName(stateId) self.stateByID[stateId] = curHistoryState # # <final> # elif name == "final": if curState is not None: stateId = r.attributes().value("id") f = QFinalState(curState) f.setObjectName(stateId) curExecContext.state = f self.statesWithFinal.add(curState) gp = curState.parentState() if gp is not None: if gp.childMode() == QState.ParallelStates: self.statesWithFinal.add() self.stateByID[stateId] = f if debug: # Add entry and exit log curExecContext.script = 'logger.debug("[scxml] [debug] > Entering final state: [' + stateId + ']")' curExecContext.type = ScExecContext.StateEntry curExecContext.applyScript() curExecContext.script = 'logger.debug("[scxml] [debug] < Exiting final state: [' + stateId + ']")' curExecContext.type = ScExecContext.StateExit curExecContext.applyScript() # # <script> # elif name == "script": txt = r.readElementText() # # The SCXML Processor MUST evaluate any <script> element that is a child # of <scxml> at document load time # if curExecContext.type == ScExecContext.Unknown and curState == topLevelState: # TODO execute script pass else: curExecContext.script += txt # # <log> # elif name == "log": curExecContext.script += 'logger.' + r.attributes().value("level") + '("[' + \ r.attributes().value("label") + '] [' + \ r.attributes().value("level") + '] ' + r.attributes().value("expr") + '")' # # <assign> # elif name == "assign": pass # # <if> # elif name == "if": pass # # <elseif> # elif name == "elseif": pass # # <else> # elif name == "else": pass # # <cancel> # elif name == "cancel": pass # # <onentry> # elif name == "onentry": curExecContext.type = ScExecContext.StateEntry curExecContext.script = "" # # <onexit> # elif name == "onexit": curExecContext.type = ScExecContext.StateExit curExecContext.script = "" # # <raise> # elif name == "raise": pass # # <send> # elif name == "send": pass # # <invoke> # elif name == "invoke": pass # # <transition> # elif name == "transition": if curHistoryState is not None: inf = ScHistoryInfo() inf.hstate = curHistoryState inf.defaultStateID = r.attributes().value("target") self.historyInfo.append(inf) else: inf = ScTransitionInfo() inf.targets = r.attributes().value("target").split() # TODO split targets curExecContext.type = ScExecContext.Transition curExecContext.script = "" if debug: curExecContext.script = 'logger.debug("[scxml] [debug] = Transitioning to: [' \ + ', '.join(inf.targets) + ']")' + '\n' curTransitions = list() inf.transitions = list() self.transitionsInf.append(inf) for pfx in r.attributes().value("event").split(' '): sigTransition = None if pfx == '': # For eventless transition create QScxmlEventlessTransition transition sigTransition = QScxmlEventlessTransition(self.stateMachine) elif pfx.startswith("q-signal:"): # For all q-signal event, add a QSxcmlSignalTransition self.signalEvents.append(pfx) # get object name (a.b.c) => a objName = pfx[pfx.index(':')+1:pfx.index('.')] # get object reference obj = self.stateMachine.registeredObjects[objName] # get signal reference for attr in pfx[pfx.index('.')+1:].split('.'): sig = getattr(obj, attr) obj = sig # create Signal transition sigTransition = QScxmlSignalTransition(sig, self.stateMachine) if sigTransition is not None: # add condition to transition sigTransition.setConditionExpression(r.attributes().value("cond")) # add transition to current state curState.addTransition(sigTransition) # append sigTransition to transition info inf.transitions.append(sigTransition) # append sigTransition to curTransitions list curTransitions.append(sigTransition) else: logger.error("Transition creation error") # # End element # elif r.isEndElement(): name = r.name().lower() # # </state> or </parallel> # if name == "state" or name == "parallel": if curState == topLevelState: return else: curState = curState.parent() curExecContext.state = curState # # </history> # elif name == "history": curHistoryState = None # # </final> # elif name == "final": curExecContext.state = curExecContext.state.parentState() # # </if> # elif name == "if": pass # # </send> </raise> # elif name == "send" or name == "raise": pass # # </onentry> </onexit> </scxml> # elif name == "onentry" or name == "onexit" or name == "scxml": curExecContext.state = curState curExecContext.type = ScExecContext.StateExit if name == "onexit" else ScExecContext.StateEntry curExecContext.applyScript() curExecContext.type = ScExecContext.Unknown curExecContext.script = "" # # </transition> # elif name == "transition": if curHistoryState is None: curExecContext.transitions = curTransitions curExecContext.type = ScExecContext.Transition curExecContext.applyScript() curExecContext.script = "" curExecContext.type = ScExecContext.Unknown