• Nebyly nalezeny žádné výsledky

Struktura aplikace a zdrojov´ eho k´ odu

In document Diplomov´ a pr´ ace (Stránka 36-42)

V t´eto kapitole je pops´ana struktura aplikace z pohledu spuˇstˇen´ı, rozdˇelen´ı grafick´eho rozhran´ı na z´akladˇe WPF a tˇr´ıdn´ı hierarchie na z´akladˇe n´avrhov´eho vzoru MVVM. Jak jiˇz bylo uvedeno pro implementaci aplikace, bylo vyuˇzito v´yvojov´e prostˇred´ı Microsoft Visual Studio 2017, vˇcetnˇe jeho n´astroj˚u pro debuggov´an´ı, sledov´an´ı v´ykonu a spr´avy projektu.

5.3.1 Struktura spuˇstˇen´ı

Kl´ıˇcov´ym souborem, a z´aroveˇn objektem pro spuˇstˇen´ı aplikace, je ”App”, jenˇz je potom-kem modelu WPF aplikace (”Application”). V jeho pˇridruˇzen´em souboru s k´odem v pozad´ı

”App.cs” je definov´an hlavn´ı aplikaˇcn´ı model a z´aroveˇn vytvoˇrena instance objektu ”Appli-cationBase”. Pˇri vytvoˇren´ı t´eto instance objektu jsou ovˇeˇreny a naˇcteny jazykov´e mutace pro-gramu, d´ale ovˇeˇreny a vytvoˇreny struktury sloˇzek potˇrebn´e pro n´asledn´y bˇeh programu a tak´e

Obr´azek 13: N´ahled instal´atoru aplikace

inicializov´ana ikona cel´e aplikace. V dˇr´ıvˇejˇs´ıch verz´ıch se v t´eto instanci d´ale ˇreˇsilo takt´eˇz li-cencov´an´ı aplikace jako celku, kter´e bylo pot´e reimplementov´ano. V neposledn´ı ˇradˇe je zde vytvoˇrena instance hlavn´ıho okna aplikace a takt´eˇz jsou v n´asleduj´ıc´ım sledu vytvoˇreny kl´ıˇcov´e objekty hlavn´ıho objektu ”ApplicationViewModelu” aplikace, kter´e jsou jeho potomky.

5.3.2 Struktura grafick´eho rozhran´ı

Jak jiˇz bylo uvedeno, grafick´a ˇc´ast aplikace byla implementov´ana s pomoc´ı WPF. Pro implementaci nˇekter´ych grafick´ych prvk˚u bylo vyuˇzito sady knihoven Telerik [21], kter´e jsou

”nadstavbou” WPF komponent. Respektive upravuj´ı jejich funkcionalitu a vizu´aln´ı podobu.

Grafick´e rozhran´ı aplikace lze rozloˇzit prim´arnˇe na hlavn´ı okno, ve kter´em jsou vyuˇzit´e panely. Tyto panely maj´ı dokovac´ı funkci s moˇznost´ı uloˇzen´ı a resetov´an´ı jejich rozloˇzen´ı.

D´ıky t´eto funkci si m˚uˇze uˇzivatel pˇrizp˚usobit aplikaci dle sv´ych potˇreb, a to hlavnˇe z po-hledu pˇrehlednosti. V´yhodou tohoto rozhran´ı z pohledu implementace je moˇznost vytvoˇren´ı vlastn´ıch grafick´ych objekt˚u, se kter´ymi lze pot´e pracovat stejnˇe jako s objekty knihovn´ımi, a kter´e jsou pot´e vkl´ad´any do jednotliv´ych panel˚u. Kombinac´ı tˇechto vlastnost´ı bylo doc´ıleno modifikovateln´eho, pˇrehledn´eho a uˇzivatelsky pˇr´ıvˇetiv´eho rozhran´ı pro koncov´e z´akazn´ıky a uˇzivatele aplikace.

5.3.3 Hierarchie zdrojov´eho k´odu

