コード例 #1
0
def find_lamp_address(interface, addresses):
    acabsl_interface.sendSetColor(0, 0, 0, 0, interface)
    red_addresses, green_addresses = half(addresses)
    blue_addresses = []

    print 'Looking for the lamp\'s address. Press Q to abort.'
    abort = False

    while not abort:
        set_lamps(red_addresses, interface, 255, 0, 0)
        set_lamps(green_addresses, interface, 0, 255, 0)
        set_lamps(blue_addresses, interface, 0, 0, 0)

        result = raw_input("Which color does the lamp have? (r,g,b): ")
        if result == 'r' and len(red_addresses) == 1:
            return red_addresses[0]
        if result == 'r' and len(red_addresses) > 0:
            blue_addresses += green_addresses
            red_addresses, green_addresses = half(red_addresses)
            continue

        if result == 'g' and len(green_addresses) == 1:
            return green_addresses[0]
        if result == 'g' and len(green_addresses) > 0:
            blue_addresses += red_addresses
            red_addresses, green_addresses = half(green_addresses)
            continue

        if result != '' and result in 'rgb':
            print "There was an error: The lamp should not have this color"
            abort = True

        if result == 'Q':
            abort = True

    print "Aborting."
    return None
コード例 #2
0
def find_lamp_address(interface, addresses):
    acabsl_interface.sendSetColor(0, 0, 0, 255, interface)
    red_addresses, green_addresses = half(addresses)
    blue_addresses = []
    
    print 'Looking for the lamp\'s address. Press Q to abort'
    abort = False

    while not abort:
        set_lamps(red_addresses, interface, 255, 0, 0)
        set_lamps(green_addresses, interface, 0, 255, 0)
        set_lamps(blue_addresses, interface, 0, 0, 255)

        result = raw_input("Which color does the lamp have? (r,g,b): ")
        if result == 'r' and len(red_addresses) == 1:
            return red_addresses[0]
        if result == 'r' and len(red_addresses) > 0:
            blue_addresses += green_addresses
            red_addresses, green_addresses = half(red_addresses)
            continue

        if result == 'g' and len(green_addresses) == 1:
            return green_addresses[0]
        if result == 'g' and len(green_addresses) > 0:
            blue_addresses += red_addresses
            red_addresses, green_addresses = half(green_addresses)
            continue
    
        if result != '' and result in  'rgb':
            print "There was an error: The lamp ahould not have this color"
            abort = True
        
        if result == 'Q':
            abort = True

    print "Aborting."
    return None
コード例 #3
0
def set_lamps(addresses, interface, r, g, b):
    for address in addresses:
        acabsl_interface.sendSetColor(address, r, g, b, interface)
コード例 #4
0
def set_interfaces(interfaces, r, g, b):
    for interface in interfaces:
        acabsl_interface.sendSetColor(0, r, g, b, interface)
コード例 #5
0
max_address = get_number("Please enter the smallest lamp address (in hexadecimal)[90]: ", 16, 0x90)
print "Tested address range: %02X - %02X (%d addresses)"%(min_address, max_address, max_address-min_address+1)

addresses = range(min_address, max_address+1)

matrix = [[None for x in range(xsize)] for y in range(ysize)]

def get_first_unknown_index(matrix):
    for x in range(len(matrix[0])):
        for y in range(len(matrix)):
            if matrix[y][x] == None:
                return (x,y)
    return None, None

for interface in interfaces:
    acabsl_interface.sendSetColor(0, 0, 0, 0, interface)

def half(l):
    return l[0:(len(l)+1)/2], l[(len(l)+1)/2:]

def set_interfaces(interfaces, r, g, b):
    for interface in interfaces:
        acabsl_interface.sendSetColor(0, r, g, b, interface)

def set_lamps(addresses, interface, r, g, b):
    for address in addresses:
        acabsl_interface.sendSetColor(address, r, g, b, interface)

def find_interface(interfaces):
    set_interfaces(interfaces, 0, 0, 255)
    red_interfaces, green_interfaces = half(interfaces)
