229 lines
8.9 KiB
Python
229 lines
8.9 KiB
Python
#!/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:])
|