Загрузка данных


import serial
import keyboard
import json
import os


# =====================
# ЗАГРУЗКА COM-ПОРТА
# =====================

config_path = os.path.abspath(
    os.path.join(
        os.path.dirname(__file__),
        "..",
        "config.json"
    )
)

with open(config_path, "r", encoding="utf-8") as f:
    config = json.load(f)

COM_PORT = config["ppt_sensors"]


# =====================
# СОЕДИНЕНИЕ
# =====================

ser = serial.Serial(COM_PORT, 9600)

print(f"PPT sensor controller started on {COM_PORT}")
print("Expected signals: signal_2 ... signal_9")


# =====================
# ОСНОВНОЙ ЦИКЛ
# =====================

while True:

    try:

        line = ser.readline().decode(
            errors="ignore"
        ).strip().lower()


        if not line:
            continue


        print(line)


        # =====================
        # МАГНИТНЫЕ ДАТЧИКИ
        # =====================

        if line.startswith("signal_"):

            number = line[len("signal_"):]


            # signal_2 -> 1
            # signal_3 -> 2
            # ...
            # signal_9 -> 8

            if number.isdigit():

                sensor_number = int(number)


                if 2 <= sensor_number <= 9:

                    key_number = sensor_number - 1


                    print(
                        f"Signal {sensor_number} -> "
                        f"Press key {key_number}"
                    )


                    keyboard.press_and_release(
                        str(key_number)
                    )


    except Exception as e:

        print("Error:", e)