Pˇri implementaci aplikace bylo c´ıleno na udrˇzen´ı pˇrehlednosti a modul´arnosti implemen-tace. Z pohledu pˇrehlednosti se jedn´a hlavnˇe o tˇr´ıdˇen´ı souvisej´ıc´ıch tˇr´ıd do vhodnˇe

pojme-novan´ych sloˇzek, a to takt´eˇz i kv˚uli vlastnosti v´yvojov´eho prostˇred´ı, kter´e na z´akladˇe po-jmenov´an´ı tˇechto rozdˇeluj´ıc´ıch sloˇzek a jejich zanoˇren´ı vytv´aˇr´ı tzv. namespace, neboli obal pro urˇcitou ˇc´ast zdrojov´ych k´od˚u. Jelikoˇz ´ukolem pro implementaci t´eto aplikace bylo vyuˇzit´ı n´avrhov´eho vzoru MVVM, bylo logick´ym krokem vytvoˇren´ı pojmenov´an´ı sloˇzek na z´akladˇe konceptu tohoto modelu. Jmenovitˇe se tedy jedn´a o sloˇzky s n´azvy Models, View, ViewMo-dels a Utils jejichˇz ˇclenˇen´ı m˚uˇzeme vidˇet na obr´azku ˇc. 14. V projektu jeˇstˇe m˚uˇzeme nal´ezt sloˇzku Resources, kter´a slouˇz´ı pro uchov´an´ı grafick´ych objekt˚u, jako jsou napˇr´ıklad miniatury loga, statick´e obr´azky, ˇci vlastn´ı grafika ovl´adac´ıch prvk˚u. Samozˇrejm´e je, ˇze tyto jmenovan´e sloˇzky jsou koˇrenov´e, a ˇze d´ale doch´az´ı k dalˇs´ımu vˇetven´ı na z´akladˇe logick´ych souvislost´ı mezi obsaˇzen´ymi prvky. Podrobnˇejˇs´ı mapa tˇr´ıd je uvedena v pˇr´ıloze D. Pro dosaˇzen´ı modul´arnosti programu byla jednak snaha o oddˇelen´ı spolu nesouvisej´ıc´ıch prvk˚u k´odu, jednak tak´e o co nejvˇetˇs´ı moˇzn´e vyuˇzit´ı k´odu spoleˇcn´eho.

FireSafetyApp Utils

Models

View

Smartis ChartDataObjects

Converters

Translation

Controls

Panels ConfigPanels

SettingPanels

ViewModels

Resources

Obr´azek 14: ˇClenˇen´ı aplikace do tzv. ”namespace”

6 Popis grafick´ eho rozhran´ı aplikace a funkc´ı

Obsahem t´eto kapitoly je konkr´etn´ı popis jednotliv´ych grafick´ych komponent aplikace a popis jejich funkˇcnosti. V jednotliv´ych podkapitol´ach jsou d´ale pops´any implementovan´e n´astroje a jejich funkce. Konkr´etnˇe se zde budeme vˇenovat spr´avˇe uˇzivatel˚u, pˇrid´an´ı, pˇripojen´ı a konfiguraci kamer, ukl´ad´an´ı dat aplikace jak pro nastaven´ı, tak z´aznam, pˇripojen´ı PT mo-toru a jeho funkc´ım, graf˚um a logov´an´ı ud´alost´ı. V nˇekter´ych oblastech, kde je to potˇrebn´e, se dotkneme minul´e implementaci, a to z d˚uvodu jak v´ysledn´eho porovn´an´ı, tak faktu, ˇze v nˇekter´ych implementac´ıch z testovac´ıch d˚uvodu z˚ustaly ˇc´asteˇcnˇe implementovan´e i funkce slouˇz´ıc´ı pro star´e zp˚usoby ovl´adan´ı aplikace.

6.1 Grafick´e rozdˇelen´ı hlavn´ıho okna a popis komponent

