На ноутбуке магазина автопоиск спотыкался о Bluetooth-порты (COM7/COM8 — Open/Write
висят), выбирал по умолчанию BT и не доходил до COM22 (USB-SERIAL CH340, где весы).
Парсер/протокол исправны (ручной выбор COM22 57600 работает) — баг только в поиске.
- ScaleAutodiscovery.DiscoverAsync: тирами по типу порта — USB-serial первыми,
неопознанные в середине, Bluetooth последними; на каждый порт ЖЁСТКИЙ таймаут
(Open обёрнут в задачу с гонкой против Task.Delay — SerialPort.Open на BT виснет);
порты перебираются параллельно (до 4), общий бюджет ~15 с; любая ошибка/таймаут →
следующий порт; по каждому порту строка в лог («COM22 CH340: ENQ→ACK, вес 0.000 кг»,
«COM7 Bluetooth: пропущен», «COM15: нет ответа»).
- HardwareProbe: Classify (CH340/Prolific/FTDI/CP210x → USB-serial; BTHENUM/Bluetooth
→ Bluetooth; ttyUSB/ttyACM → USB-serial), ClassifyPorts (без открытия портов),
OpenCloseBounded (жёсткий таймаут — листинг не виснет на BT). ListComPorts не
открывает Bluetooth-порты.
- HwCheck: по умолчанию выбирается НЕ Bluetooth-порт; окно показывает журнал
автопоиска по портам; список портов помечает [USB-serial]/[Bluetooth].
- Основная касса (экран «Оборудование») — та же DiscoverScaleAsync; --probe-hw не
открывает BT-порты.
- Из zip hardware-check убран ярлык «(с тестовой печатью).bat» (печать — отдельно
по слову владельца).
- Тесты: зависающий порт (Open 30 с) не задерживает поиск > таймаута, живой порт
вторым — найден; USB-serial проверяется раньше Bluetooth (BT не трогаем). 53/53.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>