|
|
2 weeks ago | |
|---|---|---|
| .gitignore | 2 weeks ago | |
| GIT_SETUP.md | 2 weeks ago | |
| ITD.ico | 2 weeks ago | |
| ITD_desc.txt | 2 weeks ago | |
| README.md | 2 weeks ago | |
| appsettings.example.json | 2 weeks ago | |
| build.bat | 2 weeks ago | |
| centered_messagebox.py | 2 weeks ago | |
| db.py | 2 weeks ago | |
| db_check.py | 2 weeks ago | |
| delete_123123_parking.py | 2 weeks ago | |
| itd_db.py | 2 weeks ago | |
| itd_transport.log | 2 weeks ago | |
| main.py | 2 weeks ago | |
| make_icon.py | 2 weeks ago | |
| requirements.txt | 2 weeks ago | |
| reset_manual_cycle_closes.sql | 2 weeks ago | |
| schema.sql | 2 weeks ago | |
| start.bat | 2 weeks ago | |
README.md
ITD Transport Tracking – пълно ръководство
Приложение за проследяване на транспортни средства (камиони) по постове: четене на QR карта, регистрация на преминаване през постове, генериране на карти и администрация на картите. Работи с база данни SQL Server и може да се ползва като Python скрипт или като преносимо EXE.
1. Какво прави приложението
- Регистрация по пост – при четене на QR код на карта се записва преминаване през следващия пост (1→2→3→4→5).
- Пет поста: Портал (паркинг) → Вход в завода → Рампа начало товарене → Рампа край товарене → Напускане.
- Таблица с цикли – показва всички цикли с време за всеки пост и изход; поддържа филтър по номер на карта.
- Служебно затваряне на цикъл – ако липсва регистрация на последен пост, цикълът може да се затвори ръчно със „Служебен изход“ (и после отмяна на служебния изход).
- Модул „Карти“ – списък на карти, корекция на текст (име + № кола), активиране/деактивиране, генериране на QR карта, отпечатване на карта като PNG.
Иконата на приложението е ITD.ico (квадратна, без допълнително преобразуване).
2. Изисквания
- Python 3.8+ (при ползване като скрипт).
- SQL Server – база данни с таблиците
ITD_CardsиITD_Cycles(схемата се прилага автоматично при първо стартиране отschema.sql). - ODBC Driver 17 for SQL Server (или съвместим) на машината.
- За изграждане на EXE: PyInstaller (
pip install pyinstaller).
3. Първоначална настройка
3.1 Файлове в папката на проекта
| Файл | Описание |
|---|---|
main.py |
Основно приложение (екран с регистрация, цикли, бутони). |
db.py |
Връзка към БД и операции с карти/цикли. |
db_check.py |
Проверка за достъп до БД и прилагане на schema.sql. |
schema.sql |
SQL схема – таблици ITD_Cards, ITD_Cycles. |
appsettings.json |
Задължителен – connection string към SQL Server (не се комитва в Git). |
appsettings.example.json |
Пример; копирайте като appsettings.json и попълнете данните. |
ITD.ico |
Икона на приложението (прозорец и EXE). |
start.bat |
Стартиране в режим разработка (проверка БД + main.py). |
build.bat |
Изграждане на преносимо EXE. |
requirements.txt |
Python зависимости: pyodbc, qrcode[pil]. |
3.2 Настройка на връзката към базата данни
- Копирайте
appsettings.example.jsonкатоappsettings.jsonв същата папка. - Отворете
appsettings.jsonи попълнете connection string:
{
"ConnectionStrings": {
"SqlServer": "Server=ВАШИЯ_СЪРВЪР;Database=ITD;User Id=ПОТРЕБИТЕЛ;Password=ПАРОЛА;TrustServerCertificate=true"
}
}
- Server – име или адрес на SQL Server инстанцията.
- Database – име на базата (напр.
ITD). - User Id / Password – потребител с права за създаване на таблици и четене/запис.
- TrustServerCertificate=true – обикновено нужен при самоподписан сертификат.
Алтернативно можете да използвате Odbc ключ в ConnectionStrings с пълен ODBC connection string, ако не ползвате SqlServer формата.
3.3 База данни и таблици
При първо стартиране (или при изпълнение на db_check.py) приложението търси schema.sql и изпълнява скрипта. Така се създават:
- ITD_Cards – карти (код, текст за показ, активна/неактивна, дати).
- ITD_Cycles – цикли за всяка карта с дата/час за пост 1…5 и служебно затваряне.
Ако таблиците вече съществуват, схемата не променя данните (използва се IF NOT EXISTS).
4. Стартиране (режим разработка)
- Отворете папката на проекта в командния ред.
- Стартирайте:
start.bat
Скриптът:
- проверява за наличие на
appsettings.json; - инсталира зависимости от
requirements.txt(ако липсват); - пуска
db_check.py– проверка за достъп до БД и прилагане на схемата; - при успех пуска
main.py.
Ако няма appsettings.json или връзката към БД не успее, програмата спира с подходящо съобщение.
Можете да стартирате и директно:
python db_check.py
python main.py
Иконата на прозореца се зарежда от ITD.ico в същата папка.
5. Изграждане на преносимо EXE
- Уверете се, че в папката има:
main.py,schema.sql, ITD.ico,appsettings.json(за тест; за разпространение вижте по-долу). - Инсталирайте PyInstaller (еднократно):
pip install pyinstaller
- Пуснете:
build.bat
При успех в подпапка dist се създава ITD_Transport.exe. В EXE е вградена и схемата schema.sql; иконата на изпълнимия файл е ITD.ico.
Ако няма ITD.ico, build-ът все пак минава, но EXE няма да има икона.
6. Преносимо ползване на друг компютър
За да ползвате приложението без инсталиран Python:
- Копирайте в една папка на целевата машина:
- ITD_Transport.exe (от
dist\); - appsettings.json (с правилен connection string за тази мрежа/сървър);
- ITD.ico (по желание – за икона на прозореца при нужда).
- ITD_Transport.exe (от
- На целевата машина трябва да е инсталиран ODBC Driver 17 for SQL Server (или съвместим драйвер).
- Стартирайте
ITD_Transport.exe. Работната директория е папката на exe-то; от там се четеappsettings.json.
Не е нужно да инсталирате Python или PyInstaller на целевата машина.
7. Основни екрани и функции
7.1 Основен екран
- Постове – показват се петте поста с цветове.
- QR карта (код) – въвеждате или сканирате кода на картата и натискате Регистрирай. Записва се следващият пост за тази карта.
- Филтър по карта – показват се само циклите за въведения номер на карта; Всички премахва филтъра.
- Таблица с цикли – ред за всеки цикъл: карта, време за постове 1–5, изход (нормален или служебен). С клик се избира ред.
- Бутони:
- Обнови – презарежда циклите;
- Затвори цикъла – служебно затваряне на избрания цикъл (ако липсва регистрация на последен пост);
- Отмени служебен изход – премахва служебното затваряне за избрания цикъл;
- Карти – отваря модула за карти.
7.2 Модул „Карти“
- Таблица с всички карти: код, текст (име + № кола), активна, дати.
- Обнови – презарежда списъка.
- Коригирай – промяна на текста на избрана карта.
- Изтрий – изтриване на карта (и регистрациите по нея).
- Деактивирай / Активирай – картата спира/започва да участва в регистрации.
- Създай PNG – запазване на карта като PNG (QR + текст) за отпечатване.
- Генерирай QR карта – нова карта с текст; запис в БД и показване на QR за отпечатване.
- Затвори – затваряне на прозореца.
8. Git и синхронизация
За работа с няколко компютъра и GitHub вижте GIT_SETUP.md: инициализация на repo, push към GitHub, клониране на друг компютър и локално изграждане на EXE.
Важно: appsettings.json е в .gitignore – не се комитва. На всеки компютър копирайте appsettings.example.json като appsettings.json и попълнете connection string.
9. Помощни скриптове и файлове
- make_icon.py – не се използва от текущия build; иконата е директно ITD.ico.
- reset_manual_cycle_closes.sql – при нужда за нулиране на служебни затваряния (изпълнява се ръчно върху БД).
- centered_messagebox.py – помощни функции за центрирани диалози в приложението.
10. Обобщение – бърз старт
| Действие | Команда / стъпка |
|---|---|
| Първа настройка | Копирайте appsettings.example.json → appsettings.json, попълнете connection string. |
| Стартиране | start.bat (или python db_check.py и python main.py). |
| Build на EXE | build.bat → exe в dist\ITD_Transport.exe. |
| Преносимо ползване | Копирайте exe + appsettings.json + при желание ITD.ico в папка на целевата машина; инсталиран ODBC драйвер за SQL Server. |
Иконата на приложението е само ITD.ico – в папката на скрипта при разработка и в папката на exe при преносимо ползване.