V t´eto sekci jsou pops´any jednotliv´e ˇc´asti grafick´eho rozhran´ı z pohledu jejich ovl´ad´an´ı, v´yznamu a funkce. Podrobnˇeji budou jednotliv´e funkce pops´any v dalˇs´ıch sekc´ıch vˇenuj´ıc´ıch se jejich implementaci. Celkov´y pˇrehled grafick´eho rozhran´ı je pˇriloˇzen v pˇr´ıloze E. Pˇri im-plementaci tˇechto panel˚u a oken bylo v pˇr´ıpadˇe oken s nastaven´ım vyuˇzito pˇredevˇs´ım tabul-kov´eho rozloˇzen´ı prvk˚u ”Grid Layout”. V pˇr´ıpadˇe panel˚u a modul´arn´ıch oken bylo vyuˇzito takzvan´ych ”Stack panel˚u” v kombinaci s tabulkov´ym rozloˇzen´ım. Hlavn´ım d˚uvodem pro vyuˇzit´ı byla moˇznost automatick´e ´upravy velikost´ı jednotliv´ych prvk˚u jak pˇri zmˇenˇe rozliˇsen´ı obrazovky, tak i pˇri zmˇenˇe rozloˇzen´ı dokovateln´ych panel˚u

6.1.1 Hlaviˇcka a hlavn´ı menu aplikace

Prvn´ı ˇc´ast´ı grafick´eho rozhran´ı je hlaviˇcka cel´e aplikace. Zde, kromˇe loga, n´azvu aplikace a standardn´ıch ovl´adac´ıch prvk˚u aplikace pro minimalizaci, maximalizaci a zavˇren´ı, stoj´ı za zm´ınku implementovan´e zobrazen´ı statusu aplikace. Tento status slouˇz´ı pro informaci o mo-ment´aln´ım stavu aplikace a takt´eˇz pro upozornˇen´ı, pokud je pˇrihl´aˇsen´y administr´ator cel´e aplikace. Tyto stavy m˚uˇzeme rozdˇelit n´asledovnˇe:

• OK - Standardn´ı chov´an´ı aplikace.

• DISSCONNECTED - Nˇekter´a z kamer nen´ı pˇripojen´a.

• ALARM - Nˇekter´a z pˇripojen´ych kamer detekuje mˇeˇren´ım nestandardn´ı situaci.

• WARNING - LOW DISK SPACE! - Bl´ıˇz´ı se vyˇcerp´an´ı m´ısta na z´aznamov´em disku, bude pˇreruˇseno ukl´ad´an´ı dat.

Za zm´ınku jeˇstˇe stoj´ı, ˇze ve stavu aplikace ”ALARM” je vizu´alnˇe, pomoc´ı pˇreruˇsovan´eho ˇ

cerven´eho pruhu, signalizov´ana tato situace pro zlepˇsen´ı orientace oper´atora.

Hlavn´ı menu aplikace obsahuje v souˇcasn´e verzi dvˇe z´aloˇzky, a to ”Options” a ”Appli-cation”. Z´aloˇzka ”Options” obsahuje funkci pro navr´acen´ı rozloˇzen´ı aplikace, d´ale moˇznost vyvol´an´ı okna pro nastaven´ı aplikace a okna pro spr´avu a nastaven´ı kamer a takt´eˇz moˇznosti

pr´ace se spr´avou uˇzivatel˚u, kter´a je podrobnˇeji pops´ana v kapitole 6.2. Pod poloˇzkou ”Ap-plication” se skr´yvaj´ı funkce pro aktualizace aplikace a kamer, prohled´av´an´ı s´ıtˇe, otevˇren´ı uˇzivatelsk´eho manu´alu a vyvol´an´ı ”About” okna pro obecn´y popis aplikace.

6.1.2 Informaˇcn´ı panel

