Toto je program na grafické vytváření a úpravu rozšířených Petriho sítí a jejich interpretace.
Zadání projektu · Diagram tříd (UML)
Program je schopen:
- V uživatelském rozhraní upravovat všechny prvky sítě (není potřeba ručně upravovat soubor)
- Pohodlně aktualizovat vstupy programu za běhu.
- Upravované sítě načítat z a ukládat do lidsky čitelného JSON souboru.
- Ověřovat správnost sítí a správně informovat uživatele o jejich případných nedostatcích.
- Zpracovávat inskripční kód používající všechny funkce kromě
elapsed. - Graficky zobrazovat změny tokenů a odpálení přechodů.
Neimplementovaná funkčnost:
- Program nezaznamenává změny tokenů a odpálení přechodů, ale zobrazuje tyto změny graficky.
- Program nezaznamenává změny proměnných a nezobrazuje poslední známé hodnoty všech vstupů, výstupů a interních proměnných.
- Program nezobrazuje povolené přechody a naplánované timeouty, ale loguje případné vynechání přechodu s timeoutem.
- Program nezabraňuje nezřízenému vykonávání Petriho sítí v případě, že obsahují nekonečnou smyčku bez čekání. Program se může dostat do neovladatelného stavu.
Program je testován pro kompilaci a spuštění na Arch Linuxu a MacOSu, ale měl by se spustit na jakémkoli systému s verzí Qt alespoň 6.10. Program nevyužívá žádné funkce specifické pro POSIX.
Windows: Funkčnost by měla být možná (Qt6 a CMake jsou na Windows dostupné), ale program nebyl na Windows testován a není oficiálně podporován. Instrukce pro Windows nejsou součástí tohoto projektu.
- Nainstalujte závislosti:
-
Arch Linux:
sudo pacman -S --needed base-devel cmake qt6-base qt6-declarative qt6-svg
-
MacOS:
brew install cmake qt6
-
Debian distribuce (pro Fedoru/RHEL nahraďte
aptzadnf):sudo apt install build-essential cmake libglx-dev libopengl-dev libgl1-mesa-dev libxcb-cursor0 libxkbcommon-x11-0 pip3 install aqtinstall aqt install-qt linux desktop "6" -O ~/Qt export Qt6_DIR="$HOME/Qt/6.x.y/gcc_64" # nahraďte "6.x.y" skutečnou verzí Qt, která se nainstalovala export CMAKE_PREFIX_PATH="${Qt6_DIR}:${CMAKE_PREFIX_PATH}" export PATH="${Qt6_DIR}/bin:${PATH}" export LD_LIBRARY_PATH="${Qt6_DIR}/lib:${LD_LIBRARY_PATH}"
-
Merlin - školní Devuan server:
# Požadovaná verze Qt není v repozitářích, ale nainstalovali sme ji do veřejné složky: export Qt6_DIR="/homes/eva/xp/xpacajl00/Qt/6.10.3/gcc_64/" export CMAKE_PREFIX_PATH="${Qt6_DIR}:${CMAKE_PREFIX_PATH}" export PATH="${Qt6_DIR}/bin:${PATH}" export LD_LIBRARY_PATH="${Qt6_DIR}/lib:${LD_LIBRARY_PATH}" export QT_QUICK_BACKEND=software # pri použití SSH X-forwardingu (-X)
-
Připravte si složku pro kompilaci:
mkdir build
-
Sestavte projekt (spouští se CMake na pozadí):
make build
-
Spuštění programu:
make run
- alternativne přímo z build zložky (umístnení a přípona se môže lišiť v závislosti na operačnom systéme)
Program potom bude vytvořen v této složke pod jménem appICPprojekt.
Tato verze obsahuje opravy a vylepšení provedená po termínu hlavního odevzdání. Mimo jiné bylo upraveno a výrazne rozšířeno i samotné README.
- Oprava přechodů s
delay_ms = 0— přechody s nulovou hodnotou zpoždění a bezevent_namese nyní správně chovají jako okamžité (bez časovače). - Oprava zpracování událostí u zpožděných přechodů — zpožděný přechod s definovanou
event_namenyní správně vyžaduje odpovídající událost; bezevent_nameudálost ignoruje.
- Reset tokenů po zastavení simulace — tlačítko Stop nyní po zastavení simulace automaticky obnoví tokeny do počátečního stavu.
- Krok nastavení zpoždění snížen — krok při nastavování hodnoty zpoždění přechodu změněn z 1000 ms na 100 ms.
Přidány nové ukázkové sítě do složky examples/:
vlak.json— simulace výpravčího vlakového uzlu Brno - Košicecircle_with_trash.json— kruhová síť se slepou větvouconflict_determinism.json— demonstrace deterministického řešení konfliktutimeout_cancel.json— ukázka zrušení timeoutudefined_variable.json— přejmenovaný příklad s definovanou proměnnou
- Paralelní kompilace —
make buildnyní automaticky detekuje počet procesorů/thredů a kompiluje paralelně. - Podpora Merlin — přidány instrukce pro školní Devuan server Merlin do README.
- Skrášlení CMakeLists.txt — upráven formát deklarací QML souborů; testovací targety odebrány ze sestavení (testy nejsou součástí odevzdání).
Projekt využívá Doxygen pro generování API dokumentace ze zdrojového kódu.
make doxygennebo ekvivalentně:
make docDokumentace se vygeneruje do složky docs/. Hlavní stránka se nachází v docs/html/index.html.
make clean- Ľubor Pačaj (xpacajl00)
- Ján Habánik (xhabanj00)
- Tadeáš Erban (xerbant00)
