#!/usr/bin/env python # -*- coding: utf-8 -*- import serial import serial.rs485 import sys import time import packet import string ser = None def read_and_print(sport, print_it=False): s = sport.read(6) barr = bytearray(s) ll = (barr[5]<<8) + barr[4] s2 = sport.read(ll+4) barr += bytearray(s2) #if print_it: #print('Rx:'), #for b in barr: #print(" %02x" % b), #print('') return barr def color_handling(s): b = bytearray(s) for idx in range(len(b)): if chr(b[idx]) == '`': b[idx+1] = int(chr(b[idx+1])) s=b.translate(None,'`') return s def send_packet(s): ser.rts = False # Set high... logic is inverted ser.write([s[0]]) for c in s[1:]: if c == 0xfe or c == 0xff: #print('escape') ser.write([0xfe]) ser.write([c]) time.sleep(.005) # Delay ser.rts = True # Set low... logic is inverted def test (string, print_it): time.sleep(.5) s = color_handling(string) # 6 rows instead of 7 now val = ' '*(6-len(s))+s send_packet(packet.set_targets(0x0001, val, print_it)) read_and_print(ser, print_it) send_packet(packet.arm(0x0001, print_it)) read_and_print(ser, print_it) send_packet(packet.go(0x0001, print_it)) read_and_print(ser, print_it) time.sleep(12) # 6 rows insteaad of 7 now for i in range(6): send_packet(packet.reg_read(0x0001, packet.REG_REV_COUNT_0+i, print_it)) res = read_and_print(ser, print_it) count = (res[9]<<8)+res[8] #print('%d,' % count), #print('%s,' % string) # 22 col instead of 23 now all_columns = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22] #all_columns = [1, 2, 3, 4, 5, 6, 7, 8] def init_all_columns(): for c in all_columns: send_packet(packet.reg_write(c, packet.REG_INDEX_ADJUST, 20)) read_and_print(ser) send_packet(packet.reg_write(c, packet.REG_ROTATE_NOP, 0)) read_and_print(ser) send_packet(packet.reg_write(c, packet.REG_ONE_REV_MIN, 0)) read_and_print(ser) #send_packet(packet.reg_write(c, packet.REG_FREQ_D, 5)) #read_and_print(ser) #send_packet(packet.reg_write(c, packet.REG_FREQ_N, 2)) #read_and_print(ser) def print_board(rows,print_it=True): if print_it: print('#'*24) for l in rows: # 22 col insteaed of 23 now print '#' + ('%-22s' % l) + '#' print('#'*24) for l in rows: print " ".join("{:02x}".format(ord(c)) for c in l) def setup_digits(strings, left_to_right_swap = False, real_hw=True): #print('string sent in app: %s') % strings #print('string length: %d') % len(strings) print_it = True # digits raw major # 22 col instead of 23 and 6 rows instead of now #drm = ['\x00'*22, '\x00'*22, '\x00'*22, '\x00'*22, '\x00'*22, '\x00'*22] drm = [' '*22, ' '*22, ' '*22, ' '*22, ' '*22, ' '*22] # 6 rows instead of 7 now offset = (6-len(strings))/2 max_len = 0 for idx in range(len(strings)): s = strings[idx] # 22 col instaed of 23 now s = color_handling(s)[:22] if left_to_right_swap: s = s[::-1] if len(s) > max_len: max_len = len(s) # 22 col insteaad of 23 now drm[offset+idx] = ('%-22s' % s) #print_board(drm) #print('Length of DRM: %d') % len(drm) for idx in range(len(drm)): #print('IDX: %d') % idx initial_length = len(drm[idx]) whitespace_number = drm[idx].count(' ') final_length = initial_length - whitespace_number left_side = (22-final_length)/2 #print('left side: %d') % left_side right_side = 22 - left_side - final_length #print('right side: %d') % right_side # 22 col instead of 23 now drm[idx] = drm[idx].replace(' ', '') drm[idx] = ('%-22s' % (('\x00'*(left_side)) + drm[idx] + ('\x00'*(right_side))))[:22] #print 'Rows: %d' % len(drm) #print 'Max Len: %d' % max_len #print_board(drm) # 6 row instead of 7 now while len(drm) < 6: # 22 col insteaad of 23 now drm.append('%-22s' % '\x00') # digits column major dcm = [] # 6 row instead of 7 now tups = zip(drm[0], drm[1], drm[2], drm[3], drm[4], drm[5]) #tups = zip(drm[0]) for t in tups: dcm.append(''.join(t)) #print('tups: %s') % tups if real_hw: for idx in range(len(all_columns)): #print 'idx: %d' % idx #print '>>>> [%d] %s' % (idx+1, dcm[idx][::-1]) ############################################################################################## send_packet(packet.set_targets(idx+1, dcm[idx][::-1], print_it)) read_and_print(ser, print_it) send_packet(packet.arm(idx+1, print_it)) read_and_print(ser, print_it) send_packet(packet.go(0x0001, print_it)) read_and_print(ser, print_it) #print('skipping stuff...') ############################################################################################## #else: #print tups def emc_blanks(): setup_digits(['`7`7`7`7`7`7`7`7`7`7`7`7`7`7`7`7`7`7`7`7`7`7', '`7`7`7`7`7`7`7`7`7`7`7`7`7`7`7`7`7`7`7`7`7`7', '`7`7`7`7`7`7`7`7`7`7`7`7`7`7`7`7`7`7`7`7`7`7', '`7`7`7`7`7`7`7`7`7`7`7`7`7`7`7`7`7`7`7`7`7`7', '`7`7`7`7`7`7`7`7`7`7`7`7`7`7`7`7`7`7`7`7`7`7', '`7`7`7`7`7`7`7`7`7`7`7`7`7`7`7`7`7`7`7`7`7`7'], left_to_right_swap=True) def blanks(): #for c in all_columns: # send_packet(packet.reg_write(c, packet.REG_FREQ_D, 8)) # read_and_print(ser) # send_packet(packet.reg_write(c, packet.REG_FREQ_N, 2)) # read_and_print(ser) setup_digits(['`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0', '`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0', '`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0', '`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0', '`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0', '`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0'], left_to_right_swap=True) #setup_digits(['', '', '', '', '', ''], left_to_right_swap=True) def test_long_blanks(): #for c in all_columns: # send_packet(packet.reg_write(c, packet.REG_FREQ_D, 8)) # read_and_print(ser) # send_packet(packet.reg_write(c, packet.REG_FREQ_N, 2)) # read_and_print(ser) setup_digits(['`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0', '`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0', '`0`0`0`0`0`0`0`0`0TEST`0`0`0`0`0`0`0`0`0', '`0`0`0`0`0LONG`0MESSAGE`0`0`0`0`0', '`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0', '`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0'], left_to_right_swap=False) #setup_digits(['', '', '', '', '', ''], left_to_right_swap=True) def test_rapid_blanks(): #for c in all_columns: # send_packet(packet.reg_write(c, packet.REG_FREQ_D, 8)) # read_and_print(ser) # send_packet(packet.reg_write(c, packet.REG_FREQ_N, 2)) # read_and_print(ser) setup_digits(['`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0', '`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0', '`0`0`0`0`0`0`0`0`0TSET`0`0`0`0`0`0`0`0`0', '`0`0`0NOISSECCUS`0DIPAR`0`0`0', '`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0', '`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0'], left_to_right_swap=True) #setup_digits(['', '', '', '', '', ''], left_to_right_swap=True) def test_check_blanks(): #for c in all_columns: # send_packet(packet.reg_write(c, packet.REG_FREQ_D, 8)) # read_and_print(ser) # send_packet(packet.reg_write(c, packet.REG_FREQ_N, 2)) # read_and_print(ser) setup_digits(['`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0', '`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0', '`0`0`0`0`0`0`0`0`0TSET`0`0`0`0`0`0`0`0`0', '`0`0`0`0`0`0KCEHC`0PALF`0`0`0`0`0`0', '`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0', '`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0'], left_to_right_swap=True) #setup_digits(['', '', '', '', '', ''], left_to_right_swap=True) def test_power_blanks(): setup_digits(['`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0', '`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0', '`0`0`0`0`0`0`0`0`0TSET`0`0`0`0`0`0`0`0`0', '`0`0`0`0`0`0WARD`0REWOP`0`0`0`0`0`0', '`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0', '`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0'], left_to_right_swap=True) def board_init_uart(): global ser #tty = '/dev/ttyUSB0' tty = '/dev/ttyAMA0' ser = serial.Serial(tty, 38400) #def main(ser, args): # init_all_columns() # # blanks() # time.sleep(15) # setup_digits(['vestaboard', 'welcome to', 't', 'e', 's', 't', '#'], left_to_right_swap=True) # time.sleep(15) # setup_digits(['colors `1`2`3', '`4`5`6 samples', '', '', '', '', ''], left_to_right_swap=True) # time.sleep(15) # setup_digits(['`0`1`2`3`4`5`6`5`4`3`2`1', '`6`5`4`3`2`1`0`1`2`3`4`5', '', '', '', '', ''], left_to_right_swap=True) # time.sleep(15) # blanks() # #if __name__ == '__main__': # tty = '/dev/ttyUSB0' # with serial.Serial(tty, 38400) as ser: # main(ser, sys.argv[1:])