예제 #1
0
파일: base.py 프로젝트: zarya/alphasign
    def beep(self, frequency=0, duration=0.1, repeat=0):
        """Make the sign beep.

    :param frequency: frequency integer (not in Hz), 0 - 254
    :param duration: beep duration, 0.1 - 1.5
    :param repeat: number of times to repeat, 0 - 15

    :rtype: None
    """
        if frequency < 0:
            frequency = 0
        elif frequency > 254:
            frequency = 254

        duration = int(duration / 0.1)
        if duration < 1:
            duration = 1
        elif duration > 15:
            duration = 15

        if repeat < 0:
            repeat = 0
        elif repeat > 15:
            repeat = 15

        pkt = packet.Packet(
            "%s%s%02X%X%X" %
            (constants.WRITE_SPECIAL, "(2", frequency, duration, repeat))
        self.write(pkt)
예제 #2
0
파일: base.py 프로젝트: zarya/alphasign
    def clear_memory(self):
        """Clear the sign's memory.

    :rtype: None
    """
        pkt = packet.Packet("%s%s" % (constants.WRITE_SPECIAL, "$"))
        self.write(pkt)
        time.sleep(1)
예제 #3
0
파일: base.py 프로젝트: zarya/alphasign
    def soft_reset(self):
        """Perform a soft reset on the sign.

    This is non-destructive and does not clear the sign's memory.

    :rtype: None
    """
        pkt = packet.Packet("%s%s" % (constants.WRITE_SPECIAL, ","))
        self.write(pkt)
예제 #4
0
파일: base.py 프로젝트: zarya/alphasign
    def set_run_sequence(self, files, locked=False):
        """Set the run sequence on the device.

    This determines the order in which the files are displayed on the device, if
    at all. This is useful when handling multiple TEXT files.

    :param files: list of file objects (:class:`alphasign.text.Text`,
                                        :class:`alphasign.string.String`, ...)
    :param locked: allow sequence to be changed with IR keyboard

    :rtype: None
    """
        seq_str = ".T"
        seq_str += locked and "L" or "U"
        for obj in files:
            seq_str += obj.label
        pkt = packet.Packet("%s%s" % (constants.WRITE_SPECIAL, seq_str))
        self.write(pkt)
예제 #5
0
파일: base.py 프로젝트: zarya/alphasign
    def allocate(self, files):
        """Allocate a set of files on the device.

    :param files: list of file objects (:class:`alphasign.text.Text`,
                                        :class:`alphasign.string.String`, ...)

    :rtype: None
    """
        seq = ""
        for obj in files:
            size_hex = "%04X" % obj.size
            # format: FTPSIZEQQQQ

            if type(obj) == alphasign.string.String:
                file_type = "B"
                qqqq = "0000"  # unused for strings
                lock = constants.LOCKED
            else:  # if type(obj) == alphasign.text.Text:
                file_type = "A"
                qqqq = "FFFF"  # TODO(ms): start/end times
                lock = constants.UNLOCKED

            alloc_str = (
                "%s%s%s%s%s" % (
                    obj.label,  # file label to allocate
                    file_type,  # file type
                    lock,
                    size_hex,  # size in hex
                    qqqq))
            seq += alloc_str

        # allocate special TARGET TEXT files 1 through 5
        for i in range(5):
            alloc_str = (
                "%s%s%s%s%s" % (
                    "%d" % (i + 1),
                    "A",  # file type
                    constants.UNLOCKED,
                    "%04X" % 100,
                    "FEFE"))
            seq += alloc_str

        pkt = packet.Packet("%s%s%s" % (constants.WRITE_SPECIAL, "$", seq))
        self.write(pkt)