From c04dc20af65245b38039cc488025833954c97d8a Mon Sep 17 00:00:00 2001 From: Lucca Ketterer Date: Mon, 8 Jun 2020 00:59:51 +0200 Subject: [PATCH] idk ... stuff happend ... is working better now --- client/client.py | 26 ++++++++++++++++++++++---- server/led_controll.py | 2 ++ server/server.py | 19 ++++++++++--------- 3 files changed, 34 insertions(+), 13 deletions(-) mode change 100644 => 100755 client/client.py diff --git a/client/client.py b/client/client.py old mode 100644 new mode 100755 index 405766d..ba3c305 --- a/client/client.py +++ b/client/client.py @@ -1,3 +1,4 @@ +#!/usr/bin/env python3 import socket import getopt import sys @@ -13,7 +14,6 @@ def disconnect(): client_socket.close() # close the connection def send(data): - #validate data. should be hex color client_socket.send(data.encode()) # send message def helpmenu(): @@ -23,11 +23,26 @@ def helpmenu(): print("-v visualizer()") def visualizer(): - with subprocess.Popen(["cava", "-p", "./config"], stdout=subprocess.PIPE) as cava: - print(cava.stdout.readlines()) + cava = subprocess.Popen(["cava", "-p", "./config"], stdout=subprocess.PIPE) + sed = subprocess.Popen(["sed", "-u", "s/;.*;$//"], stdin=cava.stdout, stdout=subprocess.PIPE) + subprocess.Popen([sys.argv[0]], stdin=sed.stdout, shell=True) + cava.stdout.close() + sed.stdout.close() +def rgb_to_hex(r,g,b): + return "%02x%02x%02x" % (r,g,b) def main(argv): + + if not sys.stdin.isatty(): + connect(server_IP) + for volume in sys.stdin: + volume = int(volume) + hex_color = rgb_to_hex(volume,0,0) + send(hex_color) + print(hex_color) + sys.exit() + try: opts, args = getopt.getopt(argv, "s:vh") except getopt.GetoptError: @@ -42,10 +57,13 @@ def main(argv): elif opt == "-s": connect(server_IP) send(arg) + sys.exit() elif opt == "-v": - connect(server_IP) visualizer() + sys.exit() + helpmenu() + sys.exit() if __name__ == "__main__": main(sys.argv[1:]) \ No newline at end of file diff --git a/server/led_controll.py b/server/led_controll.py index f965ce1..124d866 100755 --- a/server/led_controll.py +++ b/server/led_controll.py @@ -35,8 +35,10 @@ def main(argv): sys.exit() elif opt == "-c": color_mode.color_cycle(arg) + sys.exit() elif opt == "-d": server.start() + sys.exit() helpmenu() sys.exit() diff --git a/server/server.py b/server/server.py index d6f604f..ccb7cba 100644 --- a/server/server.py +++ b/server/server.py @@ -19,14 +19,15 @@ def start(): conn, address = server_socket.accept() # accept new connection print("Connection from: " + str(address)) # receive data stream. it won't accept data packet greater than 1024 bytes - data = conn.recv(1024).decode() - if not data: - print("Disconnected: " + str(address)) - break - if validate_data(data): - r,g,b = ws2801.hex_to_rgb(data) - ws2801.set_color(r,g,b) - else: - print("incorrect format. use hex color code.") + while True: + data = conn.recv(1024).decode() + if not data: + print("Disconnected: " + str(address)) + break + if validate_data(data): + r,g,b = ws2801.hex_to_rgb(data) + ws2801.set_color(r,g,b) + else: + print("incorrect format. use hex color code.") conn.close() # close the connection