# import serial.tools.list_ports   #pip install pyserial

import serial
from datetime import datetime
import json

# Configure the COM port
port = "COM8"  # Replace with the appropriate COM port name
baudrate = 9600
# baudrate = 19200
PATH = "D:\\timer_basketball.json"



def save_log(name, data):
    current_time = datetime.now().strftime("%d-%m-%Y %H:%M:%S.%f")
    message_with_time = f"[{current_time}] {data}"
    with open(name, "a") as file:
        file.write(message_with_time + "\n")


def read_logs():
    import time

    with open("logs_megasport_formatted.txt", "r") as file:
        for line in file:
            parts = line.strip().split("] ")
            if len(parts) == 2:
                timestamp = parts[0][1:]
                data = parts[1]
                parse(eval(data))

                input()
                # if len(eval(data)) > 30 and eval(data)[-7] == "00":
                #     time.sleep(0.1)
                # else:
                #     time.sleep(1)


def parse(data_formatted):
    print(len(data_formatted))
    if len(data_formatted) > 8:
        print(data_formatted)
    with open(PATH, "r", encoding="utf-8") as f:
        new_data = json.load(f)
    new_data = new_data[0]



def main():
    try:
        # Open the COM port
        ser = serial.Serial(port, baudrate=baudrate)
        print("Serial connection established.")

        while True:
            line = ser.readline()
            line = list(line)
            line = [str(hex_value // 16) + str(hex_value % 16) for hex_value in line]
            save_log("logs_balashikha_formatted.txt", line)
            print(line)

    except serial.SerialException as se:
        print("Serial port error:", str(se))

    except KeyboardInterrupt:
        exit(1)

    finally:
        if ser.is_open:
            ser.close()
            print("Serial connection closed.")


if __name__ == "__main__":
    # new_data = {
    #     "timeGFX": "0:00",
    # }
    # with open(PATH, "w", encoding="utf-8") as file:
    #     json.dump([new_data], file, ensure_ascii=False, indent=4)
    main()
    # read_logs()
