Exemplo n.º 1
0
def main():
    try:

        # 测试伺服机
        # servo = Servo(channel=11,freq=50)
        # while True:
        #     servo.rotate(0)
        #     time.sleep(1)
        #     servo.rotate(180)
        #     time.sleep(1)

        # 测试超声波距离传感器
        # dd = DistanceDetector(7,8)
        # while True:
        #     time.sleep(0.2)
        #     dis = dd.getDistance()
        #     print(dis)

        #测试压力传感器
        # pressureSensor = PressureSensor(SCK_channel=7, DT_channel=8)
        # while True:
        #     print(pressureSensor.getData())
        #     time.sleep(1)

        #开启服务
        # cameraService = CameraService()
        # cameraService.startService()
        # waterSercice = WaterDispenserService(channel=7)
        # waterSercice.startService()
        # cleanService = CleanShitService()
        # cleanService.startService()

        # 尝试使用事件驱动模型
        eventManager = EventManager()
        feedingEventListener = FeedingEventListener()
        # cleanShitEventListener = CleanShitEventListener()
        rotateCameraEventListener = RotateCameraEventListener()
        eventManager.addEventListener(EVENT_FEEDING,
                                      feedingEventListener.excute)
        # eventManager.addEventListener(EVENT_CLEAN_SHIT, cleanShitEventListener.excute)
        eventManager.addEventListener(EVENT_ROTATE_CAMERA,
                                      rotateCameraEventListener.excute)

        eventManager.start()

        while True:
            logging.info("start")
            event = waitForEvent()
            eventManager.sendEvent(event)
            print(event.data.items())

    except KeyboardInterrupt:
        pass
Exemplo n.º 2
0
 def handle_inputs(self) -> None:
     # Called for each game tick. We check our keyboard presses here.
     for pg_event in pygame.event.get():
         # handle window manager closing our window
         if self.is_quit_event(pg_event):
             EventManager.post(QuitEvent())
         # handle key down events
         elif pg_event.type == pygame.KEYDOWN:
             self.handle_keypress(pg_event.unicode, pressed=True)
         # elif pg_event.type == pygame.KEYUP:
         #     self.handle_keypress(pg_event.unicode, pressed=False)
         elif pg_event.type == pygame.MOUSEBUTTONDOWN:
             self.handle_mouse_click(pressed=True)
         elif pg_event.type == pygame.MOUSEBUTTONUP:
             self.handle_mouse_click(pressed=False)
Exemplo n.º 3
0
 def setUp(self):
     self.service = DummyEventService()
     self.service.event_manager = EventManager()
     self.service.setup()
     super().setUp()
Exemplo n.º 4
0
 def run(self) -> None:
     EventManager.post(TickEvent())
     while True:
         EventManager.post(TickEvent())
Exemplo n.º 5
0
 def setUp(self):
     self.manager = EventManager()
     super().setUp()
Exemplo n.º 6
0
class TestEventManager(BaseTest):
    def setUp(self):
        self.manager = EventManager()
        super().setUp()

    def test_subscribe(self):
        self.assertEqual(len(self.manager.state), 0)
        self.manager.subscribe(ClusterCreatedEvent)
        assert len(self.manager.state) == 1
        assert len(self.manager.items) == 1
        assert len(self.manager.keys) == 1
        assert len(self.manager.values) == 1
        assert ClusterCreatedEvent.event_type in self.manager.state
        assert self.manager.state[
            ClusterCreatedEvent.event_type] == ClusterCreatedEvent

        # Adding the same event
        self.manager.subscribe(ClusterCreatedEvent)
        assert len(self.manager.state) == 1
        assert len(self.manager.items) == 1
        assert len(self.manager.items) == 1
        assert len(self.manager.keys) == 1
        assert len(self.manager.values) == 1

        # Adding new event
        self.manager.subscribe(ClusterUpdatedEvent)
        assert len(self.manager.state) == 2
        assert len(self.manager.items) == 2
        assert len(self.manager.items) == 2
        assert len(self.manager.keys) == 2
        assert len(self.manager.values) == 2

        # Adding new event with same event type
        class DummyEvent(ClusterCreatedEvent):
            pass

        with self.assertRaises(AssertionError):
            self.manager.subscribe(DummyEvent)

    def test_knows(self):
        assert self.manager.knows(
            event_type=ClusterCreatedEvent.event_type) is False
        self.manager.subscribe(ClusterCreatedEvent)
        assert self.manager.knows(
            event_type=ClusterCreatedEvent.event_type) is True

        # Adding same event
        self.manager.subscribe(ClusterCreatedEvent)
        assert self.manager.knows(
            event_type=ClusterCreatedEvent.event_type) is True

        # New event
        assert self.manager.knows(ClusterUpdatedEvent) is False
        self.manager.subscribe(ClusterUpdatedEvent)
        assert self.manager.knows(
            event_type=ClusterCreatedEvent.event_type) is True

    def test_get(self):
        assert self.manager.get(
            event_type=ClusterCreatedEvent.event_type) is None
        self.manager.subscribe(ClusterCreatedEvent)
        assert self.manager.get(
            event_type=ClusterCreatedEvent.event_type) == ClusterCreatedEvent

    def test_user_write_events(self):
        assert self.manager.user_write_events() == []
        self.manager.subscribe(ClusterCreatedEvent)
        assert self.manager.user_write_events() == []
        self.manager.subscribe(ExperimentViewedEvent)
        assert self.manager.user_write_events() == []
        self.manager.subscribe(ExperimentDeletedEvent)
        assert self.manager.user_write_events() == []
        self.manager.subscribe(ExperimentCreatedEvent)
        assert self.manager.user_write_events() == [
            ExperimentCreatedEvent.event_type
        ]

    def test_user_view_events(self):
        assert self.manager.user_view_events() == []
        self.manager.subscribe(ClusterCreatedEvent)
        assert self.manager.user_view_events() == []
        self.manager.subscribe(ExperimentCreatedEvent)
        assert self.manager.user_view_events() == []
        self.manager.subscribe(ExperimentCreatedEvent)
        assert self.manager.user_view_events() == []
        self.manager.subscribe(ExperimentDeletedEvent)
        assert self.manager.user_view_events() == []
        self.manager.subscribe(ExperimentViewedEvent)
        assert self.manager.user_view_events() == [
            ExperimentViewedEvent.event_type
        ]
Exemplo n.º 7
0
from events.event_manager import EventManager

default_manager = EventManager()
Exemplo n.º 8
0
 def __init__(self) -> None:
     EventManager.register(self)
Exemplo n.º 9
0
 def update(self, event: Event) -> None:
     if event.event_type == EventType.KEY_PRESS:
         if event.key == 'y':
             EventManager.post(ChangeScreenEvent('combat'))
Exemplo n.º 10
0
 def handle_mouse_click(self, pressed: bool) -> None:
     mouse_event = MouseClickEvent(position=pygame.mouse.get_pos(),
                                   pressed=pressed)
     EventManager.post(mouse_event)
Exemplo n.º 11
0
 def handle_keypress(self, key_name: str, pressed: bool) -> None:
     input_event = KeyPressEvent(key=key_name, pressed=pressed)
     EventManager.post(input_event)