Informaˇcn´ı panel je v z´akladn´ım rozloˇzen´ı aplikace ukotven v lev´e ˇc´asti. Slouˇz´ı pˇredevˇs´ım pro pr´aci s aplikac´ı a kamerami, v´ybˇer jednotliv´ych kamer a zobrazen´ı potˇrebn´ych informac´ı o dan´e vybran´e kameˇre. Konkr´etnˇe se zde v horn´ı ˇc´asti nach´az´ı ovl´adac´ı prvky pro vyvol´an´ı okna pˇrid´an´ı a nastaven´ı kamer, poˇr´ızen´ı manu´aln´ıho sn´ımku, nahr´av´an´ı manu´aln´ı radio-metrick´e sekvence, konfiguraci mˇeˇren´ı kamery a pokus o znovupˇripojen´ı. Tyto funkce jsou spˇraˇzeny s vybranou kamerou.

Dalˇs´ı ˇc´ast´ı je textov´y pˇrehled kamer se zobrazen´ım jejich stav˚u a moˇznost´ı jejich v´ybˇeru a maz´an´ı. Na z´akladˇe v´ybˇeru, kter´y je umoˇznˇen kliknut´ım na jednotliv´e poloˇzky seznamu se aktualizuj´ı informace o vybran´e kameˇre, kter´e jsou dostupn´e a zobrazen´e pˇr´ımo pod t´ımto seznamem. Konkr´etnˇe jsou zde zobrazeny informace o IP adrese vybran´e kamery, s´eriov´e a artiklov´e ˇc´ıslo a verze firmwaru. D´ale zapsan´a aktu´aln´ı mˇeˇren´ı v kameˇre s jejich aktu´aln´ımi hodnotami a takt´eˇz stavy digit´aln´ıch v´ystup˚u kamery. Posledn´ı komponentou tohoto panelu je moˇznost volby mezi automatickou barevnou paletou term´aln´ıho obrazu a manu´aln´ı, kde je moˇzn´e nastavit fixn´ı vizu´aln´ı reprezentaci teplot v barevn´e ˇsk´ale.

6.1.3 Centr´aln´ı panely hlavn´ıho okna

Centr´aln´ı panel obsahuje nˇekolik z´aloˇzek, ve kter´ych jsou obsaˇzeny panely pro pˇrehled r˚uzn´ych funkc´ı aplikace. Tˇemto panel˚um lze d´ıky dokov´an´ı zmˇenit polohu, pˇr´ıpadnˇe je lze oddˇelit od aplikace a pouˇz´ıt jako separ´atn´ı okna.

Obr´azek 15: Miniatura kamery SAFETIS pro panel ”Thermal Streams”

Prvn´ım panelem je ”Thermal streams”, kde jsou zobrazeny miniatury vloˇzen´ych a pˇripojen´ych kamer (viz obr´azek ˇc. 15). Tyto miniatury zobrazuj´ı kromˇe obrazu kamer tak´e jejich n´azev, aktu´aln´ı teplotu a IP adresu. Pokud se jedn´a o pˇripojen´y syst´em s PT motorem, je zde takt´eˇz zobrazena i aktu´aln´ı pozice dan´eho syst´emu. Dalˇs´ı funkcionalitou je moˇznost v´ybˇeru kamery

lev´ym tlaˇc´ıtkem myˇsi pro zobrazen´ı informac´ı v informaˇcn´ım panelu a takt´eˇz vizu´aln´ı sig-nalizace, opˇet ˇcerven´ym blik´an´ım, v pˇr´ıpadˇe, ˇze kamera zaznamen´a poˇzadovanou mˇeˇrenou situaci.

Panel ”Detailed view”, zobrazen´y na obr´azku ˇc. 16, slouˇz´ı pro detailnˇejˇs´ı pohled na vy-bran´y obraz z kamery. Na z´akladˇe jak´ehokoliv v´ybˇeru je v lev´e ˇc´asti zobrazen zvˇetˇsen´y obraz streamu, kter´y je moˇzn´e pˇribl´ıˇzit pomoc´ı koleˇcka myˇsi nebo pˇr´ısluˇsn´eho posuvn´ıku. Pro tento v´ybˇer takt´eˇz slouˇz´ı seznam miniatur kamer s aktu´aln´ım streamem implementovan´y v prav´e ˇ

