Bakalářská práce
Grafické uživatelské rozhraní jednotky sběru dat vypracoval: Ladislav Polanský vedoucí práce: Ing. Pavel Houška, Ph.D. obor: Aplikovaná informatika a řízení 2006
Strana 3
Místo této strany vložit do vazby Zadání bakalářské práce
Strana 5
ANOTACE Předložená práce se zabývá návrhem a realizací jednoduchého grafického uživatelského rozhraní pro jednoduché aplikace realizované na jednočipových mikropočítačích – mikrořadičích. Realizace je provedena pro konkrétní projekt - jednotku sběru dat. V práci jsou popsány základní vlastnosti jednoduchých grafických LCD displejů, vlastnosti používaných řadičů displejů a způsoby připojení k mikrořadiči. Další část práce je věnována základům potřebné počítačové grafiky a popisu používaných rozhraní. Zbytek práce je věnován realizaci a popisu vlastností realizovaného rozhraní.
ANNOTATION The aim of this thesis is realization of simple graphical user interface for simple application realized on single chip microcomputers – microcontrollers. Realization is made for concrete project – data collection unit. There are described basic property of simple graphics LCD display, property of used displays controllers and ways of connection to microcontroller in this thesis. Next part of thesis is devoted to needed bases of computer graphic and description of used interfaces. The rest of thesis is devoted to realization and description of realized interface finally.
Strana 7
PODĚKOVÁNÍ Ing. Pavlu Houškovi za pomoc a konzultace s touto prací.
Strana 9
Obsah: 1 2
Úvod................................................................................................................................ 11 Uživatelská Rozhraní.................................................................................................... 13 2.1 Pseudografická uživatelská rozhraní.............................................................................13 2.2 Grafické uživatelské rozhraní........................................................................................13 2.2.1 Ovládání GUI............................................................................................................14 2.2.2 GUI typu desktop...................................................................................................... 14 2.2.3 Minimalistická a mobilní GUI.................................................................................. 15 3 Grafický hardware........................................................................................................ 17 3.1 Rozdělení grafických periferií.......................................................................................17 3.2 Displeje..........................................................................................................................17 3.2.1 Vývoj displejů........................................................................................................... 17 3.2.2 Základní typy Displejů..............................................................................................18 3.2.3 CRT monitory........................................................................................................... 19 3.2.4 LCD displeje ............................................................................................................ 19 3.2.5 Plazmové displeje..................................................................................................... 20 3.2.6 Dotykové obrazovky................................................................................................. 20 3.3 Řadiče displejů a grafické adaptéry.............................................................................. 20 3.3.1 Parametry grafických řadičů..................................................................................... 20 3.3.2 Připojení řadiče displeje k MPU............................................................................... 21 3.4 Popis řadiče T6963CDS................................................................................................ 21 3.4.1 Vlastnosti.................................................................................................................. 21 3.4.2 Inicializace a ovládání displeje................................................................................. 22 3.4.3 Rozhraní pro připojení paměti RAM........................................................................ 22 3.4.4 Inicializace řadiče..................................................................................................... 22 3.4.5 Komunikace MPU s T6963.......................................................................................22 4 Grafické Algoritmy........................................................................................................25 4.1.1 Vykreslení obrazového bodu.................................................................................... 25 4.1.2 Vykreslení úsečky..................................................................................................... 25 4.1.3 Oříznutí úsečky......................................................................................................... 26 4.1.4 Vykreslení elipsy, elipsovitého oblouku...................................................................27 5 Řešení ............................................................................................................................. 29 5.1 Hardware část................................................................................................................30 5.1.1 Použitý displej...........................................................................................................30 5.1.2 Použitá klávesnice.....................................................................................................30 5.1.3 Připojení T6963CDS k mikrořadiči řady 8051......................................................... 30 5.2 Programování mikrořadiče 8051...................................................................................31 5.3 Grafické rozhraní...........................................................................................................31 5.3.1 Souřadnicové struktury............................................................................................. 32 5.3.2 Vykreslení úsečky, elipsy, elipsovitého oblouku a pravidelného n-úhelníku...........32 5.3.3 Výpis textu a vykreslení bitmapového obrázku........................................................32 5.3.4 Vyplňované a ostatní obrazce................................................................................... 32 5.4 Grafické uživatelské rozhraní........................................................................................33 5.4.1 Ovládání GUI ...........................................................................................................33 5.4.2 Vnitřní implementace GUI........................................................................................34 5.4.3 Okno..........................................................................................................................34 5.4.4 Hlavní roletové menu................................................................................................35 5.4.5 Tlačítko..................................................................................................................... 35 5.4.6 Ikona..........................................................................................................................35
Strana 10 5.4.7 Posuvník....................................................................................................................36 5.4.8 Editační box.............................................................................................................. 36 5.4.9 Combo box ...............................................................................................................36 5.4.10 List box..................................................................................................................... 37 5.4.11 Dialogová okna......................................................................................................... 37 5.5 GUI jednotky sběru dat................................................................................................. 37 6 Závěr............................................................................................................................... 39 7 Seznam použité literatury............................................................................................. 41
Strana 11
1
ÚVOD
Myšlenka využití počítače pro zobrazování grafických informací, pravděpodobně napadla již tvůrce prvních elektronických výpočetních systémů. První pokusy o její praktické naplnění sahají až k samotným počátkům výpočetní techniky. Vývoj specializovaných grafických prostředků počítačů však začal zhruba v první polovině šedesátých letech minulého století. V té době se začaly počítače v poměrně velké míře využívat při zpracovávání vědeckých dat. Zadávání těchto dat a výstup výpočtů například v číselné podobě je však pro člověka málo srozumitelný a přehledný, zejména v případě, že je nutné porozumět většímu množství dat, která jsou mezi sebou určitým způsobem provázaná. Ukázalo se, že v některých případech je mnohem srozumitelnější a názornější převést číselné informace na informace grafické, a ty následně zobrazit [1]. Od grafického výstupu již nebylo daleko k grafickému uživatelskému rozhraní, došlo tak ke kvalitativnímu skoku. Cílem této bakalářské práce bylo vyhledat používané přístupy konstrukce grafického uživatelského rozhraní, na jejich základě vybrat vhodné řešení pro jednotku sběru dat a realizovat toto rozhraní s využitím předností které grafický výstup nabízí.
Strana 13
2
UŽIVATELSKÁ ROZHRANÍ
Na osobních počítačích i pracovních stanicích docházelo a vlastně stále ještě dochází ke změně rozhraní, kterým počítač komunikuje s uživatelem. Od původního rozhraní s příkazovým řádkem (Command Line Interface - CLI) se přechází přes textové celoobrazovkové rozhraní (TextMode User Interface - TUI) k rozhraní plně grafickému (Graphical User Interface - GUI). Samotný příkazový řádek při správném použití umožňuje velmi výkonně ovládat aplikace, jeho možnosti se však násobí až spojením s grafickým uživatelským rozhraním - typickým příkladem takovéhoto řešení je například AutoCAD, který je možné velmi rychle ovládat kombinací klávesnice a myši (zejména s vypnutím všech prakticky zbytečných ikon a menu). Základní uživatelská rozhraní jsou: • CLI – Jde o jednoduché uživatelské prostředí převážně v textovém režimu, má podobu příkazového řádku, uživatel zadává příkazy textovými řetězci. Nevýhodou je, že uživatel musí znát příkazy z paměti, nebo je zdlouhavě vyhledávat v nápovědách. • TUI – Je to celoobrazovkové uživatelské rozhraní v textovém režimu, uživatel pracuje s prostředím pomocí ovládacích prvků, jako jsou tlačítka, různá pole pro výběr definovaných hodnot, menu atd. Výhodou je, že uživatel má možné operace předloženy před sebou, a pouze si z nich vybírá. To umožňuje mnohem rychlejší „sžití“ s aplikací. Rozhraní pro své zobrazení využívá možnosti, které jsou v kap. 2.1. • GUI – Jde o podobné uživatelské rozhraní jako TUI. Výhodou grafického režimu je univerzálnější výstup. Má větší možnosti zobrazení informací např. pomocí grafů. Tento typ prostředí je blíže popsán v samostatné kapitole 2.2.
2.1
Pseudografická uživatelská rozhraní
Některé starší počítače neumožňovaly práci v plnohodnotném grafickém režimu. Jednoduché grafické obrazce však bylo možno vytvářet ze specializovaných znaků, které se typicky nacházely mimo standardní část ASCII kódu, tj. na pozicích 0-31 a 128-255. Znaky mimo běžný repertoár (malá a velká abeceda, číslice apod.) většinou obsahovaly různé rámečky, horizontální, vertikální a diagonální části úseček apod. Pseudografika se používala i na těch počítačích, které umožňovaly grafický výstup. Zde se využívalo možnosti uživatelské změny znakové sady a barevného výstupu jednotlivých znaků. Předností tohoto způsobu tvorby grafiky byla rychlost zpracování.
2.2
Grafické uživatelské rozhraní
Je to metoda interakce uživatele s počítačem pomocí „přímé manipulace“ s prvky systému pomocí zástupných grafických objektů, doplňujících základních textovou komunikaci. „Uživatel je zjednodušen na cizince, který si na všechno ukazuje prstem“ (ukazovacím zařízením, posunem kurzoru klávesnicí, pohybem v menu ...) - Jef Raskin. V současné době je u pracovních stanic/terminálů standardem grafické prostředí, které uživatelům přináší snazší a intuitivnější ovládání (zejména pro počítačové laiky). Tato prostředí označujeme termínem grafické uživatelské prostředí (GUI – Graphical User Interface). S nástupem grafických prostředí byl těsně spjat vývoj objektového programování a programování řízeného událostmi. Myšlenky na použití grafických objektů k ovládání počítače pocházejí z konce 60. let, z doby, kdy se ještě počítače stavěly z mnoha malých integrovaných obvodů, dříve, než se na trhu objevil první mikroprocesor (Intel 4004 v roce 1971). První realizované grafické prostředí pochází z vývojových laboratoří Palo Alto Research Center (PARC) firmy Xerox. Již zde navrhli všechny základní prvky tohoto rozhraní, které bylo označováno jako WIMP (Window-Icon-Mouse-PullDown). Použili jako první techniky překrývajících se oken, znázornění objektů pomocí ikon, využití myši i techniku roletových a vyskakovacích oken. Rozhraní bylo použito ve vývojovém prostředí pro objektově orientovaný jazyk SmallTalk a v kancelářském systému pracovních stanic Xerox Star [8]. Po jeho úspěchu si prakticky každá firma vytvořila vlastní GUI, čímž vznikla v druhé polovině 80. let
Strana 14
2 Uživatelská Rozhraní
značně nepřehledná situace. Ke konci 80. let došlo ke sdružování mezi výrobci a programátorskými firmami za účelem zajištění vyšší kompatibility a přenositelnosti mezi jednotlivými systémy. Výhody GUI: • Velmi rychlé/žádné učení (všechny nabídky jsou v grafické nabídce) • Možnost unifikace vzhledu aplikací (zásady návrhu dialogů),…) • Snadná realizovatelnost „oživení“ práce s barevnými schématy skiny Na osobních počítačích se pro pracovní účely dnes používají téměř výhradně grafická uživatelská rozhraní typu desktop, dále se na PC můžeme setkat s rozhraním označeným jako PUI, jde o zjednodušené GUI často používané v hrách. Nejnovějším typem grafického rozhraní je ZUI, které využívá třetí rozměr, buď takto využívá 3D akcelerátory k zrychlení vykreslování, nebo k plnohodnotnému trojrozměrnému uživatelskému rozhraní. Na zařízeních, která nedisponují takovými kvalitními vstupními prostředky, se používají různé zjednodušení. Můžou to být zařízení, které nevyžadují tolik složité ovládání, nebo jejich povaha neumožňuje kvalitnější ovládací prostředky, jde o převážně přenosná zařízení jako telefony,diáře atd. Takové zjednodušené uživatelské prostředí se může omezit, až na pouhé menu. 2.2.1 Ovládání GUI Nejrozšířenějšími ovládacími prostředky jsou klávesnice a 2D ukazovací zařízení, jako například myš, dotykový displej, trackball nebo touchpad. U mobilních telefonů se můžeme setkat s joystikem nahrazujícím kurzorové klávesy. Jako s dalším prostředkem spíše doplňkovým se můžeme setkat s ovládáním pomocí hlasu. Velmi zajímavým prostředkem ovládání se do budoucna jeví ovládání myšlenkami, jenž je v zájmu výzkumných aktivit některých vědeckých center, či ovládání na základě rozpoznávání obrazu pomocí gest(mrkání očí a podobně). Takové na první pohled absurdní přístupy však mají velký význam pro lidi pohybově či jinak postižené, kterým postižení znepříjemňuje nebo úplně znemožňuje práci s výpočetní technikou. Rysy prostředí ovládaných klávesnicí(telefony, klávesnicová PDA, prům. Terminály) [2]: • Okna neobsahují zbytečné widgety (min/max/zoom) • Vyhrazené kontextové klávesy(šipky, enter, esc, menu) • různě složitý „systém“ klávesových zkratek nejsložitější operace je možné přenechat na CLI obtížná práce s grafickými úlohami (jemný posuv kurzoru) 2D ukazovací zařízením: • ovládání výhradně vizuálními komponentami • vizuální objekty musí být vždy jasně rozlišitelné • pro zadávání textu je nutný systém rozpoznání psaného písma a nebo virtuální klávesnice.
Kombinované ovládání(všechny běžné GUI typu desktop):
• Snaha o nalezení vyváženého řešení obou přístupů • Snaha o redundanci obou metod (uživatel si vybere sám)
2.2.2 GUI typu desktop Jde o prostředí, která jsou převážně používaná na osobních počítačích. Základem prostředí je pracovní plocha na níž jsou umístěny ikony a okna aplikací. Aplikace pracují se samostatnými okny, která se mohou překrývat. Jedno z nich je vždy aktivní. Aktivní okno spolupracuje s klávesnicí a tak je umožněn vstup od uživatele. V rámci okna může v jednu chvíli být aktivní pouze jeden ovládací prvek, který se mění vyhrazenu klávesou. Takovéto ovládání pomocí klávesnice je značně nepohodlné a neefektivní, k pohodlné práci s grafickým desktopovým prostředím a okny slouží myš, což je ukazovací zařízení, které pohybuje kurzorem po obrazovce a pomocí jednoho nebo i více tlačítek může vyvolávat různé události.
2 Uživatelská Rozhraní
Strana 15
Desktop uživatelské rozhraní mají například operační systémy MS Windows, Mac OS, případně Linux. Jde o událostmi řízená multitaskingová prostředí. Tyto rozhraní nabízí širokou nabídku ovládacích prvků, jejich rysem je volné rozložení těchto prvků na pracovní ploše. Mimo to nabízejí libovolné nastavení jejich vzhledu takzvané „skinování“. Skinování umožňuje operátorovi přizpůsobit si systém, případně jednou za čas obměnit jinak monotóní vzhled, tak aby se mu s počítačem lépe a tvořivěji pracovalo. Posledním trendem ve vývoji GUI je využití trojrozměrného zobrazení, s takovými znaky se však v průmyslových aplikacích nesetkáme. Desktop GUI se v průmyslových aplikacích příliš nepoužívá, jestliže je takový přístup použit, je žádoucí použít 2D ovládací zařízení. Vzhledem k obvykle stísněným podmínkám je vhodné použít dotykovou obrazovku viz. obr.1, pokud vyhoví svou menší odolností. Desktop provedení není vhodné pro malé displeje, jeho přednosti vystupují až při správě více najednou běžících úloh.
Obr.1 Mobilní průmyslový terminál DNeT X7 s dotykovou obrazovkou. 2.2.3 Minimalistická a mobilní GUI Minimalistická GUI se často používají v průmyslové automatizaci u grafických terminálů, taková poskytují jen nezbytné minimum ovládacích prvků. Různá zjednodušení používají i GUI mobilních přístrojů, jako elektronické diáře, mobilní telefony, kapesní počítače apod. Takto zjednodušená uživatelská rozhraní mají za cíl šetření hardwarových prostředků zařízení, přizpůsobení složitosti obsluze či jen uzpůsobení pro snadné ovládání použitými ovládacími perifériemi. Prostředí s přímo volenou nabídkou Jak již bylo řečeno minimalistická GUI se často používají v průmyslové automatizaci u grafických terminálů. Pro přepínání pohledů a zadávání předdefinovaných hodnot jsou buď vyhrazené klávesy přímo na terminálu a nebo hardwarové prvky na ovládacím panelu zařízení viz obr.2. Tyto kontextové klávesy mění svoji funkci podle aktuálního pohledu. Jen výjimečně jsou ovládány dotykovými displeji kvůli ceně a malé odolnosti. Při malém počtu kláves mají jen omezené operační možnosti na místě, pokud existuje i nadřazené pracoviště, složitější operace se přenechávají na něj. Průmyslové terminály jsou uvnitř plnohodnotné počítače, zjednodušení se proto projevuje hlavně navenek. Bývají navrhovány s ohledem na nekvalifikovanou obsluhu a často těžké provozní podmínky. Hlavním kritériem je doba chodu bez údržby a schopnost vypořádat se i s drobnými poruchami [2].
Obr.2 Grafický terminál s tlačítky pro přímé přepínání pohledů a zadávání hodnot Je-li potřeba zadávat různorodější vstupy, může být terminál doplněn numerickou klávesnicí pro zadání číselné informace jako na obr.3. Podobné řešení je například rozšířeno u bankomatů.
Strana 16
2 Uživatelská Rozhraní
Obr.3 Grafický terminál APT2100G. Výhodou toho provedení je přehlednost, snadnost a rychlost obsluhy klávesami, nevýhodou už zmíněné nízké operační možnosti. Jelikož počet operací na jedné obrazovce je omezen počtem ovládacích kláves, není toto řešení vhodné pro složitější systémy, tato koncepce by vedla k neúnosnému množství podnabídek, což by bylo nepřehledné a časově náročné na ovládání. Prostředí s nepřímo volenou nabídkou Je to další možnost GUI, která se používají v mobilních či průmyslových aplikacích. Základem jsou dialogy a práce s aktivním ovládacím prvkem viz. obr.4. Pro jeho výběr slouží zpravidla kurzorové klávesy, šíře nabídky tedy není omezena počtem kláves.
Obr.4 Grafické uživatelské rozhraní OS Epoc. Jde o GUI ovládané klávesnicí, přesto nabízí poměrně příjemné ovládání. Prostředí neobsahuje zbytečné prvky, které nepotřebuje jako různé maximalizace oken apod. S GUI se pracuje pomocí ovládací prvků, které jsou řazeny v sloupcích či řádcích, tak aby je bylo snadné procházet kurzorovými klávesami. Toto prostředí používá k zpřehlednění a k zjednodušení ovládání vnořování do podnabídkových dialogů. Pohyb v prostředí je zajištěn pomocí vyhrazených kontextových kláves jako kurzorové šipky, menu atd. a používání dialogů. Pro potvrzení volby dialogu je přímo vyhrazená klávesa, stejně tak pro zamítnutí a návrat zpět. Tyto principy využívá i většina dnešních „mobilních“ UI. Přestože GUI ovládané pouze klávesnicí zřejmě nikdy neposkytne takové intuitivní a příjemné ovládaní jako v kombinaci s 2D ukazujícím zařízením, toto řešení je kvalitní, zvláště je-li nějaký důvod nepoužít ukazujícího zařízení. Kombinace prostředí typu Epoc a UI ovládaného výhradně kontextovými klávesami, které dynamicky mění svoji funkci, používá většina mobilních telefonů viz. obr.5.
Obr.5 Příklad GUI mobilního telefonu.
Strana 17
3
GRAFICKÝ HARDWARE
Pro komunikaci mezi člověkem a výpočetní technikou slouží mimo jiné i grafické prostředky, někdy také nazývané grafické periferie. V současné době pravděpodobně není zapotřebí význam grafického výstupu u výpočetní techniky zdůrazňovat. V této kapitole se budu zabývat převážně grafickými periferiemi pro tvorbu obrazu, který se může dynamicky měnit, a jsou tedy použitelné pro konstrukci grafického uživatelského rozhraní.
3.1
Rozdělení grafických periferií
Všeobecně je možné grafické periferie rozdělit podle různých hledisek. Podle směru komunikace na: • vstupní - člověk data do počítače zadává pomocí klávesnice, myši, joysticku, joypadu, světelného pera atd., ale také skeneru, digitálního fotoaparátu a kamery • výstupní - člověk data od počítače získává pomocí výstupů ze souřadnicových zapisovačů (plotterů), rastrových tiskáren, monitorů apod. Podle typu grafické informace na: • vektorové - grafická informace je zapsána v podobě geometrických tvarů. Mezi tato zařízení patří například souřadnicové zapisovače a vektorové displeje; • rastrové - grafická informace je zapsána ve formě bodů v pravidelné rastrové mřížce. Mezi tato zařízení patří rastrové tiskárny, běžné CRT a LCD monitory apod. Podle doby uchování grafické informace: • zařízení s dočasným záznamem (CRT monitory, LCD monitory) • zařízení s trvalým záznamem (souřadnicové zapisovače, rastrové tiskárny, osvitové jednotky)
3.2
Displeje
3.2.1 Vývoj displejů Z hlediska vytváření obrazu je podstatné, zda-li je obraz na monitoru složen z vektorů (krátkých úseček), či z bodů rastru (pixelů). Podle toho také rozlišujeme vektorové displeje a rastrové displeje. Vzhledem k tomu, že v počátcích počítačové grafiky některé počítače byly analogové, byl pro zobrazení výpočtů použit běžný osciloskop, který dokáže zobrazit funkci s jednou nezávislou proměnnou (pomocí modifikovatelné časové základny) nebo se dvěma proměnnými. Po příchodu hybridních a posléze i číslicových počítačů stále ještě přetrvávala snaha zobrazovat obraz pomocí osciloskopu či jiného podobného zařízení. Od těchto snah se však s rostoucí složitostí zobrazovaných informací postupně opustilo [1]. Grafické výstupy z počítačů jsou dnes už téměř bez výjimek „rastrové“. Vektorový přístup se dnes ve výpočetní technice využívá především „virtuálně“, softwarově a je-li potřeba zobrazit převádí se data do rastrové podoby. Vektorové displeje V minulosti se používaly vektorové displeje, kdy byl obraz složen z krátkých úseček nebo složitějších geometrických tvarů (lomených úseček, oblouků apod.). Předchůdcem vektorových displejů byly analogové osciloskopy, které se dodnes s úspěchem používají v elektrotechnice pro měření elektrických veličin. Tyto displeje jsou však u většiny dnešních aplikací neefektivní, protože neumožňují jednoduše zobrazovat složitější obrazce [1]. Mezi přednosti vektorových displejů patří jednoduché zobrazení grafů a liniových schémat. Pomocí vhodně navrženého řadiče displeje lze vykreslovat i jednotlivé znaky, takže jejich popis nemusí být uložen v operační paměti počítače. Další předností jsou obecně malé nároky na kapacitu paměti a přitom velká rozlišovací schopnost, protože každý vektor může být reprezentován pomocí dvojice souřadnic, které v paměti zabírají pouze několik bytů.
Strana 18
3 Grafický hardware
Mezi nevýhody patří zejména omezení celkové délky všech zobrazených vektorů, která je dána rychlostí zhášení bodů na obrazovce. Další nevýhodou je praktická nemožnost zobrazení barevné či příliš komplikované grafiky. Rastrové displeje V současnosti se u převážné většiny počítačů používají rastrové displeje, u kterých je obraz složen z velkého množství malých barevných bodů (pixelů) uspořádaných v pravidelné rastrové mřížce - rastru. Mezi přednosti rastrových displejů patří jejich schopnost zobrazit prakticky libovolně složitou grafiku, od jednoduchých jednobarevných kreseb po plno barevné fotografie. Také programová tvorba grafiky v rastru je poměrně jednoduchá. Mezi nevýhody lze počítat velké nároky na kapacitu paměti, ve které je zobrazovaný rastrový obraz uložen. Tato paměť, která se v některých případech nazývá framebuffer, na PC musí být také dostatečně rychlá, aby se celý obraz na monitoru mohl periodicky obnovovat. Displeje s předtištěnými tvary a znakové displeje Obraz u nich není složen z mnoha malých elementů (pixelů), ale je tvořen z větších spojitých obrazců popřípadě jejich částí. Takové řešení umožňuje kvalitní grafický, nebo textový výstup, při malém počtu obrazových segmentů. Díky tomuto malému počtu je i následný řadič jednoduchý a celkově je toto řešení levné. Hlavní nevýhodou je neuniverzálnost, nejsme schopni zobrazit jiné tvary než ty jenž byly předtištěny. 3.2.2 Základní typy Displejů Displeje jsou základní výstupní zařízení počítače. Slouží k zobrazování textových i grafických informací. Z hlediska uživatelského je displej jednou z nejdůležitějších částí počítače. Displejů existuje velké množství typů, které se liší kvalitou zobrazení, váhou, energetickou náročností, velikostí a v neposlední řadě i cenou. U moderních displejů je také kladen požadavek, aby nedocházelo k nežádoucímu vyzařování škodlivého záření. Z hlediska konstrukce GUI jsou nejdůležitějšími parametry maximální rozlišení a barevná hloubka. Důležité parametry displejů: • velikost úhlopříčky – rozměry displejů se nejčastěji udávají úhlopříčkou, u některých monitorů se ještě udává skutečně viditelná plocha. Velikost se udává v palcích. • maximální rozlišení – velikost rastru, ze kterého je obrazovka složena. Rozlišení se udává jako počet elementárních bodů (pixelů) umístěných v horizontálním a ve vertikálním směru. • barevná hloubka – počet barev, které lze současně zobrazit na obrazovce. Displeje se zpravidla dělí na monochromatické a barevné. • obrazová frekvence – údaj o tom, jak rychle se obraz na stínítku monitoru vykresluje (resp. obnovuje). Čím vyšší je obrazová frekvence, tím méně se obraz chvěje a oko je méně unavené. • bodová rozteč – je velmi důležitá vlastnost u CRT monitorů, je to přímá vzdálenost mezi sousedními body stejné barvy viz. obr.6. Obecně platí, že čím je bodová rozteč nižší, tím lépe. Při nízké bodové rozteči totiž monitor dokáže ostře zobrazit i vyšší rozlišení.
Obr.6 Bodová rozteč - vlevo maska typu cromaclear, vpravo typu invar. Nejrozšířenějšími typy displejů jsou díky svým dobrým vlastnostem CRT a LCD.
3 Grafický hardware
Strana 19
3.2.3 CRT monitory Obraz se u nich vytváří postupným vykreslováním jednotlivých bodů v rastru. Elektronová tryska (v případě barevného obrazu jsou tři pro 3 základní barvy RGB) je zdrojem elektronového paprsku vyslaného ke stínítku obrazovky. Paprsek je pak vychylován pomocí vychylovacích cívek v horizontálním i vertikálním směru. Takto se vykreslí na obrazovce celý obraz, poté se paprsek vrátí do výchozí polohy a celý děj se opakuje s novým obrazem. Působením vnějších vlivů je paprsek rozostřen. Proto před dopadem na luminofory prochází paprsek ještě maskou, která jeho tok usměrní. V případě barevného obrazu musí maska přesně vedle sebe usměrnit 3 paprsky současně. Jejich kombinací se vytváří jeden barevný bod [3]. Výhody CRT monitorů: • Nižší pořizovací cena – CRT i přes výrazné sblížení cen jsou stále levnější. Při započítání nákladů na provoz a delší životnosti LCD však vychází výhodněji právě displeje typu LCD. • Větší zorný úhel – hodí se pro aplikaci kde se diváci budou dívat na displej z různých úhlů. • Rychlost zobrazení – Jedním z nedostatků LCD je rychlost zobrazování. Přechod z jedné barvy do jiné barvy jednotlivých bodů je mnohem pomalejší než u CRT, takže při rychlých změnách obrazu dochází k jeho rozmazání. Rychlost zobrazování u LCD se nazývá rychlost odezvy. U CRT monitorů k tomuto jevu nedochází. CRT monitory jsou tak vhodnější pro dynamičtější výstupy. • Různá rozlišení – Velkou výhodou CRT monitorů je možnost práce v různých rozlišeních. U LCD je práce v jiném než standardním rozlišení velmi nepříjemná. Vyšší rozlišení není téměř vůbec možné použít. V nižším rozlišení se zase musí spokojit s rozmazanějším obrazem. Současné CRT monitory poskytují kvalitní obraz, který neztrácí kvalitu při pohledu z vysokých úhlů či horších světelných podmínkách. Kvůli své hmotnosti a složitosti konstrukce se nehodí se do náročných mechanických podmínek. 3.2.4 LCD displeje LCD displeje pracují na základě propouštění a blokování světla, které je vyzařované buď z vnějšího zdroje světla a nebo je zajištěné bočním, případně zadním podsvícením. Základem jsou tzv. Kapalné krystaly, což je označení pro molekuly, které se v určitém teplotním rozmezí shlukují do různých nepravidelných tvarů. V současnosti jsou používané materiály, které mají potřebné vlastnosti v rozmezí teplot –5 až +75 °C [6]. Displeje na bázi kapalných krystalů představují v dnešní době nejvíce se rozvíjejí segment trhu displejů pro počítače. Existuje celá řada těchto displejů, od jednoduchých pasivních jednobarevných displejů používaných v kalkulačkách po aktivní displeje s velkým úhlem pohledu, malou dobou odezvy a možností zobrazení grafiky v pravých barvách (true color). Výhody LCD displejů: • Celková Cena - celková cena s započtením nákladů na provoz a s zohledněním delší životnosti LCD vychází výhodněji. • Zdraví - Vzhledem k tomu, že zobrazení u LCD mnohem více připomíná tištěné médium, je pro oči zobrazování na LCD přirozenější a unavuje oči pomaleji. K dobru LCD lze také připočíst nulové elektromagnetické vyzařování. • Rozměry - Velkou výhodou LCD jsou minimální rozměry a menší váha. Zabírají tak málo místo na pracovní ploše, popřípadě se dají snadno zabudovat do konstrukce. • Barevné zobrazení a úhly pohledu - Co se týká barevného zobrazení, mají LCD schopnost sytějšího zobrazení základních barev oproti CRT. Nevýhodou u LCD jsou problémy s homogenitou zobrazení, což může způsobovat nerovnoměrná úroveň podsvícení. Navíc se při pohledu na LCD z jiného než standardního úhlu se projevují barevné změny a posuny. • Úsporný provoz - LCD displeje mají velmi nízký příkon.
Strana 20
3 Grafický hardware
Mezi další výhody LCD displejů patří zejména dokonalá geometrie obrazu (pixely jsou na obrazovce pevně určeny, obrazovka je dokonale plochá). Z počátku měli LCD displeje špatný zorný úhel, tento nedostatek se podařilo výrazně vylepšit Vzhledem ke svým vlastnostem jako jsou malé rozměry, hmotnost a nízká spotřeba elektrické energie, se LCD displeje výborně hodí na mobilní zařízení všeho druhu. Nacházejí široké uplatnění v mobilních telefonech, hodinkách, elektronických diářích, přenosných počítačích a v řadě další spotřební elektroniky. Díky svým vlastnostem se dají lehce zabudovat a jsou vcelku odolné. 3.2.5 Plazmové displeje Jednotlivé body jsou složeny z malých doutnavek vytvořených mezi dvěma elektrodami. U prvních plazmových displejů se zobrazovalo přímo světlo z doutnavek (které je narůžovělé), dnešní plazmové displeje mají na horní elektrodě vytvořenu vrstvu z barevných luminoforů. Tento typ displejů nachází uplatnění u domácích kin.. Vzhledem k tomu, že doutnavky vykazují hysterezi (paměťový efekt), je možné vytvářet statický, neblikající obraz [1]. 3.2.6 Dotykové obrazovky Nejedná se o zvláštní typ displeje ale většinou jde o průhlednou folii, která se umísťuje na samotný displej. Tyto obrazovky jsou náchylné na poškození, proto se příliš nepoužívají v průmyslových aplikacích. Dotykové obrazovky nabízí uživateli intuitivní ovládání. Existují například rezistivní, kapacitní technologie.
3.3
Řadiče displejů a grafické adaptéry
Pro vytvoření grafického výstupu na displeji se používají takzvané grafické řadiče. Výstupem řadiče jsou přímo řídící signály pro obsluhu LCD displejů. Naproti tomu výstupem grafických adaptérů je normovaný signál, který je dále zpracován elektronikou připojeného displeje. Z hlediska programového ovládání grafického systému, mají vlastnosti grafického řadiče větší význam než samotného displeje. Nejjednodušší grafické řadiče pouze převádějí digitální data na signály nutné pro zobrazovací jednotku. Složitější řadiče už obsahují vlastní paměť a některé dokonce umožňují zobrazovat jednoduché objekty samostatně (úsečky, kruhy, písmena atd.). Takovéto složitější a samozřejmě i dražší systémy se nazývají grafické akcelerátory. Vyšším stupněm grafické akcelerace je podpora zobrazování třídimenzionálních těles. Nejvyšším stupněm je pak samostatné zobrazení celé třídimenzionální scény jen pomocí řadiče/adaptéru. Řadiče jsou vyráběny jako samostatné, či integrované v mikrořadičích nebo jako zabudované v řídící elektronice displeje. Poslední možnost je pak nejméně náročná na zprovoznění a tedy i nejvýhodnější při kusové výrobě. Integrované řadiče displejů obsahují především mikrořadiče určené pro mobilní aplikace s grafickým výstupem, tedy pro mobilní telefony a PDA kapesní počítače, výhodou integrovaného řešení je nižší cena řadiče. 3.3.1 Parametry grafických řadičů U grafických řadičů nás zajímají následující parametry: • maximální rozlišení – velikost rastru, ze kterého je obraz složen. Maximální rozlišení je omezeno velikostí grafické paměti. • barevná hloubka – počet barev, který dokáže řadič zobrazit na obrazovce. Nejnižší barevnou hloubku má samozřejmě monochromatický obraz • velikost grafické paměti – ta ve velké míře závisí na rozlišení a barevné hloubce, její minimální velikost je součinem počtu pixelů s paměťovou náročností jednoho pixelu. • obrazová frekvence – údaj o tom, jak rychle řadič obnovuje obraz na displeji. • rychlost sběrnice – čím rychlejší je použitá sběrnice, tím rychleji se mohou přenášet data mezi řadičem a MPU • akcelerace grafiky – výkonnější řadiče nabízejí akceleraci 2D nebo i 3D grafiky.
3 Grafický hardware
Strana 21
3.3.2 Připojení řadiče displeje k MPU Pro komunikaci mezi řadiče a MPU je potřeba, aby měli propojeny datové porty a řídící signály. Toto propojení může být provedeno několika způsoby: • integrované řadiče – propojení čipu a řadiče je provedeno interně. • přímo připojený řadič – zapojení se označuje jako „pin to pin“, výhodou je jeho jednoduchost, nevýhodou , že nastavení řídících signálů jejich správnou chronologii musí obstarat řešitel softwarově. • namapované porty řadiče do adresního prostoru MPU – další možností je namapovat porty řadiče na externí paměťovou sběrnici. Dojde tak k namapování registrů řadiče displeje do paměťového prostoru mikrořadiče a přístup k nim je řešen zápisem do paměti na adresu odpovídající mapování. Nevýhodou může být zmenšení adresního prostoru o namapovanou část. • namapovaná grafická paměť a registry řadiče do adresního prostoru MPU – některé vybavenější řadiče umožňují namapovat přímo nejen, ale i celou grafickou paměť v takovém případě je velkost zabraného adresního prostoru nutně výrazně větší než v předchozím případě.
3.4
Popis řadiče T6963CDS
T6963C je LCD řadič navržený pro použití s monochromatickým LCD displejem a s grafickou pamětí. Zařízení má 8-bitovou datovou sběrnici a řídící vstupy pro zápis nebo čtení z MPU rozhraní. Řadič může být přímo připojen k libovolnému mikrořadiči s 5V TTL logikou. Má integrován 128-slovní generátor znaků ROM, který může ovládat vnější obrazovou RAM až do výše 64 Kbytů. Alokace textu, grafiky a vnějšího znakového generátoru RAM je snadno proveditelná a zobrazovací okno může být volně přemísťováno v alokovaném paměťovém rozsahu. Řadič podporuje velmi široký rozsah zobrazovacích módů, který umožňuje výběr různých kombinací prostřednictvím sady programovatelných vstupů. Může být použito v textovém, grafickém nebo v kombinaci textového a grafického módu. Možné kombinace jsou OR, AND a XOR, výsledný obraz je pak výsledkem jedné z logických funkcí mezi textovým a grafickým výstupem. Tento řadič umožňuje pouze převod obsahu grafické paměti na obrazovku LCD displeje. Dále obsahuje instrukce pro nastavení zobrazovacích režimů (text/grafika) a pro přenos dat z MPU do grafické paměti a obráceně. Neobsahuje žádné funkce pro akceleraci vykreslování grafiky. Tento řadič může současně obsluhovat až dva displeje. 3.4.1 Vlastnosti T6963CDS má tyto vlastnosti: • Zobrazovací formáty (nastavitelné programovatelnými vstupy) Sloupců : 32,40,64,80 Řádků : 2, 4, 6, 8, 10, 12, 14, 16, 20, 24, 28, 32 Kombinace počtu sloupců a počtu řádků nesmí způsobit překročení frekvence nad 5.5 Mhz viz. Tab.1. • Znakový font (nastavitelné programovatelnými vstupy) Horizontální body : 5, 6, 7, 8 Vertikální body : 8 (stále) Je nezbytné nastavit znakový font v grafickém módu stejně jako v textovém módu. Změnou výběru fontu se nemění oscilační frekvence. • Možné zatížení :od 1/16 do 1/128 • Vestavěný 128-slovní znakový generátor ROM • Vnější grafická paměť : do 64 KB Adresy textové, grafické a vnější oblasti znakového generátoru v obrazové paměti jsou závislé na programovém vybavení • Operace čtení nebo zápis z CPU neruší zobrazení. • Obsahuje vestavěný krystalový oscilátor. Oscilační frekvence se přizpůsobuje zobrazovací formátu. Při použití vnějších hodin použijte jako vstup XI pin (XO otevřený).
Strana 22
3 Grafický hardware Vnější kondenzátory
Krystalová oscilace : 20 až 30 pF Keramická oscilace : 30 až 100 pF Vestavěný zpětnovazební rezistor : 900 kΩ • Toshiba LCD ovladač LSI (jiný než tyto s vestavěnou RAM) může být připojen k zařízení • Vnější obrazová RAM musí být statická RAM. T6963C nemůže obnovovat dynamickou DRAM. • Znakové funkce mohou být použity pouze v textovém módu. Nemohou být použity v grafickém ani v kombinaci s znakovým módem. 3.4.2 Inicializace a ovládání displeje • Po zapnutí je nezbytné zařízení resetovat. To se provede držením signálu RESET na logické úrovni 0 aspoň po dobu pěti hodinových cyklů. • Když signál HALT = 1 zastaví se hodiny. Napájení LCD displeje musí být vypnuto, k ochránění LCD displeje před stejnosměrným přepětí. • Funkce HALT zahrnuje i provedení funkce RESETu. • Funkcí RESET jsou vynulovány registr sloupců / řádků a zobrazovací registry. • Před posláním dat či příkazu musí být zkontrolován status řadiče. MSB = 0 musí být zkontrolován zvlášť. Je zde možnost chybné operace kvůli nekorektnímu přerušení. • Bity STA0 a STA1 musí být kontrolovány zároveň při kontrole statusu. Když je prováděn příkaz, přenos dat může způsobit chybu. • T6963C může obsloužit pouze jeden byte v jednom instrukčním cyklu. Není možné poslat víc jak dva byty dat v instrukčním cyklu. • Při použití příkazu, který vyžaduje data, je důležité tyto data poslat jako první. • Znakový kód, který T6963C používá, je odlišný od ASCII kódu. 3.4.3 Rozhraní pro připojení paměti RAM Vnější paměť RAM se využívá k uchovávání obrazových dat (oblast textu, grafiky a vnějších dat znakového generátoru). V režimu s pouze jedním displejem(single-scan) můžou tyto oblasti dat volně alokována v celém rozsahu použité paměti(maximálně 64kB). V režimu s dvěma displeji(dualscan) je paměť v rozsahu od 0000H do 7FFFH (tedy spodní polovina maximálního paměťového rozsahu) vyhrazena pro první displej, zbývající polovina tedy od 8000H do FFFFH náleží displeji druhému. V režimu dual-scan se alokují zmíněné oblasti textu, grafiky a CG pouze pro první displej, druhý displej přebírá stejné nastavení s tím, že oblasti, které mu přísluší, leží v horní polovině paměti, jejich adresy jsou tedy o 32k vyšší než pro LCD 1. 3.4.4 Inicializace řadiče Po zapnutí je nezbytné zařízení resetovat. To se provede držením signálu RESET na logické úrovni 0 alespoň po dobu pěti hodinových cyklů. V dalším kroku je potřeba nastavit oblasti grafické paměti, které se vyhradí pro uchování grafického a textového výstupu. Nepoužíváme-li současně oba módy, můžeme ponechat původní nastavení, které po restartu odkazuje obě oblasti na začátek paměti. Dále už jenom zbývá nastavit použitý mód (grafický/textový), případně používáme-li oba módy zároveň, vybereme logickou funkci OR, AND nebo XOR, podle které se bude z textového a grafického výstupu skládat výsledný výstup na displej řadiče. 3.4.5 Komunikace MPU s T6963 Před zapsáním příkazu či dat do řadiče, je potřeba zkontrolovat, zda je připraven pro příjem. Přenos dat, v době kdy není řadič připraven, by mohl vést k chybě. Stav řadiče zjistíme ze stavového slova. Stavové slovo má formát jako v tab.1. Před zápisem či čtením dat nebo příkazu je pak nutné zkontrolovat, jestli jsou příznaky STA1 a STA0 v logické 1 viz. Tab.2. V režimu automatického zápisu dat je nutné kontrolovat příznak STA3.
3 Grafický hardware
Strana 23
MSB
STA7
LSB
STA6
STA5
STA4
STA3
STA2
STA1
STA0
Tab.1 Stavové slovo řadiče T6963.
STA0 Kontrola schopnosti zpracovat příkaz
0: Nepřipraven 1: Připraven
STA1 Kontrola schopnosti číst/zapsat data
0: Nepřipraven 1: Připraven
STA2
Kontrola schopnosti čtení dat v automatickém režimu
0: Nepřipraven 1: Připraven
STA3
Kontrola schopnosti zápisu dat v automatickém režimu
0: Nepřipraven 1: Připraven
STA4 Nepoužito STA5 Kontrola operační schopnosti řadiče STA6
Příznak chyby. Použitý funkcemi Screen Peek a Screen Copy
STA7 Kontrola stavu displeje
0: Bez chyby 1: Chyba 0: Nepřipraven 1: Připraven 0: Vypnuto 1: Zapnuto
Tab.2 Význam příznaků ve stavovém slově. Po úspěšné kontrole můžeme s řadičem dále komunikovat. Pokud není řadič v režimu automatického přenosu dat, s řadičem pracujeme pomocí příkazů. Má-li příkaz nějaké parametry(maximálně dva), je nutné je zapsat jako data, ještě před zapsáním příkazu. Řadič T6963C má dva posuvné registry pro parametry, platné jsou tedy poslední dva zapsané. Nejčastěji používaným příkazem je přenos dat do grafické paměti řadiče. Data se přenesou na adresu, na kterou odkazuje registr řadiče „adresový ukazatel“. Proto při přenosu dat na konkrétní pozici v grafické paměti, je nutné tento registr nastavit příslušným přenosem. Při přenosu většího bloku dat se dá využít příkazu, který po úspěšném přenosu dat do grafické paměti, zvýší adresový ukazatel o jedna. Pro tento účel je však mnohem výhodnější využít režim automatického přenosu dat. Aktivování tohoto režimu se provede příslušným příkazem řadiči. Po jeho aktivaci případný zápis dat do řadiče, nezpůsobí jejich uložení do posuvného registru řadiče, ale způsobí jejich přímý přenos do grafické paměti, podle stejných pravidel jako při přenosu dat příkazem. Tento režim tak ušetří zhruba polovinu komunikace. Ukončení režimu automatického přenosu dat se provede opět příslušným příkazem.
Strana 25
4
GRAFICKÉ ALGORITMY
Umožňují převod spojitých grafických obrazců do rastrové podoby (jako čáry, oblouky, obdélník, polygony, křivky...), či přímo vykreslení rastrových obrazců (bitmapové obrázky, fonty) na obrazovku displej. Rastr je zpravidla tvořen pravoúhlou maticí obrazových bodů (pixelů), bývá realizován lineární paměťovou oblastí, často zvanou framebuffer. Použití framebufferu je široce používaným postupem, kdy se přenos celého obrazu najednou do grafické paměti, nezpůsobuje „mrkání“ obrazu, na rozdíl od přímého vykreslování do grafické paměti. Pro snadnější práci je vhodné, aby i uspořádání pixelů v této oblasti bylo lineární, tj. aby byl obraz ukládán po sobě řazených řádcích (či sloupcích, ale to není obvyklé). Za splnění těchto podmínek je pak jednoduše vypočitatelná adresa každého pixelu pomocí jeho souřadnic. Jeden pixel bývá obvykle vyjádřen 1, 8, 16 nebo 32 bitovou hodnotou, podle použité barevné hloubky. 32 - bitové vyjádření je označováno jako true color a obsahuje přímo tři složky RGB. Pokud grafický výstup zobrazujeme na barevný displej, který je schopen zobrazit více barev, než s kolika pracuje software, pak obvykle hodnota pixelu neudává přímo barvu, ale tato hodnota je indexem barvy v barevné paletě. Při rasterizaci úsečky(či jakéhokoliv jiného spojitého grafického obrazce) zadané spojitou matematickou funkcí, dojde bohužel vždy k určitému zaokrouhlování, deformaci vykresleného obrazce viz. obr.7. Tuto nevýhodu rastrové grafiky lze potlačit, díky rozlišovacím schopnostem lidského oka, zmenšením obrazových bodů, nebo antialiasingem. Princip antialiasingu spočívá doplněním pixelů v místech nepřesností, s využitím různých barevných odstínů použité barvy, tak aby byl výsledek optimální.
Obr.7 Rasterizovaná úsečka. 4.1.1 Vykreslení obrazového bodu Vykreslení pixelu se provede zápisem na příslušnou adresu v obrazové matice. Za splnění podmínek popsaných v předchozí kapitole, je bitová adresa tohoto pixelu, který má souřadnice x a y, následující.
Pixel( x, y ) = offset + ( width ⋅ y + x ) ⋅ Bpp Offset pak znamená začátek paměťové obrazové matice, width její šířku a Bpp udává paměťovou náročnost jednoho pixelu v bitech. Rovnice platí, když souřadnice levého horní pixelu stanovíme na [0,0]. 4.1.2 Vykreslení úsečky Úsečku nejsnadněji zadáme kartézskými souřadnicemi počátečního a koncového bodu. Pro vykreslení úsečky je nutné provést tzv. rasterizaci. Přímka je např. snadno matematicky popsatelná analytickým vztahem y ( x ) = k ⋅ x + q . Tento vztah je pro kreslení „bod po bodu“ nevhodný. Pro úhel větší jak 45° dochází k nespojitosti. Možností je místo celých dosazovat reálná čísla, pro úhly blížící se 90° by krok v ose x musel být velice malý, navíc analytický vztah není schopen popsat svislou přímku. Tento problém nemáme při popsání přímky parametrickými rovnicemi, ani zde se však nevyhneme počítání s reálnými čísly. Pro celočíselnou rasterizaci přímky může použít DDA přírůstkový algoritmus, či více rozšířený Bresenhamův algoritmus.
Strana 26
4 Grafické Algoritmy
Bresenhamův algoritmus pro generování bodů úsečky používá pouze celočíselnou aritmetiku. Ve směru osy s větším přírůstkem (nezávislé) inkrementuje s krokem 1, ve směru druhé osy (závislé) vypočte chybový člen a podle něj určí bližší pixel k úsečce. Předpokládejme že nezávislá souřadnice je souřadnice x (v opačném případě by se postupovalo analogicky).
Označme: ∆ x = xB − x A , ∆ y = y B − y A Chybový člen:
e0 = 2 ∆ y − ∆ x
Výpočet se provede v rozsahu i ∈ N , i ∈ < 0, ∆ x > kde x0 = xA a y0 = yA. Je-li xA<xB potom kX = 1 v opačném případě kX = -1. Stejně tak analogicky yA
kY = 1 v opačném případě kY = -1. Potom pro rekurzivní výpočet i = i+1 dalšího bodu jsou dvě možnosti: • Je-li ei < 0 další bod má souřadnice [xi + kX, yi] a
ei + 1 = ei + 2 ∆ y • Je-li ei ≥ 0 další bod má souřadnice [xi + kX, yi + kY] a
ei + 1 = ei + 2( ∆ y − ∆ x )
4.1.3 Oříznutí úsečky Přesahuje-li úsečka oblast obrazové matice je vhodné ji před vykreslením oříznout – přepočítat souřadnice. Vhodnou metodou může např. být Cohen-Sutherlandova viz. obr.8. Vyhradíme – li oblast, do které chceme úsečku oříznout, souřadnicemi ymin, ymax, xmax a xmin, můžeme pak pokračovat podle následujících instrukcí. Metoda spočívá v těchto krocích: 1) Spočítám kódy koncových bodů CA,CB, podle toho v jaké oblasti vzhledem k oknu se nacházejí. Kód je 4-bitový ve tvaru yymax, x>xmax, x<xmin, kde každá podmínka reprezentuje jeden bit, je-li splněna má tato pozice v kódu hodnotu 1. 2) Je-li C A ∧ C B ≠ 0 , celá úsečka leží mimo okno a dále se jí tedy nezabýváme. 3) Je-li C A ∨ C B ≠ 0 , leží úsečka částečně v okně a částečně mimo něj. Je třeba přepočítat koncové body do polohy, kde se úsečka protíná s hranicemi nastaveného okna. To se provede tak, že pro každou jedničku ve výsledku logického součtu C A ∨ C B postupně úsečku ořezáváme. Např. pro yA>ymax počítám: • x A ' = x A + ( x B − x A ) ⋅ ( y max − y A ) /( y B − y A )
4)
• y A ' = y max Ořezanou úsečku vykreslíme, vhodnou metodou je například už zmíněný Bresenhamův algoritmus. Je-li C A ∨ C B = 0 , potom celá úsečka leží uvnitř okna a může přistoupit k jejímu vykreslení.
4 Grafické Algoritmy
Strana 27
Obr.8 Cohen-Sutherland metoda ořezání usečky. 4.1.4 Vykreslení elipsy, elipsovitého oblouku Rasterizaci elipsy můžeme provést např. Pomocí polygonů, složených z „dostatečně krátkých“ úseček. Vrcholy tohoto polygonu můžeme vypočítat z následujících rovnic.
x(t ) = xC + cos(ϕ ) ⋅ rA y (t ) = yC + sin(ϕ ) ⋅ rB Pro rasterizaci elipsy v základní poloze můžeme s výhodou použít Bresenhamův algoritmus, který nabízí celočíselnou aproximaci. Pracuje podobně jako algoritmus pro úsečku s chybovým členem. Vzhledem k tomu, že elipsa je osově souměrná, stačí jí pro její vykreslení spočítat v jednom kvadrantu, ostatní souřadnice v dalších kvadrantech se dostanou záměnou znamének Při realizaci algoritmu jako počáteční podmínky pro vykreslení elipsy s hlavní poloosou rA a vedlejší rB nastavíme tyto hodnoty:
i= 0 x0 = 0 , y 0 = rB
dx0 = 0 , dy 0 = rA 2 ⋅ rB 2
2
e0 = rB − rA ⋅ rB + rA
2
2
Algoritmus má dále dvě části, první provádíme dokud platí dxi < dyi. V této části je větší přírůstek na ose x, proto souřadnici x zvyšujeme o jedna a souřadnici y dopočítáváme na základě chybového členu. Potom pro rekurzivní výpočet i dalšího bodu jsou dvě možnosti: • Je-li ei < 0 další bod má souřadnice [xi + 1, yi] a
dxi + 1 = dxi + 2rB
2
2
ei + 1 = ei + rB + dxi + 1 • Je-li ei ≥ 0 další bod má souřadnice [xi + 1, yi - 1] a
dy i + 1 = dy i − 2rA
2
dxi + 1 = dxi + 2rB
2
2
ei + 1 = ei + rB + dxi + 1 − dy i + 1 Po první části algoritmu upravíme chybový člen:
(
(
2
2
)
)
ei = ei + 3 2 ⋅ rA − rB − dxi − dyi 2
Strana 28
4 Grafické Algoritmy
A dokončíme druhou část, do doby kdy je y<0 (opouštíme první kvadrant). Potom pro rekurzivní výpočet i = i+1 dalšího bodu jsou opět dvě možnosti: • Je-li ei > 0 další bod má souřadnice [xi, yi - 1] a
dy i + 1 = dy i − 2rA
2
2
ei + 1 = ei + rA − dy i + 1 • Je-li ei ≤ 0 další bod má souřadnice [xi + 1, yi - 1] a
dxi + 1 = dxi + 2rB
2
dy i + 1 = dy i − 2rA
2
2
ei + 1 = ei + rA − dy i + 1 + dxi + 1 K vykreslení eliptického oblouku lze také využit výše popsaný algoritmus s tím, že se každý bod kontroluje je-li ve výseči, která je vymezena dvěma úhly. α je počáteční úhel a β koncový. Detekce jestli určitý bod leží v oblouku pomocí úhlu polohy bodu vůči středu elipsy by nebyla vhodná, k takovému postupu by byli potřeba goniometrické funkce, což je časově náročné. Výhodnější je rozdělit si elipsu na intervaly(např. podle osy x) vymezenými koncovými body oblouku a zjišťovat jestli daný bod leží v daném intervalu viz obr.9. Vzhledem k tomu, že elipsa není z matematického hlediska funkce, tj. pro některé hodnoty nezávislé proměnné(x) má více než jedno zobrazení do závislé proměnné(y). Proto je nutné rozdělit elipsu minimálně na dva sektory souměrné podle některé z os procházející středem a určit pro ně intervaly zvlášť. Potom může nastat šest různých případů, čtyři jsou naznačeny na obr.9, zbylé dva jsou, všechny body v sektoru patří do oblouku a nebo žádný bod z tohoto sektoru do oblouku nepatří.
Obr.9 Vymezení intervalů elipsovitého oblouku v horním sektoru.
Strana 29
5
ŘEŠENÍ
Řešená jednotka sběru dat je určena pro embedded aplikaci, v průmyslových aplikacích je důležitá cena a účelnost řešení. Jádrem jednotky je osmibitový mikrořadič řady 8051, ovládacím prostředkem je jednoduchá klávesnice. Z těchto hledisek bylo navrženo výsledné řešení. Pro výběr grafických prostředků jsem určil tato kritéria: • Kompatibilita – je vhodné aby vybraný hardware umožňoval jednoduché připojení k danému mikrořadiči s co nejmenším počtem pomocných obvodů, z důvodu ceny a spolehlivosti. Zde se jeví výhodnější použití LCD displeje s vlastním zabudovaným řadičem, který umožňuje poměrně snadné připojení displeje k mikrořadiči. • Cena - je to důležitý parametr výrobku pro jeho úspěch na trhu. V embedded aplikacích se pokud to aplikace umožní používají levnější znakové LCD, dražší grafické displeje se používají v případech kdy je jejich použití účelné. • Přenositelnost - již z názvu „Jednotka sběru dat“ lze předpokládat, že zařízení bude určeno pro mobilní provoz a mělo by z toho důvodu být kompaktní a lehké. V této kategorii vyhrává jednoznačně LCD, který je mechanicky odolnější například proti vibracím, navíc má výhodu menší spotřeby elektrické energie, což může být důležité, bude-li jednotka napájena z akumulátorů. • Náročnost obsluhy – není závislá na použitém druhu displeje, ale spíše na rozlišení, barevné hloubce použitého módu a případně možnosti akcelerace řadičem. Naše aplikace nevyžaduje složitou grafiku a proto vystačíme s levnějším řadičem bez akcelerace grafiky. Z daných kritérií a popisu možností v dřívějších kapitolách se jeví jako lepší řešení LCD displej s vlastním zabudovaným řadičem. Konkrétní řešení bylo vybráno od firmy APEC monochromatický displej o rozlišení 240x128 s zabudovaným řadičem T6963CDS. Zvolený grafický hardware měl vliv i na vytvořené GUI. Návrh GUI jsem provedl podle těchto kritérií: • Náročnost obsluhy – k ušetření skromných hardwarových prostředků byl v konstrukci GUI zvolen spíše minimalistický přístup. • Vhodné využití malého zobrazovacího prostoru displeje – rozměry použitého displeje nejsou vhodné pro GUI typu desktop. Tato prostředí mají zpravidla mnoho ovládacích prvků, které zabírají plochu displeje. Navíc hlavní výhoda, dobrá práce s více aplikacemi současně, takovéhoto rozhraní, by v řešené jednotce nenalezla využití. • Podle složitosti ovládané aplikace – funkce realizované jednotky sběru dat je poměrně jednoduchá, neklade se za cíl shromážděná data dále zpracovávat. Pro tuto jednoduchou aplikaci by bylo dostatečné i prostředí ovládané pouze kontextovými klávesami, nebylo by ale vhodné pro případné rozšíření. • Vhodnost k danému ovládání – pro prostředí s přímo volenou nabídkou je vhodné, aby ovládací klávesy byly přímo u displeje, u jednotlivých nabídek. Případně aby byl přístroj vybaven dalšími ovládacími prvky, pro konkrétní funkce. Vzhledem ovládání 16-ti tlačítkovou klávesnicí a absenci 2D ukazujícího ovládacího zařízení(myš, touchpad či dotyková obrazovka) je vhodnější GUI s nabídkou volenou pomocí kurzorových a dalších kontextových kláves. Ovládací prvky jsou pak řazeny systematicky v sloupcích, či řadě, tak aby byli přehledně ovladatelné klávesnicí. Nedostatek kláves je řešen kontextovými klávesami, jenž mají pro různé ovládací prvky různé funkce, aktuální funkce je zobrazena v řádku nápovědy. Naše jednotka sběru dat je poměrně univerzální zařízení, které umožňuje připojení rozličných periférií, z hlediska její funkce půjde zpravidla o různé snímače. Proto jsem navrhl GUI, které je snadno rozšířitelné. Vytvořené uživatelské rozhraní pracuje s ovládacími prvky, které jsou uzpůsobené pro ovládání klávesnicí. Upřednostňuje jednoduchost, přehlednost a nenáročnost na hardwarové prostředky. Jeho bližší popis je v kapitole 5.4.
Strana 30 5.1
5 Řešení
Hardware část
Jádrem jednotky sběru dat je osmibitový mikrořadič C8051F112 plně kompatibilní s řadou 8051. Tento mikrořadič je navržen podle tzv. „hardwardské architektury“, tj. má oddělenu paměťovou sběrnici zvlášť pro program a data. Mikrořadič má integrováno 64kB flash RAM paměti pro uložení programu, 256B RAM v oblasti idata a 8kB RAM xdata, mimo to je přidáno 128kB externí pamětí RAM. Vzhledem k tomu, že C8051F1 je schopen adresovat maximálně 64kB, je paměť rozčleněna na 32kB banky, které se přepínají piny I/O portu P4.4 a P4.5. Velikost bank 32kB jsme zvolili proto, aby se nezmenšil dostupný adresní prostor, kvůli namapovaným portům displejů do vyšších oblastí adresního prostoru, více viz. kapitola 5.1.3. Jednotka je dále vybavena hodinami reálného času, konektorem sériové linky RS232, konektory pro grafický a textový LCD displej, sériovou sběrnicí a konektorem pro klávesnici. Jednotka má podobu oboustranného plošného spoje jehož rozložení jsem navrhl v programu Eagle. 5.1.1 Použitý displej V jednotce je použit LCD monochromatický displej, jde o výrobek firmy APEC. Displej má rozlišení 240 x 128 pixelů, rozměry viditelné oblasti 129 x 75 mm, při velikosti pixelu 0,47 x 0,47 mm. Obsluhován je řadičem T6963CDS zabudovaným v displeji, čímž je připojení displeje o dost jednodušší. Kontrast displeje je nastavitelný záporným napětím o velikosti až -20V na napájecích svorkách displeje. Tato hodnota je však zbytečně veliká, displej má optimální kontrast již při přibližně -12V. Nastavené napětí respektive kontrast regulujeme sériově zařazeným potenciometrem o rozsahu ≈ 0 – 20 kΩ. 5.1.2 Použitá klávesnice Pro ovládání jednotky je použita 16-tlačítková klávesnice. Tlačítka jsou uspořádána do čtyř sloupců a čtyř řádků jenž jsou „propleteny“ vodivými cestami. Všech osm vodičů je přivedeno na I/O port mikrořadiče. Stisknutá klávesa se vyhodnotí nepřímo na základě vodivosti mezi příslušným sloupcem a řádkem. Pro zjednodušení obsluhy se platně vyhodnocuje pouze jedna současně stlačená klávesa. Aby klávesa nebyla chybně vyhodnocena jako vícekrát stisknutá, jsou definovány časy, po kterých je teprve klávesa vyhodnocena jako stisknutá či uvolněná. Dále je možné nastavit opakování vyhodnocení pro trvale stisknutou klávesu. 5.1.3 Připojení T6963CDS k mikrořadiči řady 8051 Řadič displeje je připojen ke sběrnici externí paměti a namapován do externího adresovacího prostoru viz. schéma zapojení obr.10. Na tomto obrázku je v pravém spodním rohu umístěn konektor pro LCD displej se zabudovaným řadičem, jeho datová sběrnice je připojená přes buffer k datové sběrnici mikrořadiče. Buffer mimo své paměťové funkce, plní i funkci zesilovače, když zesiluje signály 3,3V logiky MPU na 5V logiku řadiče T6963C, stejně tak činí pomocné obvody oddělující sběrnici adresovou. Jedinou nevýhodou tohoto řešení je vyhrazení části paměti(v našem případě 256B v rozsahu adres FF00 - FFFF) pro komunikaci s porty řadiče, a tedy znepřístupněním této části paměti. Tomuto jsme se vyhnuli rozčleněním paměti do bank. Externí paměť jsme tak rozčlenili na čtyři 32kB banky adresované 15-bity sběrnice tedy adresou 0000 - 7FFF a dvěma piny portu P4 pro výběr jedné ze čtyř bank. Celkový počet adresovacích vodičů je sedmnáct, adresní prostor je tedy celých 217=128kB. Pro namapování řadiče jsme navrhli dekodér sestavený z hradel NAND(v pravém horním rohu obr.10), dekodér je připojen na adresovou sběrnici, je-li nastavena správná adresa aktivuje výstup dekodéru řadič LCD displeje. Signály WR, RD a CD jsou tak automaticky generovány hardwarově, podle toho kam a jestli se snažíme do paměti zapsat, či z ní číst. Z konkrétního zapojení tedy vyplývají tyto adresy pro komunikaci s LCD řadičem T6963C: • FF81 - zápis/čtení dat do/z registru řadiče, nebo přímo grafické paměti • FF80 - zápis příkazu,čtení stavu řadiče
5 Řešení
Strana 31
Obr.10 Schéma spojení T6963CDS s C8051F112.
5.2
Programování mikrořadiče 8051
Při programování mikrořadičů této, ale i jiných podobných řad, je potřeba soustředit se na určité odlišnosti oproti PC. Především je to jiná koncepce práce s rozdělenou pamětí pro program a data, je tak potřebné ohlídat si správnou adresaci konstant a proměnných. Další nepříjemností může být zásobník který je v rámci 256B paměti idata, a má poměrně malou kapacitu. Paměť idata je přímo adresovatelná ve většině instrukcí instrukční sady mikrořadiče, čím se dosahuje vysoké rychlosti práce s daty v této paměti a zároveň přeložený kód je kratší na rozdíl od práce s pamětí xdata. Nevýhodou většiny 8-mi bitových mikrořadičů je neschopnost nebo složitost přístupu k zásobníku, čímž veškeré parametry funkcí a lokální parametry musí být linkerem umístěny na pevné adresy. Umístnění je optimalizováno „overlay managerem“, který zajišťuje minimální spotřebu paměti a bezpečnost adres. Dalším specifikem je programování integrovaných periférií, jejich konfigurace případně použití se provádí zápisem nebo čtením hodnot z příslušných SFR registrů. Poslední důležitá část funkce 8051, je obsluha přerušení, je-li konkrétní přerušení povoleno v registrech jeho obsluha probíhá na pevně daných adresách, které jsou umístěny v počátku paměti programu. Je potřeba aby program na konci obsluhy přerušení zavolal instrukci iret (interrupt return – návrat z přerušení). Jelikož mikrořadič C8051F112 je osmibitový čip snažil jsem se vyhýbat více bajtovým jednoduchým datovým typům, jejich použití vede k výraznému nárůstu programového kódu.
5.3
Grafické rozhraní
Pro splnění zadání bakalářské práce realizace GUI bylo nejdříve nutné implementovat funkce grafického rozhraní. Použitý mikrořadič řady 8051 není na dnešní poměry příliš výkonný, jeho instrukční soubor neobsahuje operace s reálnými čísly a není ani vybaven matematickým koprocesorem. Z těchto důvodů jsem kladl důraz, aby mnou navržené případně algoritmy, které jsem použil, pracovali co nejvíce s celými čísly, nejlépe jenom s nimi. To aby nejen z tohoto důvodu byli co nejméně časově i paměťově náročné.
Strana 32
5 Řešení
Jednotka grafického rozhraní pracuje s aktuální datovou strukturou v datové paměti mikrořadiče, která je realizovaná bytovým polem příslušné velikosti a reprezentuje obraz zobrazený na displeji, jedná se o takzvaný framebuffer. Aktuální framebuffer lze měnit a je tedy možno plně využít vlastnosti řadiče T6963CDS obsluhy dvou displejů. Grafické rozhraní pracuje v pomyslném okně do něhož je všechen grafický výstup ořezán. Toto okno se může pohybovat v rámci rozlišení displeje, tedy v odpovídajícím paměťovém rozsahu příslušného framebufferu a je tedy nemožné při použití grafických funkcí (při jejich správné funkci), zapsat mimo aktuální framebuffer a způsobit tak porušení dat případně způsobit chybu programu. Souřadnicový systém grafického rozhraní je relativní. Horní levý roh okna má v základním stavu souřadnice [0,0], ty se dále mění v závislosti na nastaveném posunutí v ose x a y. Těchto vlastností plně využívá grafické uživatelské rozhraní. V rámci grafického rozhraní jsem implementoval tyto grafické funkce: úsečka, obdélník, pravidelný n-úhelník, elipsa, eliptický oblouk, vyplněný obdélník, vyplněný pravidelný n-uhelník, vyplněná elipsa, vyplněná eliptická výseč, výpis textu a bitmapový obrázek. 5.3.1 Souřadnicové struktury Jelikož použitý mikrořadič má malou kapacitu paměti pro parametry funkcí, je vhodné jich předávat co nejméně. Proto jsem pro grafické funkce definoval struktury, potom se do funkce předává jenom ukazatel na strukturu daného typu. Pro předání parametrů jsme definoval struktury SPoint, SLine, SRectangle, SRegularPolygon, SElipse, Sarc, SPicture, SRCText a SLFText. 5.3.2 Vykreslení úsečky, elipsy, elipsovitého oblouku, obdélníku a pravidelného n-úhelníku Vykreslení úsečky, elipsy a eliptického oblouku jsem realizoval celočíselnými algoritmy popsanými v kapitole 4. Eliptický oblouk se vykresluje od počátečního ke koncovému úhlu proti směru hodinových ručiček. Pravidelný n-úhelník je vykreslen úsečkami, body n-úhelníku jsou spočítány pomocí goniometrických funkcí. Obdélník je vykreslen pomocí úseček. Takto vykreslené obrazce jsou sice trochu „zubaté“, ale pro naše účely dostačující. Plnohodnotný antialiasing není kvůli dvoubarevné grafice možný. 5.3.3 Výpis textu a vykreslení bitmapového obrázku Pro výpis textového řetězce je použit rastrový font. Znaky základního fontu mají rozlišení 5x8 pixelů. Všechny textové funkce používají nulou ukončené řetězce. Kódovány jsou ASCII kódem s českými znaky v rozšířené oblasti. Rozlišení všech znaků ve fontu je stejné a je definováno v hlavičce fontu. Vykreslení jednotlivého znaku probíhá obdobně jako libovolné bitmapy, postupně se zkopíruje bitmapa do framebufferu pixel po pixelu, využívá při tom lineární uspořádání framebufferu i bitmapy pro výpočet adresy těchto bodů, jak je popsáno v kapitole 4.1 a 4.1.1. 5.3.4 Vyplňované a ostatní obrazce Do této kategorie patří obdélník, pravidelný n-úhelník, elipsa a eliptická výseč. Tyto implementované obrazce různě využívají dříve popsané algoritmy pro vykreslení úsečky a elipsy, případně jejich kombinaci. Jejich společným rysem je, že se vykreslují horizontální úsečkou, u které je dobrá možnost optimalizace pro zrychlení kódu. To v našem konkrétním případě znamená, že se horizontální úsečka na rozdíl od obecné úsečky nevykresluje po jednom pixelu(jednom bitu), ale po osmi(tedy po celých bytech, mimo krajních částí úsečky), dále její algoritmus je celkově jednodušší a tedy i rychlejší na provedení. K rozšíření „chudého“ dvoubarevného grafického výstupu jsem definoval tyto vyplňovací styly, styl plný, tečkovaný, řídce tečkovaný, šikmo šrafovaný, zpětně šrafovaný, mřížkovaný, vodorovně šrafovaný a svisle šrafovaný viz. obr.11. Obr.11 Vyplňovací styly.
5 Řešení 5.4
Strana 33
Grafické uživatelské rozhraní
Při konstrukci samotného GUI jsem zvolil minimalistický přístup, tak aby byli rozumně využity hardwarové prostředky. Navržené rozhraní obsahuje základní ovládací prvky, které můžou být volně rozvržené na ploše okna, ale pro jejich snadné procházení jsou většinou systematicky řazeny v sloupcích či řádcích. Hlavním prvkem GUI je okno. Oken může být současně zobrazeno více, avšak aktivní je pouze jedno a to poslední spuštěné. Mezi okny se přechází podle principu vnořování, to znamená, že po uzavření okna se vracíme zpět v opačném pořadí než jsme okna spouštěli. Libovolné přepínání mezi okny není možné a současné zobrazení všech spuštěných oken a nad nimi aktivního okna má tedy význam spíše pro udržení přehledu uživatele, kde v systému se nachází. Dalším rysem navrženého prostředí je možnost návratu zpět bez uložením změn vyhrazenou klávesou. Pro některé opakující se operace jsem předdefinoval dialogy, které ulehčují sestavování prostředí a i sjednocují jeho ovládání. Všechny prvky GUI jsou kvůli nízkému rozlišení a dvou barevné grafice jednoduché, aby tak neztratili přehlednost a zároveň aby nebyli náročné na vykreslení. Nároky na hardware jsou dále zmenšeny i tím, že se všechny ovládací prvky překreslují pouze při změně vzhledu. V následujících podkapitolách jsou popsány následující prvky GUI: okno, hlavní roletové menu, tlačítko, ikona, posuvník editační box, combo box a list box. 5.4.1 Ovládání GUI Vzhledem k tomu, že jediným použitým ovládáním je šestnácti tlačítková klávesnice, museli být některé klávesy vyhrazeny pro základní funkce GUI. Jsou to kurzorové klávesy, které slouží pro pohyb mezi ovládacími prvky a jejich ovládání, klávesa která otevírá a zavírá menu, klávesa enter pro potvrzení volby. Klávesa escape pro návrat bez provedení změn a tři kontextové klávesy viz. obr.12. Kontextové klávesy jsou na obrázku označeny otazníky, tyto klávesy mají u různých ovládacích prvků různé funkce, právě jejich použití umožňuje lépe využít poměrně malého počtu kláves. Jejich aktuální význam je zobrazen v řádku nápovědy. Funkční klávesy jsou pro přehlednost rozmístěny do bloků podle jejich funkce, pro lepší práci by bylo vhodné klávesy opatřit potiskem symboly jejich funkce. Dalším blokem kláves jsou datové klávesy, slouží pro vstup alfanumerických dat, jak je vidět na obrázku, mají některé tyto klávesy primárně funkci kurzorových kláves, význam pro vstup dat získají až po vnoření se do příslušného ovládacího prvku.
Obr.12 Rozvržení kláves.
Strana 34
5 Řešení
5.4.2 Vnitřní implementace GUI V grafických uživatelských prostředích mívá mnoho prvků podobné vlastnosti, přitom je zároveň nutné postihnout i jejich odlišnosti. I z hlediska uživatele je žádoucí, aby pro ovládání celého prostředí platila stejná pravidla a aby tak bylo pro uživatele chování aplikace co nejvíce předvídatelné, případně mu umožňovalo navrácení změn. K další vlastnostem patří, že prvky prostředí je většinou potřeba využívat opakovaně, měli by to tedy tak umožňovat. Pro dosažení těchto vlastností se velice hodí objektově orientovaný přístup, ostatně počátky OOP jsou pevně svázány se vznikem GUI. Bohužel použitý překladač jazyka C a hlavně použitý mikrořadič tento přístup neumožňuje. Vzhledem k tomu, že OOP je pouze vyšší úrovní programovacích jazyků, lze i strukturovaným programováním dosáhnout všech výše zmíněných vlastností, kromě jediné neuvedené a to přehlednosti kódu. Aby se mi podařilo i tento nedostatek co nejvíce odstranit, zvolil jsem tyto OOP podobné přístupy. Prvky GUI jako okno, menu, tlačítko atd. jsou samostatně definovány jako strukturované typy. K proměnným těchto struktur se většinou přistupuje pomocí procedur, pro přehlednost mají příslušné procedury na začátku v názvu jméno datového typu struktury, se kterou pracují. Jako první parametr je pak předáván ukazatel na tuto strukturu, pomocí tohoto ukazatele pak procedura pracuje s danou strukturou. Všechny datové struktury, které reprezentují prvky GUI, mají první byte vyhrazen pro identifikaci typu za běhu programu, tato hodnota je jedinečná pro každý typ. Pro správnou funkci GUI je potřeba, aby byly všechny instance těchto typů před prvním použitím inicializovány. Tato identifikace se používá k zjištění typu struktury a pro zavolání správné procedury odpovídající danému typu. Všechny nové prvky GUI musí zachovat tuto hlavičku ve své deklaraci struct{struct{BYTE typ, tabstop, redraw;}base; INT top, left; …}, význam proměnných je pak následující, bylo už zmíněno, že typ je určen pro identifikaci typu, tabstop určuje jestli může být prvek vybrán kurzorem, redraw jestli se prvek při dalším vykreslení překreslí a proměnné top a left určují umístění prvku v okně. Věřím, že tento systematický přístup pomohl zvýšit přehlednost zdrojového kódu a minimalizoval výskyt chyb. Pro obsluhu rozhraní slouží dvě událostní procedury, jejich volání musí zajistit sám programátor v hlavním těle programu. K zobrazení prostředí slouží procedura Gui_On_Show(void). Pokud bylo od předchozího vykreslení nějaké okno uzavřeno, pak se znovu vykreslí všechna spuštěná okna, v opačném případě se překreslí pouze okno aktivní. Každé okno zajišťuje i zobrazení prvků, které vlastní. Vykreslení aktivního okna je dále optimalizováno tak, že se překreslují pouze ty prvky u kterých došlo ke změně. Procedura Gui_On_Key_Pressed(BYTE akey) obsluhuje stisk klávesy, událost zpracuje aktivní okno respektive aktivní ovládací prvek tohoto okna. Ovládací prvky pak na základě vstupu z klávesnice vyvolávají události (např stisknutí tlačítka, uzavření okna, posunutí posuvníku, změna hodnoty combo boxu... ), jejich typ společně s adresou prvku, který událost vyvolal, se ukládají do fronty, kterou je opět nutno zpracovat v hlavním těle programu. Adresu prvku(tlačítka, ikony atd.) používám pro jeho identifikaci, jelikož její jednoznačnost zajišťuje z principu překladač. 5.4.3 Okno Okno je základní prvek tohoto GUI. Jeho hlavním úkolem je správa všech objektů, které vlastní. Stará se o jejich zobrazení a předává obsluhu klávesnice aktuálnímu prvku. Okno lze rozdělit na dvě oblasti. První oblast obsahuje rámeček okna, dále může obsahovat popisek okna, hlavní roletové menu, posuvníky a řádek s nápovědou. Řádek nápovědy může být zobrazen trvale, nebo dynamicky při spuštění menu, tak aby zbytečně nezabíral skromnou zobrazovací plochu. Druhá oblast je pracovní plocha okna a obsahuje prvky, které spravuje, tato oblast může být posunovaná a doplněna posuvníky, což může být při málem rozlišení displeje užitečné. Pokud jsou v pozadí za oknem zobrazená jiná okna, je toto pozadí ztmaveno. Je to tak, aby aktuální okno vyniklo, a pozadí nerušilo pozornost uživatele. Ze stejné důvodu jsou všechny prvky, které překrývají jiné, jako jsou okna či podnabídky menu, ohraničeny černým i bílým rámcem, aby nesplývali s pozadím, jak je to vidět na obrázku 13.
5 Řešení
Strana 35
Obr.13 Okno. 5.4.4 Hlavní roletové menu Menu je standardní prvek používaný mnoha GUI. Je-li použito, je v okně lišta s hlavní nabídkou menu viz. obr.14. Menu se aktivuje vyhrazenou klávesou a rovněž se jí i vypíná, jeho ovládání je prostřednictvím směrových šipek, kterými se vybírá položka a klávesou pro potvrzení volby, kterou se tato položka aktivuje. Menu je definováno obecně a může mít libovolný počet vnořených podmenu. V aplikaci ale nepoužívám více než dvou vnořených podnabídek, aby se zachovala přehlednost a aby přístup k prvkům netrval neúnosně dlouho. Podnabídka může obsahovat položky pěti různých typů: • Základní – slouží k uložení události při své aktivaci. • Zaškrtávací – její stav může nabývat dvou hodnot TRUE nebo FALSE. • Přepínací – stejně jako předešlá položka má dva stavy, ale pouze jedna položka tohoto typu může mít současně hodnotu TRUE v rámci jedné podnabídky. • Oddělovací – vizuálně má podobu úsečky, která slouží k optickému rozdělení podmenu do logických skupin, jinou funkci nemá a nemůže být vybrána kurzorem. • Adresářová položka podnabídky - při aktivaci vyvolá další úroveň podmenu.
Obr.14 Hlavní roletové menu. 5.4.5 Tlačítko Jednoduchý ovládací prvek viz. obr.15. Je-li aktivní, klávesou pro potvrzení se uloží událost. Obr.15 Tlačítko. 5.4.6 Ikona Má stejnou funkci jako tlačítko. Umožňuje ale lépe využít možností grafického prostředí. V některých případech můžeme vhodným obrázkem napovědět uživateli o její funkci více než několika slovním popiskem. Obrázek může být libovolně veliký až do rozměrů 256 x 256 pixelů, je však vhodné, aby všechny ikony ve skupině byli stejně veliké, například 24 x 24 pixelů jako na obr.16.
Obr.16 Ikona.
Strana 36
5 Řešení
5.4.7 Posuvník Posuvník je ovládací prvek, kterým můžeme měnit proměnou v nastaveném intervalu. Ovládá se kurzorovými šipkami. Jeho hlavním využitím je posunování obrazu, svojí grafickou podobou má uživateli napovědět, v jaké části okna se nachází. Kontextovými klávesami může být zrychleně posunut na začátek, či konec. Každá změna polohy vyvolá událost. Obr.17 Posuvník. 5.4.8 Editační box Editační box je důležitý ovládací prvek, slouží k zadáván dat formou textového řetězce. Tento vstup je tedy velice univerzální. Do editačního boxu lze zadat delší řetězec než jsou rozměry toho to boxu, v takovém případě se text plynule posouvá. Je-li editační box aktivní, může se nalézat ve dvou hlavních stavech v základním a ve stavu pro vstup dat. V prvním případě kurzorové šipky slouží pro pohyb kurzoru, v druhém pak mají společně s dalšími význam datových kláves. Přechod mezi stavy je zajištěn stiskem dané kontextové klávesy. Další funkce kontextových kláves jsou, mazání znaků, smazání celého obsahu, vkládání znaménka v číselném módu a přepínání režimu zadávání textu či čísla. V číselném režimu datové klávesy 0 až 9 představují znaky číslic‘0’ až ‘9’. Režim alfanumerický, umožňuje zadávání textu. Je obdobou systému, který je velice rozšířen u mobilních telefonů. V tomto režimu jedna klávesa nepředstavuje pouze jednu číslici, ale reprezentuje konečnou množinu znaků. Opakovaným stiskem stejné klávesy pak vybíráme znak z dané množiny. Toto poměrně nepříjemné vkládání textu lze usnadnit např. technologií T9. Vzhledem k tomu, že předpokládám využití editačního boxu k převážně číselným vstupů, jsem žádnou podobnou technologii do řešení nezahrnul, navíc jednotka by pro nutný slovník slov neměla dostatečnou kapacitu.
Obr.18 Editační box. Na obr.18 je výřez okna s edit boxem, horní je ve stavu, kdy klávesy fungují jako kurzorové šipky, spodní varianta je připravena pro vstup dat. Ve spodních řádcích v pravém spodním rohu okna je pak vidět nápověda pro aktuální funkci tří kontextových kláves. 5.4.9 Combo box Je to pole pro výběr hodnoty z předem definované množiny hodnot. Výběr hodnoty je možný, je-li položka aktivní, dvěma způsoby. Ukázka je na obr.19, první horní příklad se provede změna přímo bočními kurzorovými šipkami, v druhém případě se pomocí kontextové klávesy rozbalí celá nabídka a následně vybere hodnota. Použil jsem podobné řešení jako je v OS Epoc, protože takto prvek v základním stavu zabírá malou oblast pro zobrazení a umožňuje elegantně začlenit své ovládání do systému bez konfliktu s pohybem kurzoru.
Obr.19 Combo box.
5 Řešení
Strana 37
5.4.10 List box Má stejnou funkci jako combo box, je použit v combo boxu při vypsání celkové nabídky. Je-li to vhodnější lze použít i samostatně, například je-li jediným ovládacím prvkem na dialogu. Jeho vzhled lze vidět na obr.20.
Obr.20 List box. 5.4.11 Dialogová okna Pro často opakující se akce jsou vhodné předdefinované dialogy. Jejich výhodou je snadné opakované použití, ušetření paměťových prostředků, a větší sjednocení ovládání prostředí. V práci jsem definoval dialogové okno pro potvrzení volby viz. obr.21 a dialog pro zobrazení zprávy uživateli.
Obr.21 Dialogové okno pro potvrzení volby.
5.5
GUI jednotky sběru dat
Základní obrazovka je tvořena oknem pro správu naměřených dat obr.14. Umožňuje prohlížení základních informací o záznamech a to názvu, vzorkovací frekvenci a počtu vzorků v záznamu. V pravém spodním rohu okna je pro přehled uživatele zobrazena volná kapacita pro měřená data. V základní nabídce může dále uživatel prostřednictvím hlavního menu provádět tyto operace. Mazat jednotlivé či všechny záznamy najednou, zobrazit náhled grafu vybraného záznamu, přidat nový záznam, připojit akcelerometr, spustit dialog pro nastavení klávesnice, invertovat barvy grafického výstupu a spustit dialog informace o programu. Při mazání záznamů je po uživateli vyžadováno potvrzení, tak aby nemohlo dojít omylem ke ztrátě dat. Stejně tak snaha mazat či zobrazit graf pro neexistující záznam, je ošetřena varovným dialogem uživateli. Dialog nastavení klávesnice, umožňuje nastavit časy pro vyhodnocení klávesy jako stisknuté, uvolněné a časy pro cyklické opakování stisku klávesy při jejím držení. Případně umožňuje toto opakování vypnout viz. obr. 13. Dialog pro přidání záznamu umožňuje nastavit jeho základní vlastnosti jako vzorkovací periodu a typ měřené veličiny obr.22. Název záznamu je generován automaticky, podle pořadí celkově přidaných záznamů, ale uživatel ho může změnit. Vstup z pole vzorkovací periody je kontrolován, jestli je daný vstup platnou celočíselnou hodnotou, není-li tomu tak, je na to uživatel upozorněn a není mu umožněno pokračovat do napravení chyby. O stejný přístup odolnosti aplikace jsem se snažil v celém prostředí.
Obr.22 Dialog přidání záznamu. Po úspěšném vytvoření nového záznamu, přejdeme do dialogu sběr dat viz obr.23. Volbou spustit měření, zahájíme sběr dat. V levé části dialogu můžeme pozorovat grafickou podobu, aktuálního zrychlení změřeném připojeným akcelerometrem.
Strana 38
5 Řešení
Obr.23 Dialog pro sběr dat. Dialog pro vykreslení grafu umožňuje prohlédnout si náhled naměřených dat obr.24. Pomocí kontextových kláves je možné měnit měřítko Y-ové osy, nebo měnit rychlost posuvu odečítacího kříže. Tento kříž nám umožňuje odečítat hodnoty grafu v dané pozici. Hodnoty jsou vypsány v rámečku vedle kříže, pozice toho rámce se mění tak, aby se nevyskytl mimo viditelnou část okna.
Obr.24 Dialog pro náhled grafu. Poslední dialog nás stručně informuje o aplikaci obr.25.
Obr.25 Informace o programu.
Strana 39
6
ZÁVĚR
Cílem práce bylo vytvoření grafického uživatelského rozhraní jednotky sběru dat. Pro splnění cíle práce byla provedena rešerže přístupů k návrhu grafického uživatelského prostředí, byli rozebrány jejich výhody i nevýhody. Dále je popsán možný výběr technických prostředků pro grafický výstup, jsou rozebrány jejich hlavní parametry. Na základě popsaných možností a parametrech řešené jednotky sběru dat, bylo vytvořeno skutečné uživatelské prostředí. Vzhledem k poměrně jednoduché funkci jednotky sběru dat a použitému mikrořadiči, navržené uživatelské rozhraní klade důraz především na jednoduchost, přehlednost a nenáročnost na hardwarové prostředky. Navržené prostředí je poměrně dobře rozšiřitelné. Pro snadné uživatelské ovládání jsem se snažil přizpůsobit prostředí použitému ovládání klávesnicí. Navržené řešení je tak podle mně v souladu s principy, se kterými se můžeme setkat u průmyslových aplikací. Nesetkáme se zde nejnovějšími trendy z počítačové grafiky a uživatelských rozhraní, ale i v průmyslových aplikacích je vidět určitý posun v používaných technologiích, tak jak se mění jejich dostupnost. Může se zde setkat i s grafickými terminály, které mají vysoká rozlišení, nebo barevnou hloubku. Zvláště v „čistějších“ prostředích mohou být použity dotykové displeje. Vše je však dáno cenou a odolností komponent, hlavně však tím je-li jejich použití účelné. Věřím že mnou navržené uživatelské prostředí je dobře použitelné a dostatečné pro splnění na něj kladených požadavků.
Poděkování Práce byla provedena za podpory projektu MSM 0021630518 „Simulační modelování mechatronických soustav“.
Strana 41
7
SEZNAM POUŽITÉ LITERATURY
[1] ŤIŠNOVSKÝ, Pavel. Root. Grafické karty a grafické akcelerátory [online]. 2. března 2005, [cit. 15. března 2006]. Dostupné na :http://www.root.cz/clanky/graficke-karty-a-graficke-akceleratory-1/#k01 [2] POLISČUK, Radek VPG [online].[cit. 15. března 2006]. Dostupné na: http://autnt.fme.vutbr.cz/poliscuk/vpg.html [3] SZOTKOWSKI, Henrik. IVT [online]. [15. dubna 2006] Dostupné na: http://ivt.gyka.net/okruhy/monitor.htm [4] Wikiknihy. B-spline křivka [online]. 23. června 2005 [cit. 17. dubna 2006] Dostupné na: http://cs.wikibooks.org/wiki/B%E2%80%93spline_k%C5%99ivka [5] MLEJNEK, Jiří. Semestrální práce z předmětu nová média [online]. 30. listopadu 2005 [cit. 18. dubna 2006]. Dostupné na: http://www.teleci.cz/jirka/Skola/36nm/LCDxCRT.php [6] ROTT, Daniel. Monitory [online]. 2001 [cit. 18.dubna 2006] Dostupné na: http://www.volny.cz/krivka/monitory/monitory.htm [7] ŠULA, Roman. MujMac. Historické zvraty v dějinách Apple II [online]. 7. července 2005 [cit. 18. dubna 2006]. Dostupné na: http://www.mujmac.cz/art/sw/historicke-zvraty-apple-operacni-system.html [8] Wikipedia. Histrory of the graphical user interface [online] 18th of April 2006 [cit. 18. dubna 2006]. Dostupné na: http://en.wikipedia.org/wiki/History_of_the_graphical_user_interface [9] Webopedia. What is graphical user interface [online].[cit. 18. dubna 2006] Dostupné na: http://webopedia.internet.com/TERM/G/Graphical_User_Interface_GUI.html [10] T6963C [PDF document]. 1997-04-07 [cit. 18.dubna 2006]. Dostupné na: http://www.toshiba.com/taec/components/Datasheet/T6963CDS.pdf