Programozási architektúrák, eseményvezérelt megoldások Vizuális programozás 5. előadás
Komponens alapú programozás Komponens-alapú `
Kezdelteges formája, az első komponensek: DLL-ek ` ` ` ` ` `
`
„Black box” ujrahasznosítható kód Függvényeket definiál API (Application (A li ti Programming P i Interface) I t f ) WINDOWS/SYSTEM vagy fix útvonal Nincs verziókövetés Inkonzisztencia problémák (ua. a program másik DLL verzió, új alkalmazással telepített DLL már nem jó egy régihez)
COM : Component Object Model ` `
Komponens alapú fejlesztés lehetősége Származtatott technológiák: OLE, ActiveX
Alkalmazások közötti adatcsere `
Clipboard (Win 3.1) `
` `
DDE (Dynamic Data Exchange) OLE (Object Linking and Embedding) `
`
Nagyon korlátozottak a lehetőségek
Egy alkalmazás használja egy másik adatait
ActiveX/COM ` ` `
Flexibilisebb működés Az alkalmazások egymás funkcióit is használhatják Fejlesztőkörnyezettől függetlenül képesek eggyüttműködni COM objektumok
ActiveX/COM
`
Egy programból egy másik programot vezérlünk, használjuk bizonyos funkcióit ` ` `
Kliens – szerver kapcsolat p A COM objektumok funkcionalitása az un. Interfaceeken keresztül érhető el Interfészek
Tulajdonságok j g
Metódusok
ActiveX pl. pl
Property Node `
Invoke Node
Interface ` `
Property (tulajdonság) Method (metódus / „tagfüggvény”)
Property Node (tulajdonságok...) (tulajdonságok ) `
Az objektum tulajdonságai beállíthatók / lekérdezhetők
Invoke Node (metódusok...) (metódusok ) `
Az objektum metódusai (tagfüggvényei) meghívhatók
LabView mint ActiveX kliens Open Automation reference
Set / Get Properties and Invoke Methods
Close Automation reference
Pl.: PPT slideshow lejátszása
LabView mint ActiveX konténer
AcitveX Control / objektum beillesztése
Set / Get Properties and Invoke Methods
Pl.: MS Web Browser kontrol beillesztése ((web böngésző g LabView-ban))
ActiveX Container
Eseményvezérelt programozás Események a LabView-ban Dinamikus események Felhasználói események Eseményvezérelt programok
L bVIEW 6i és LabVIEW é régebben é bb `
A front panel f l folyamatos t lekérdezése
`
CPU-idő igényes
`
Nem garantált, hogy minden eseményt lekezel
`
Ha több dolog változik egyszerre, nem tudjuk j a sorrendet
LabVIEW 6.1: Az esemény y struktúra
User Interface Események (statikusan regisztrált) ` Egérkattintás ` Billentyű lenyomás ` Kontrolok értékváltozása (nem programból) ` A felhasználó csinál valamit a front panelen
A esemény Az é struktúra t ktú használata h ál t ` ` `
`
`
Alapvetően egy While ciklusban használjuk Iterációnként pontosan egy eseményt kezel Billenő kapcsolókat p az esemény struktúrán belül célszerű elhelyezni A stop gombhoz rendelt esemény állítja le az alkalmazást lk l á t Pl. prg
Az esemény struktúra használatának előnyei `
` `
Nincs folyamatos lekérdezés: kevésbé CPU-idő igényes Minden eseményt lekezel Az események a bekövetkezésük sorrendjében djéb kerülnek lekezelésre
Demo 1: LabVIEW 6.1 6 1 Esemény struktúra Egyszerű program az esemény struktúra használatával
Notify és Filter Események Notify Events („Jelző” események) Jelzi a LabView-nak, hogy egy felhasználói esemény történt Filter Events („Szűrő” események) Elfogadthatjuk, vagy megváltoztathatjuk az eseményhez tartozó adatokat mielőtt lekezelnénk az eseményt
A 6.1-es 6 1 es esemény struktúra korlátai ` ` `
` `
Csak C k statikus t tik események é k ((az egész é ffutásidőre tá idő előre lő definiálva) Nem tudunk programból új eseményeket definiálni (register event) Csak a user interface eseményeit tudjuk kezelni (nem tudunk eseményt rendelni egy érték programból való változtatásához)) Nem tudunk programból eseményeket generálni Csak az a VI tudja j kezelni az eseményeket, y amihez azok statikusan definiálva lettek (nincs modularitás pl. egy sub VI nem kezelheti a szülőjének eseményét)
További lehetőségek `
Új objektum események ` `
` `
Mouse Enter (Mouse over) Mouse Leave
Új ActiveX Esemény struktúra Új „érték” (Value) tulajdonság `
Property Node-al való értékbeállítás is eseményt generál
Gyakori hibák eseménystruktúránál ` `
Billenőkapcsoló terminálja egy, a kapcsoló által triggerelt eseményben Egymásba ágyazott eseménystruktúrák ` `
holtpont alakulhat ki ó iá i kö óriási körültekintés ült ki té kkellll
Alkalmazásfejlesztés LabView-ban LabView ban `
Az alkalmazásfejlesztés fő lépései ` ` `
Programozási architektúra kiválasztása User interface fejlesztése Moduláris kód fejlesztése `
` `
Sub VI-ok alkalmazása
Változások Vál á k kö követése é Disztribúció
Programszerkezet (architektúra) kiválasztása ` ` ` `
„Állapotgép” (Automata, State machine) Párhuzamos ciklusok (Parallel loop VI) Végrhajtási sor / üzenetkezelés User interface interakció (eseménykezelés) `
` `
Felhasználó akciók kezelése
Producer / Consumer (Adatok) Producer / Consumer (Események)
Tervezési sablonok ((design g templates) p ) `
File `
New...
State machine ` ` `
Az egyik leggyakrabban használt tervezési sablon Állapotokból és állapotátmenetekből áll Mikor használjuk? j ` `
`
Folyamatosan fut a programunk Egyértelműen meghatározhatók az állapotátmenetek (pl. állapotdiagram)
Pl. ` ` `
Üdítőautomata, Bankjegykiadó automata, stb.
State machine (szerkezete) ` ` `
While ciklus - folyamatosan végrehajtódik Shift regiszter - tartalmazza az állapotátmenetre vonatkozó információt Case struktúra – az egyes állapotokhoz tartozó kód
Állapot diagram eszköz ` `
Állapotdiagramban tervezhető a kód A sablon automatikusan készül a diagram alapján
Ital automata (state machine) `
Egyszerű példa az állapotokkal és állapotátmenetekkel megoldható feladatra
Vár a pénzre
Ital választás
Ital kiadás
Végrehajtási sor / üzenetkezelés
UI események kezelése Gombok lenyomása Slid k kkezelése Sliderek lé Grafikonok nagyítása, nagyítása mozgatása
Producer / Consumer (data)
Producer / Consumer (events)
Architektúra választás szempontjai ` ` ` ` ` `
Folytonosan fut majd a program? Lesznek párhuzamosan futó folyamatok? A User interface egyszerű vagy összetett? Milyen gyakran van szükség felhasználói interakcióra? Mik a teljesítménnyel kapcsolatos elvárások? stb.