c´asti. Tato ˇc´ast takt´eˇz slouˇz´ı pro zobrazen´ı hranic mˇeˇric´ıch n´astroj˚u a vizualizaci pixel˚u, pˇrekraˇcuj´ıc´ıch limitn´ı hodnotu.

Obr´azek 16: Panel s detailn´ım pohledem na vybranou kameru SAFETIS

Dalˇs´ım panelem v ˇradˇe je ”Graphs”, kde je implementovan´y ˇcasov´y graf pr˚ubˇehu ma-xim´aln´ı teploty v ˇcase z vybran´ych kamer. Z d˚uvodu pamˇet’ov´ych n´arok˚u lze vybrat ˇcasov´e

´

useky po kter´ych se graf automaticky zaˇcne pˇrepisovat, z´aroveˇn je implementov´ana redukce ˇ

cetnosti vzork˚u, dle vybran´eho ˇcasov´eho ´useku. Dalˇs´ı moˇznost´ı pˇrizp˚usoben´ı je manu´aln´ı ˇsk´alov´an´ı osy grafu, pˇr´ıpadnˇe zmˇena barvy jednotliv´ych pr˚ubˇeh˚u. Jelikoˇz se jedn´a o aplikaci zkoumaj´ıc´ı prevenci zahoˇren´ı, byly zvoleny pouze hodnoty maxim´aln´ıch teplot cel´eho obrazu.

Posledn´ı ˇc´ast´ı je takzvan´y ”Event logger”. V t´eto ˇc´asti je zobrazeno nˇekolik druh˚u vnˇejˇs´ıch ud´alost´ı, kter´e mohou nastat pˇri bˇehu programu. Z´aroveˇn jsou tato data zaznamen´av´ana fyzicky na intern´ı disk PC a je tedy moˇzn´e je exportovat. Data se ukl´adaj´ı textovˇe do pˇr´ısluˇsn´e sloˇzky v dokumentech. Pˇrestoˇze se kv˚uli pˇrehlednosti do aplikace naˇc´ıt´a pouze posledn´ıch 200 z´aznam˚u, jsou data uloˇzena v souboru vˇsechna od prvn´ıho spuˇstˇen´ı, aˇz do fyzick´eho pˇremaz´an´ı tohoto souboru. Aplikace rozliˇsuje tˇri typy ud´alost´ı, a to informaˇcn´ı, varovn´e a situace alarmu.

Pˇrehled tˇechto ud´alost´ı je uveden v tabulce 2.

Souˇc´ast´ı tohoto z´aznamu je i ˇcasov´a znaˇcka ud´alosti. Kromˇe tˇechto viditeln´ych ud´alost´ı je vytvoˇren vnitˇrn´ı logovac´ı syst´em zaznamen´avaj´ıc´ı sled ud´alost´ı a pˇr´ıpadn´ych chybov´ych hl´aˇsek, kter´y je takt´eˇz ukl´ad´an do textov´eho souboru. V pˇr´ıpadˇe nestandardn´ı situace pro-gramu je vyuˇz´ıv´an pro rychlejˇs´ı lokalizaci pˇr´ıpadn´e chyby.

Typ Ud´alost

Info Pˇrihl´aˇsen´ı dan´eho uˇzivatele Info Pˇrihl´aˇsen´ı dan´eho administr´atora Info Zmˇena hesla administr´atorem

Info Odhl´aˇsen´ı uˇzivatele

Warning V´ypadek pˇripojen´ı na control portu Warning V´ypadek pˇripojen´ı na stream portu Warning Ne´uspˇeˇsn´y pokus o znovupˇripojen´ı Warning Obecn´e upozornˇen´ı pˇri zmˇenˇe stavu kamery Alarm Detekov´an´ı alarmov´e situace

Tabulka 2: Pˇrehled zaznamenan´ych ud´alost´ı

In document Diplomov´ a pr´ ace (Stránka 36-42)