diff --git a/mapping/main.py b/mapping/main.py index 2c003db0447057ae808006b7c1fff96f10abfcb3..f2b33f04ab165d7106ad68ee7482db43c73973ac 100644 --- a/mapping/main.py +++ b/mapping/main.py @@ -1,6 +1,26 @@ id = [0,0] matsize = [0, 0] +def color16_to_32(color): + color = int(color) + r = ((color >> 11) & 0xFF) * 2**3 + g = ((color >> 5) & 0xFF) * 2**2 + b = (color & 0xFF) * 2**3 + return r << 16 | g << 8 | b + +def disp_img_data(data): + for i in range(NBR_LIGNES): + for j in range(NBR_COLONNES): + allumer_led(i, j, data[i * NBR_LIGNES + j]) + +def data_to_color16(data): + d_color16 = [] + + for i in range(0, len(data), 2): + d_color16.append(data[i] << 8 | data[i+1]) + + return list(map(color16_to_32, d_color16)) + def display_id(): afficher_texte("{}, {}".format(id[0], id[1]), speed=0.01) @@ -53,12 +73,12 @@ def update_id(new_id): envoyer_msg(E, "SET_ID:{},{}".format(id[0] + 1, id[1])) if not check_presence(N) and not check_presence(E): - send_xy(0, 0, "MATSIZE:{},{}".format(id[0], id[1])) + send_xy(0, 0, "MATSIZE;{},{}".format(id[0], id[1])) display_id() -def handle_receive(msg, d): +def handle_receive(msg, msg_bytes, d): print("Received from {} : {}".format(d, msg)) @@ -82,13 +102,14 @@ def handle_receive(msg, d): y = int(y) if x == id[0] and y == id[1]: - handle_receive(m, d) + handle_receive(m, msg_bytes[7:], d) return + print("sending passthrough to {},{}: {}".format(x,y,m)) send_passthrough(m, x, y) elif msg.startswith("MATSIZE"): - x, y = msg.split(":")[-1].split(",") + x, y = msg.split(";")[-1].split(",") print("Matsize : {} {}".format(x, y)) matsize = [int(x), int(y)] @@ -108,6 +129,10 @@ def handle_receive(msg, d): send_moving_xy(id[0] - 1, id[1], text, color=color, speed=speed) afficher_texte(text, color, speed) + elif msg.startswith("IMAGE"): + print("IMAGE LEN : {}".format(len(msg_bytes[6:]))) + img = data_to_color16(msg_bytes[6:]) + disp_img_data(img) # send_text_xy(1,0,text,speed=speed);time.sleep(speed*13);afficher_texte(text,speed=speed) @@ -119,9 +144,9 @@ afficher_texte("Ready", VERT, speed=0.01) while True: for d in [N, S, E, O]: - msg = recevoir_msg(d) + msg_bytes = recevoir_msg(d) - if msg == b"": continue + if msg_bytes == b"": continue - msg = msg_to_str(msg) - handle_receive(msg, d) + msg = msg_to_str(msg_bytes) + handle_receive(msg, msg_bytes, d)