#!/bin/bash

# Найдём все COM и USB-to-Serial порты
PORTS=$(ls /dev/ttyS* /dev/ttyF* /dev/ttyUSB* 2>/dev/null | sort)

# Настройка: скорость, 8N1, отключение потока и эхо
CONFIG="9600 cs8 -cstopb -parenb -ixon -crtscts -echo -icanon"

for PORT in $PORTS; do
    # Настроим порт
    if ! stty -F "$PORT" $CONFIG 2>/dev/null; then
#        echo "Порт $PORT: ⚠️ не удалось настроить"
        continue
    fi

    echo "Проверка порта: $PORT"

    # Генерируем уникальную строку для проверки
    TESTSTR="TEST$(basename "$PORT")"

    # Читаем 32 байта из порта (в фоне), затем отправляем строку
    OUTPUT=$( (head -c ${#TESTSTR} "$PORT" & PID=$!; sleep 0.2; echo -n "$TESTSTR" > "$PORT"; sleep 0.5; kill $PID 2>/dev/null; wait $PID 2>/dev/null) )

    # Анализ результата
    if [[ "$OUTPUT" == *"$TESTSTR"* ]]; then
        echo "  Успешно: получено '$TESTSTR'"
    elif [[ -n "$OUTPUT" ]]; then
        echo "  Частично получено: '$OUTPUT'"
    else
        echo "  Нет ответа"
    fi
done
