|
@@ -4,179 +4,10 @@ import os
|
|
|
import sys
|
|
|
import serial
|
|
|
|
|
|
-
|
|
|
-class Alpha:
|
|
|
-
|
|
|
- modes = {
|
|
|
- "rotate": "a",
|
|
|
- "hold": "b",
|
|
|
- "flash": "c",
|
|
|
- "roll_up": "e",
|
|
|
- "roll_down": "f",
|
|
|
- "roll_left": "g",
|
|
|
- "roll_right": "h",
|
|
|
- "wipe_up": "i",
|
|
|
- "wipe_down": "j",
|
|
|
- "wipe_left": "k",
|
|
|
- "wipe_right": "l",
|
|
|
- "scroll": "m",
|
|
|
- "automode": "o",
|
|
|
- "roll_in": "p",
|
|
|
- "roll_out": "q",
|
|
|
- "wipe_in": "r",
|
|
|
- "wipe_out": "s",
|
|
|
- "compressed_rotate": "t",
|
|
|
- "explode": "u",
|
|
|
- "clock": "v",
|
|
|
-
|
|
|
- "twinkle": "n0",
|
|
|
- "sparkle": "n1",
|
|
|
- "snow": "n2",
|
|
|
- "interlock": "n3",
|
|
|
- "switch": "n4",
|
|
|
- "slide": "n5",
|
|
|
- "spray": "n6",
|
|
|
- "starburst": "n7",
|
|
|
- "welcome": "n8",
|
|
|
- "slot_machine": "n9",
|
|
|
- "news_flash": "nA",
|
|
|
- "trumpet_animation": "nb",
|
|
|
- "cycle_colors": "nC",
|
|
|
-
|
|
|
- "thank_you": "nS",
|
|
|
- "no_smoking": "nU",
|
|
|
- "dont_drive_drive": "nV",
|
|
|
- "running_animal": "nW",
|
|
|
- "fish_animation": "nW",
|
|
|
- "fireworks": "nX",
|
|
|
- "turbo_car": "nY",
|
|
|
- "balloon_animation": "nY",
|
|
|
- "cherry_bomb": "nZ",
|
|
|
- }
|
|
|
-
|
|
|
-
|
|
|
- positions = {
|
|
|
- "middle_line": "\x20",
|
|
|
- "top_line": "\x22",
|
|
|
- "bottom_line": "\x26",
|
|
|
- "fill": "\x30",
|
|
|
- "left": "\x31",
|
|
|
- "right": "\x32",
|
|
|
- }
|
|
|
-
|
|
|
-
|
|
|
- charsets = {
|
|
|
- "five_high_std": "1",
|
|
|
- "five_stroke": "2",
|
|
|
- "seven_high_std": "3",
|
|
|
- "seven_stroke": "4",
|
|
|
- "seven_high_fancy": "5",
|
|
|
- "ten_high_std": "6",
|
|
|
- "seven_shadow": "7",
|
|
|
- "full_height_fancy": "8",
|
|
|
- "full_height_std": "9",
|
|
|
- "seven_shadow_fancy": ":",
|
|
|
- "five_wide": ";",
|
|
|
- "seven_wide": "<",
|
|
|
- "seven_fancy_wide": "=",
|
|
|
- "wide_stroke_five": ">",
|
|
|
-
|
|
|
- "five_high_cust": "W",
|
|
|
- "seven_high_cust": "X",
|
|
|
- "ten_high_cust": "Y",
|
|
|
- "fifteen_high_cust": "Z",
|
|
|
- }
|
|
|
-
|
|
|
-
|
|
|
- extchars = {
|
|
|
- "up_arrow": "\x64",
|
|
|
- "down_arrow": "\x65",
|
|
|
- "left_arrow": "\x66",
|
|
|
- "right_arrow": "\x67",
|
|
|
- "pacman": "\x68",
|
|
|
- "sail_boat": "\x69",
|
|
|
- "ball": "\x6A",
|
|
|
- "telephone": "\x6B",
|
|
|
- "heart": "\x6C",
|
|
|
- "car": "\x6D",
|
|
|
- "handicap": "\x6E",
|
|
|
- "rhino": "\x6F",
|
|
|
- "mug": "\x70",
|
|
|
- "satellite_dish": "\x71",
|
|
|
- "copyright_symbol": "\x72",
|
|
|
- "male_symbol": "\x73",
|
|
|
- "female_symbol": "\x74",
|
|
|
- "bottle": "\x75",
|
|
|
- "diskette": "\x76",
|
|
|
- "printer": "\x77",
|
|
|
- "musical_note": "\x78",
|
|
|
- "infinity_symbol": "\x79",
|
|
|
- }
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
- counters = {
|
|
|
- 1: "z",
|
|
|
- 2: "{",
|
|
|
- 3: "|",
|
|
|
- 4: "}",
|
|
|
- 5: "-",
|
|
|
- }
|
|
|
-
|
|
|
-
|
|
|
- colors = {
|
|
|
- "red": "1",
|
|
|
- "green": "2",
|
|
|
- "amber": "3",
|
|
|
- "dim_red": "4",
|
|
|
- "dim_green": "5",
|
|
|
- "brown": "6",
|
|
|
- "orange": "7",
|
|
|
- "yellow": "8",
|
|
|
- "rainbow_1": "9",
|
|
|
- "rainbow_2": "A",
|
|
|
- "color_mix": "B",
|
|
|
- "autocolor": "C",
|
|
|
- }
|
|
|
-
|
|
|
-
|
|
|
- WRITE_TEXT = "A"
|
|
|
- READ_TEXT = "B"
|
|
|
- WRITE_SPECIAL = "E"
|
|
|
- READ_SPECIAL = "F"
|
|
|
- WRITE_STRING = "G"
|
|
|
- READ_STRING = "H"
|
|
|
- WRITE_SMALL_DOTS = "I"
|
|
|
- READ_SMALL_DOTS = "J"
|
|
|
- WRITE_RGB_DOTS = "K"
|
|
|
- READ_RGB_DOTS = "L"
|
|
|
- WRITE_LARGE_DOTS = "M"
|
|
|
- READ_LARGE_DOTS = "N"
|
|
|
- WRITE_ALPHAVISION = "O"
|
|
|
- SET_TIMEOUT = "T"
|
|
|
-
|
|
|
-
|
|
|
- NUL = "\x00"
|
|
|
- SOH = "\x01"
|
|
|
- STX = "\x02"
|
|
|
- ETX = "\x03"
|
|
|
- EOT = "\x04"
|
|
|
-
|
|
|
-
|
|
|
- BEL = "\x07"
|
|
|
- BS = "\x08"
|
|
|
- HT = "\x09"
|
|
|
- LF = "\x0A"
|
|
|
- NL = "\x0A"
|
|
|
- VT = "\x0B"
|
|
|
-
|
|
|
-
|
|
|
- CR = "\x0D"
|
|
|
- CAN = "\x18"
|
|
|
- SUB = "\x1A"
|
|
|
- ESC = "\x1B"
|
|
|
+import constants
|
|
|
|
|
|
|
|
|
+class Alpha:
|
|
|
def __init__(self, device="/dev/ttyS0"):
|
|
|
self.device = device
|
|
|
self.type = "Z"
|
|
@@ -206,8 +37,9 @@ class Alpha:
|
|
|
self._conn.close()
|
|
|
|
|
|
def _packet(self, contents):
|
|
|
- pkt = ("%s%s%s%s%s%s%s" % (self.NUL * 5, self.SOH, self.type, self.address,
|
|
|
- self.STX, contents, self.EOT))
|
|
|
+ pkt = ("%s%s%s%s%s%s%s" % (constants.NUL * 5, constants.SOH, self.type,
|
|
|
+ self.address, constants.STX, contents,
|
|
|
+ constants.EOT))
|
|
|
return pkt
|
|
|
|
|
|
def _write(self, packet):
|
|
@@ -220,9 +52,10 @@ class Alpha:
|
|
|
def write_text(self, msg, label="A"):
|
|
|
|
|
|
|
|
|
- packet = self._packet("%s%s%s%s%s%s" % (self.WRITE_TEXT, label, self.ESC,
|
|
|
- self.positions[self.position],
|
|
|
- self.modes[self.mode],
|
|
|
+ packet = self._packet("%s%s%s%s%s%s" % (constants.WRITE_TEXT, label,
|
|
|
+ constants.ESC,
|
|
|
+ constants.positions[self.position],
|
|
|
+ constants.modes[self.mode],
|
|
|
msg))
|
|
|
self._write(packet)
|
|
|
|
|
@@ -240,7 +73,7 @@ class Alpha:
|
|
|
string_size = 125
|
|
|
size_hex = "%04x" % string_size
|
|
|
packet = self._packet("%s%s%s%s%s%s%s%s%s%s%s%s%s" %
|
|
|
- (self.WRITE_SPECIAL, "\$",
|
|
|
+ (constants.WRITE_SPECIAL, "\$",
|
|
|
"A",
|
|
|
"A",
|
|
|
"U",
|
|
@@ -261,7 +94,7 @@ class Alpha:
|
|
|
data: data to write
|
|
|
label: STRING label to write
|
|
|
"""
|
|
|
- packet = self._packet("%s%s%s" % (self.WRITE_STRING, label, data))
|
|
|
+ packet = self._packet("%s%s%s" % (constants.WRITE_STRING, label, data))
|
|
|
self._write(packet)
|
|
|
|
|
|
def call_string(self, string_label="1"):
|
|
@@ -325,7 +158,7 @@ class Alpha:
|
|
|
def clear_memory(self):
|
|
|
"""Clear the sign's memory.
|
|
|
"""
|
|
|
- packet = self._packet("%s%s" % (self.WRITE_SPECIAL, "$"))
|
|
|
+ packet = self._packet("%s%s" % (constants.WRITE_SPECIAL, "$"))
|
|
|
self._write(packet)
|
|
|
|
|
|
def beep(self, frequency=0, duration=0.1, repeat=0):
|
|
@@ -352,7 +185,7 @@ class Alpha:
|
|
|
elif repeat > 15:
|
|
|
repeat = 15
|
|
|
|
|
|
- packet = self._packet("%s%s%02X%X%X" % (self.WRITE_SPECIAL, "(2",
|
|
|
+ packet = self._packet("%s%s%02X%X%X" % (constants.WRITE_SPECIAL, "(2",
|
|
|
frequency, duration, repeat))
|
|
|
self._write(packet)
|
|
|
|
|
@@ -361,7 +194,7 @@ class Alpha:
|
|
|
|
|
|
This is non-destructive and does not clear the sign's memory.
|
|
|
"""
|
|
|
- packet = self._packet("%s%s" % (self.WRITE_SPECIAL, ","))
|
|
|
+ packet = self._packet("%s%s" % (constants.WRITE_SPECIAL, ","))
|
|
|
self._write(packet)
|
|
|
|
|
|
def set_day(self, day=None):
|
|
@@ -374,7 +207,7 @@ class Alpha:
|
|
|
"""
|
|
|
if day is None or day < 1 or day > 7:
|
|
|
day = datetime.datetime.today().weekday() + 1
|
|
|
- packet = self._packet("%s%s%s" % (self.WRITE_SPECIAL, "&", day))
|
|
|
+ packet = self._packet("%s%s%s" % (constants.WRITE_SPECIAL, "&", day))
|
|
|
self._write(packet)
|
|
|
|
|
|
def set_date(self, year=None, month=None, day=None):
|
|
@@ -397,8 +230,8 @@ class Alpha:
|
|
|
if day is None:
|
|
|
day = today.day
|
|
|
|
|
|
- packet = self._packet("%s%s%02d%02d%02d" % (self.WRITE_SPECIAL, ";",
|
|
|
- year, month, day))
|
|
|
+ packet = self._packet("%s%s%02d%02d%02d" % (constants.WRITE_SPECIAL, ";",
|
|
|
+ year, month, day))
|
|
|
self._write(packet)
|
|
|
|
|
|
def set_time(self, hour=None, minute=None):
|
|
@@ -416,8 +249,8 @@ class Alpha:
|
|
|
if minute is None:
|
|
|
minute = now.minute
|
|
|
|
|
|
- packet = self._packet("%s%s%02d%02d" % (self.WRITE_SPECIAL, "\x20",
|
|
|
- hour, minute))
|
|
|
+ packet = self._packet("%s%s%02d%02d" % (constants.WRITE_SPECIAL, "\x20",
|
|
|
+ hour, minute))
|
|
|
self._write(packet)
|
|
|
|
|
|
def set_time_format(self, format=1):
|
|
@@ -430,7 +263,7 @@ class Alpha:
|
|
|
if format < 0 or format > 1:
|
|
|
format = 1
|
|
|
byte = (format == 0) and "S" or "M"
|
|
|
- packet = this._packet("%s%s%s" % (self.WRITE_SPECIAL, "\x27", byte))
|
|
|
+ packet = this._packet("%s%s%s" % (constants.WRITE_SPECIAL, "\x27", byte))
|
|
|
self._write(packet)
|
|
|
|
|
|
def color(self, color="autocolor"):
|
|
@@ -442,9 +275,9 @@ class Alpha:
|
|
|
Returns:
|
|
|
FIXME
|
|
|
"""
|
|
|
- if color not in self.colors:
|
|
|
+ if color not in constants.colors:
|
|
|
color = "autocolor"
|
|
|
- return "%s%s" % ("\x1C", self.colors[color])
|
|
|
+ return "%s%s" % ("\x1C", constants.colors[color])
|
|
|
|
|
|
def charset(self, charset="five_high_std"):
|
|
|
"""Returns control code for a specified character set.
|
|
@@ -455,9 +288,9 @@ class Alpha:
|
|
|
Returns:
|
|
|
FIXME
|
|
|
"""
|
|
|
- if charset not in self.charsets:
|
|
|
+ if charset not in constants.charsets:
|
|
|
charset = "five_high_std"
|
|
|
- return "%s%s" % ("\x1A", self.charsets[charset])
|
|
|
+ return "%s%s" % ("\x1A", constants.charsets[charset])
|
|
|
|
|
|
def extchar(self, extchar="left_arrow"):
|
|
|
"""Returns control code for a specified extended character.
|
|
@@ -468,9 +301,9 @@ class Alpha:
|
|
|
Returns:
|
|
|
FIXME
|
|
|
"""
|
|
|
- if extchar not in self.extchars:
|
|
|
+ if extchar not in constants.extchars:
|
|
|
extchar = "left_arrow"
|
|
|
- return "%s%s" % ("\x08", self.extchars[extchar])
|
|
|
+ return "%s%s" % ("\x08", constants.extchars[extchar])
|
|
|
|
|
|
def spacing(self, option=0):
|
|
|
"""Returns control code to set the character spacing.
|
|
@@ -502,17 +335,3 @@ class Alpha:
|
|
|
n = 20 + speed
|
|
|
return chr(n)
|
|
|
|
|
|
-
|
|
|
-def main():
|
|
|
- sign = Alpha("/dev/rfcomm0")
|
|
|
- sign.debug = True
|
|
|
- sign.connect()
|
|
|
-
|
|
|
- sign.clear_memory()
|
|
|
- sign.soft_reset()
|
|
|
-
|
|
|
- sign.disconnect()
|
|
|
-
|
|
|
-
|
|
|
-if __name__ == "__main__":
|
|
|
- main()
|