На ноутбуке магазина автопоиск спотыкался о 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>
46 lines
2.8 KiB
Bash
46 lines
2.8 KiB
Bash
#!/usr/bin/env bash
|
||
# Сборка «ALL MARKET — Проверка оборудования» (food-market.pos.hwcheck) под Windows x64.
|
||
# Self-contained + ReadyToRun (без установленного .NET). В zip кладём ярлык-bat и README.
|
||
# Обычная касса в этот zip НЕ входит — этим exe нельзя пользоваться как кассой.
|
||
set -euo pipefail
|
||
cd "$(dirname "$0")/.."
|
||
|
||
PROJ=src/food-market.pos.hwcheck/food-market.pos.hwcheck.csproj
|
||
OUT=deploy/pos-dist
|
||
VER="$(date +%Y.%m.%d)"
|
||
RID=win-x64
|
||
DIR="$OUT/allmarket-hardware-check-$RID"
|
||
mkdir -p "$OUT"
|
||
rm -rf "$DIR"
|
||
|
||
echo "[hwcheck] publish $RID …"
|
||
dotnet publish "$PROJ" -c Release -r "$RID" --self-contained true \
|
||
-p:PublishReadyToRun=true -p:Version="$VER" -p:DebugType=none \
|
||
-o "$DIR" >/tmp/hwcheck-publish.log 2>&1 || { tail -30 /tmp/hwcheck-publish.log; exit 1; }
|
||
|
||
# Ярлык-bat (без ключей — тестовая печать выключена). Ярлык печати НЕ включаем:
|
||
# тестовую печать владелец включит отдельной сборкой/ключом по своему слову.
|
||
cat > "$DIR/Проверка оборудования.bat" <<'BAT'
|
||
@echo off
|
||
start "" "%~dp0foodmarket.Pos.HwCheck.exe"
|
||
BAT
|
||
|
||
cat > "$DIR/README.txt" <<'TXT'
|
||
ALL MARKET — Проверка оборудования
|
||
|
||
1. Распакуйте папку целиком в любое место (например, на Рабочий стол).
|
||
2. На время проверки закройте «Кассу МойСклад» (она держит COM-порт весов).
|
||
3. Запустите «Проверка оборудования.bat». Вход и пароль НЕ нужны.
|
||
4. Весы: нажмите «Найти весы», затем «Запустить» — вес обновляется вживую.
|
||
Для проверки с грузом положите гирю/товар и смотрите значение и «стабильно».
|
||
5. Принтеры и COM-порты показываются только для чтения.
|
||
На принтер НИЧЕГО не печатается (тестовая печать выключена).
|
||
6. «Сохранить отчёт» — текстовый файл рядом с программой; «Копировать отчёт» —
|
||
в буфер обмена. Пришлите отчёт — по нему настроим кассу.
|
||
|
||
На принтер ничего не печатается. Тестовую печать включает владелец отдельно.
|
||
TXT
|
||
|
||
( cd "$OUT" && zip -qr "allmarket-hardware-check-$RID-$VER.zip" "allmarket-hardware-check-$RID" )
|
||
echo "[hwcheck] zip: $OUT/allmarket-hardware-check-$RID-$VER.zip"
|