コード例 #6
0
def set_all_lamps(r,g,b):
    global interfaces
    if verbose:
        print "(all)->(%d,%d,%d)"%(r,g,b)
    for interface in interfaces:
        acabsl_interface.sendSetColor(0, r, g, b, interface)
コード例 #7
0
serials = os.listdir(path)

if len(serials) == 0:
    print "Found no devices. Aborting."
    sys.exit(1)

print "Found %d serials."%len(serials)

serials = [path+'/'+serial for serial in serials]
interfaces = range(len(serials))

matrix = []
acabsl_interface.init(serials, interfaces, matrix)

def set_lamp((interface,address), r, g, b):
    acabsl_interface.sendSetColor(address, r, g, b, interface)
    if verbose:
        print "(%d,%d)->(%d,%d,%d)"%(interface,address,r,g,b)

def set_all_lamps(r,g,b):
    global interfaces
    if verbose:
        print "(all)->(%d,%d,%d)"%(r,g,b)
    for interface in interfaces:
        acabsl_interface.sendSetColor(0, r, g, b, interface)


sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
sock.bind((UDP_IP,UDP_PORT))

print "Listening on %s:%d..."%(UDP_IP,UDP_PORT)
コード例 #8
0
def set_known_addresses(r, g, b):
    for x in range(len(matrix[0])):
        for y in range(len(matrix)):
            if matrix[y][x] != None and matrix[y][x] != (None, None):
                acabsl_interface.sendSetColor(matrix[y][x][0], r, g, b,
                                              matrix[y][x][1])
コード例 #9
0
def set_lamps(addresses, interface, r, g, b):
    for address in addresses:
        acabsl_interface.sendSetColor(address, r, g, b, interface)
コード例 #10
0
def set_interfaces(interfaces, r, g, b):
    for interface in interfaces:
        acabsl_interface.sendSetColor(0, r, g, b, interface)
コード例 #11
0
            if matrix[y][x] != None:
                last_good = (x, y)

    if last_good == None:
        return 0, 0

    next_bad = (last_good[0], last_good[1] + 1)

    if next_bad[1] == ysize:
        next_bad[0] += 1
        next_bad[1] = 0
    return next_bad


for interface in interfaces:
    acabsl_interface.sendSetColor(0, 0, 0, 0, interface)


def half(l):
    return l[0:(len(l) + 1) / 2], l[(len(l) + 1) / 2:]


def set_interfaces(interfaces, r, g, b):
    for interface in interfaces:
        acabsl_interface.sendSetColor(0, r, g, b, interface)


def set_lamps(addresses, interface, r, g, b):
    for address in addresses:
        acabsl_interface.sendSetColor(address, r, g, b, interface)
コード例 #12
0
def set_known_addresses(r, g, b):
    for x in range(len(matrix[0])):
        for y in range(len(matrix)):
            if matrix[y][x] != None and matrix[y][x] != (None, None):
                acabsl_interface.sendSetColor(matrix[y][x][0], r, g, b, matrix[y][x][1])
コード例 #13
0
        for y in range(len(matrix)):
            if matrix[y][x] != None:
                last_good = (x,y)
    
    if last_good == None:
        return 0, 0
    
    next_bad = (last_good[0], last_good[1] + 1)
    
    if next_bad[1] == ysize:
        next_bad[0]+=1
        next_bad[1]=0
    return next_bad

for interface in interfaces:
    acabsl_interface.sendSetColor(0, 0, 0, 0, interface)

def half(l):
    return l[0:(len(l)+1)/2], l[(len(l)+1)/2:]

def set_interfaces(interfaces, r, g, b):
    for interface in interfaces:
        acabsl_interface.sendSetColor(0, r, g, b, interface)

def set_lamps(addresses, interface, r, g, b):
    for address in addresses:
        acabsl_interface.sendSetColor(address, r, g, b, interface)

def set_known_addresses(r, g, b):
    for x in range(len(matrix[0])):
        for y in range(len(matrix)):