133 lines
4.0 KiB
Python
133 lines
4.0 KiB
Python
#!/usr/bin/env python
|
|
|
|
import serial
|
|
import serial.rs485
|
|
import sys
|
|
import time
|
|
import packet
|
|
|
|
def read_and_print(sport, print_it=True):
|
|
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, print_it=True):
|
|
ser.rts = False # Set high... logic is inverted
|
|
ser.write([s[0]])
|
|
for c in s[1:]:
|
|
if c == 0xfe or c == 0xff:
|
|
if print_it:
|
|
print('escape')
|
|
ser.write([0xfe])
|
|
ser.write([c])
|
|
time.sleep(.005) # This delay seems to work...
|
|
ser.rts = True # Set low... logic is inverted
|
|
|
|
def test_setup_color (print_it):
|
|
string = '`1`1`1`1`1`1'
|
|
time.sleep(.5)
|
|
# 22 columns instead of 23 now
|
|
for c in [1, 2, 3, 16, 17, 18, 19, 20, 21, 22]:
|
|
#for c in [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22]:
|
|
#for c in [1, 2, 3, 4, 5, 6, 7, 8]:
|
|
s = color_handling(string)
|
|
# 6 rows instead of 7 now
|
|
val = ' '*(6-len(s))+s
|
|
send_packet(packet.set_targets(c, val, print_it))
|
|
read_and_print(ser, print_it)
|
|
|
|
send_packet(packet.arm(c, print_it))
|
|
read_and_print(ser, print_it)
|
|
|
|
def test_setup (string, print_it):
|
|
time.sleep(.5)
|
|
# 22 col instead of 23 now
|
|
for c in [1, 2, 3, 16, 17, 18, 19, 20, 21, 22]:
|
|
#for c in [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22]:
|
|
#for c in [1, 2, 3, 4, 5, 6, 7, 8]:
|
|
s = color_handling(string)
|
|
# 6 rows instead of 7 now
|
|
val = ' '*(6-len(s))+s
|
|
send_packet(packet.set_targets(c, val, print_it))
|
|
read_and_print(ser, print_it)
|
|
|
|
send_packet(packet.arm(c, print_it))
|
|
read_and_print(ser, print_it)
|
|
|
|
|
|
def go_all(string, print_it):
|
|
send_packet(packet.go(0x0001, print_it))
|
|
read_and_print(ser, print_it)
|
|
|
|
time.sleep(12)
|
|
# 22 rows instead of 23 now
|
|
for c in [1, 2, 3, 16, 17, 18, 19, 20, 21, 22]:
|
|
#for c in [1, 2, 3, 4, 5, 6, 7, 8]:
|
|
print('c#%d] ' % c),
|
|
# 6 rows instead of 7 now
|
|
for i in range(6):
|
|
send_packet(packet.reg_read(c, packet.REG_REV_COUNT_0+i, print_it))
|
|
res = read_and_print(ser, print_it)
|
|
count = (res[9]<<8)+res[8]
|
|
print('%d,' % count),
|
|
|
|
send_packet(packet.reg_read(c, packet.REG_ZERO_NOISE, print_it))
|
|
res = read_and_print(ser, print_it)
|
|
count = (res[9]<<8)+res[8]
|
|
print('z %d, ' % count),
|
|
print('%s,' % string)
|
|
|
|
def main(ser, args):
|
|
|
|
print_it = False
|
|
print "Initial setup..."
|
|
for c in [1, 2, 3, 16, 17, 18, 19, 20, 21, 22]:
|
|
#for c in [7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22]:
|
|
#for c in [1, 2, 3, 4, 5, 6, 7, 8]:
|
|
send_packet(packet.reg_write(c, packet.REG_INDEX_ADJUST, 20))
|
|
read_and_print(ser, print_it)
|
|
send_packet(packet.reg_write(c, packet.REG_ROTATE_NOP, 1))
|
|
read_and_print(ser, print_it)
|
|
send_packet(packet.reg_write(c, packet.REG_ONE_REV_MIN, 1))
|
|
read_and_print(ser, print_it)
|
|
send_packet(packet.reg_write(c, packet.REG_FREQ_D, 3))
|
|
read_and_print(ser, print_it)
|
|
###send_packet(packet.reg_write(c, packet.REG_FREQ_N, 6))
|
|
###read_and_print(ser, print_it)
|
|
print "done."
|
|
|
|
for c in 'zyxwvutsrqponmlkjihgfedcba'[::-1]:
|
|
print "Loop"
|
|
# 6 rows instead of 7 now
|
|
sval = c * 6
|
|
print "Setup..."
|
|
test_setup(sval, True)
|
|
#test_setup_color(False)
|
|
print "Setup done"
|
|
print "Go..."
|
|
go_all(sval, True)
|
|
print "Go Done"
|
|
|
|
if __name__ == '__main__':
|
|
tty = '/dev/ttyAMA0'
|
|
with serial.Serial(tty, 38400) as ser:
|
|
ser.rts = False # Setting it to high... the logic is inverted.
|
|
main(ser, sys.argv[1:])
|