Пример #1
0
    def test_text_to_mapping(self):
        mapping = TextToSegmentMapper.map_text_to_segments("1337.23",
                                                           10,
                                                           bcd_segments,
                                                           embed_dots=True)
        self.assertEqual([
            bcd_segments[None],
            bcd_segments[None],
            bcd_segments[None],
            bcd_segments[None],
            bcd_segments[ord("1")],
            bcd_segments[ord("3")],
            bcd_segments[ord("3")],
            bcd_segments[ord("7")].copy_with_dp_on(),
            bcd_segments[ord("2")],
            bcd_segments[ord("3")],
        ], mapping)

        mapping = TextToSegmentMapper.map_text_to_segments("1337.23",
                                                           4,
                                                           bcd_segments,
                                                           embed_dots=True)
        self.assertEqual([
            bcd_segments[ord("3")],
            bcd_segments[ord("7")].copy_with_dp_on(),
            bcd_segments[ord("2")],
            bcd_segments[ord("3")],
        ], mapping)
Пример #2
0
    def _update_text(self):
        # iterate lights and chars
        mapped_text = TextToSegmentMapper.map_segment_text_to_segments_with_color(
            self._current_text, len(self._lights), self._segment_map)

        for char, lights_for_char in zip(mapped_text, self._lights):
            for name, light in lights_for_char.items():
                if getattr(char[0], name):
                    light.color(color=char[1], key=self._key)
                else:
                    light.remove_from_stack_by_key(key=self._key)
Пример #3
0
    def _format_text(self, text):
        if self._type_of_display == 1:
            mapping = TextToSegmentMapper.map_text_to_segments(text, self._length_of_display, bcd_segments,
                                                               embed_dots=False)
            result = map(lambda x: x.get_x4x3x2x1_encoding(), mapping)
        elif self._type_of_display == 2:
            mapping = TextToSegmentMapper.map_text_to_segments(text, self._length_of_display, bcd_segments)
            result = map(lambda x: x.get_dpx4x3x2x1_encoding(), mapping)
        elif self._type_of_display == 3:
            mapping = TextToSegmentMapper.map_text_to_segments(text, self._length_of_display, seven_segments)
            result = map(lambda x: x.get_dpgfeabcd_encoding(), mapping)
        elif self._type_of_display == 4:
            mapping = TextToSegmentMapper.map_text_to_segments(text, self._length_of_display, fourteen_segments)
            result = map(lambda x: x.get_apc_encoding(), mapping)
        elif self._type_of_display == 5:
            mapping = TextToSegmentMapper.map_text_to_segments(text, self._length_of_display, ascii_segments,
                                                               embed_dots=False)
            result = map(lambda x: x.get_ascii_encoding(), mapping)
        elif self._type_of_display == 6:
            mapping = TextToSegmentMapper.map_text_to_segments(text, self._length_of_display, ascii_segments)
            result = map(lambda x: x.get_ascii_with_dp_encoding(), mapping)
        else:
            raise AssertionError("Invalid type {}".format(self._type_of_display))

        return b''.join(result)
Пример #4
0
    def _set_text(self, text: ColoredSegmentDisplayText) -> None:
        """Set text to VPE segment displays."""
        assert not text.embed_commas
        mapping = TextToSegmentMapper.map_segment_text_to_segments(
            text, self.length_of_display, FOURTEEN_SEGMENTS)
        result = map(lambda x: x.get_vpe_encoding(), mapping)
        command = platform_pb2.Commands()
        command.segment_display_frame_request.name = self.number
        command.segment_display_frame_request.frame = b''.join(result)
        command.segment_display_frame_request.colors.extend([
            SetSegmentDisplayFrameRequest.SegmentDisplayColor(
                r=color.red / 255.0,
                b=color.blue / 255.0,
                g=color.green / 255.0) for color in text.get_colors()
        ])

        self.platform.send_command(command)