• Ei tuloksia

4 UPS-laitteen käyttöliittymäohjelmiston suunnittelu 20

4.11 Kieliversioiden testaaminen

arvon lukemiseen sekä uuden arvon kirjoittamiseen. Kun normalisointi tehdään ra­

japinnassa automaattisesti, jää itse käyttöliittymäohjelman käsiteltäväksi aina mah­

dollisimman yksinkertainen arvoalue joka yleisesti soveltuu kaikkien tarvittujen pa- rametrityyppien käsittelemiseen.

4.11 Kieliversioiden testaaminen

Jotta erikieliset versiot saatiin kattavasti testattua, tarvittiin yksinkertainen keino voida selata kaikki käyttöliittymän eri ruudut lävitse kaikkine mahdollisine tekstei­

neen. Tämä on oleellista, jotta voidaan olla varmoja että tekstien asettelu on kun­

nossa ja että elementit mahtuvat näytölle eivätkä asetu toistensa päälle.

Normaalisti käyttöliittymäohjelma valitsee seuraavaksi piirrettävän menuruudun valikkorakenteen kuvauksen mukaisesti. Kieliversioiden testaamista varten tehtiin vaihtoehtoinen versio, jossa kaikki menuruudut voidaan selata lävitse järjestykses­

sä. Tämän toteuttamiseksi riittää pääosin näppäinpainallusten tulkitsemisen suorit­

tavan ohjelmakoodin korvaaminen toisella. Lisäksi testaamista varten oli tarpeen eliminoida menuruutujen normaali lisätoiminnallisuus. Tämän toteuttamiseksi es­

tettiin käyttöliittymäohjelmasta sen osan normaali toiminta, jonka kautta lähetetään tapahtumat tapahtumafunktioille. Tämä oli riittävä toimenpide kaikkien toimintojen perustuessa juuri tapahtumiin.

Luku 5

Käyttöliittymän toteutus käytännössä

5.1 Käyttöliittymän integrointi DSP/BIOS- ympäristöön

5.1.1 Säietyypin valinta

UPS-laitteen etupaneelin käyttöliittymän tärkeys verrattuna muiden laitteessa pyö­

rivien prosessien tärkeyteen on suhteellisen alhainen. UPS-laitteen ensisijainen teh­

tävä on suojata kriittistä kuormaa, joten kaikki tähän ensisijaiseen toimintaan liitty­

vät prosessit ovat luonnollisesti käyttöliittymän toiminnan yläpuolella. Pelkästään tämä johtaa siihen, että käyttöliittymän sijoittaminen DSP/BIOS -ympäristöön mui­

den prosessien ohelle on prioriteettitasoltaan suhteellisen alhainen.

Käyttöliittymä vaatii ajoittaista päivittämistä. Toisinaan näytöllä esitetään muuttu­

vaa tietoa, kuten A/D-muuntimelta saatua mittausdataa, jonka pysyminen ajan ta­

salla on olennaista. Koska tieto on kuitenkin suunnattu ainoastaan ihmisen tarkkail­

tavaksi ei tiedon päivitysnopeudella ole tarkkoja aikavaatimuksia, olennaisempaa nopea päivitys on vain käyttäjän painellessa nappuloita. Päivitysnopeudeksi tältä pohjalta mietittynä riittää noin puoli sekuntia, tämä nopeus riittää vielä myös esi­

merkiksi kellonajan esittämiseen sekuntien tarkkuudella.

Käytännön vaihtoehtoina tämä johtaa käyttöliittymäprosessin ajamiseen joko

perio-5.1 Käyttöliittymän integrointi DSP/BIOS-ympäristöön 42 disena SWI-keskeytyksenä tai tehtävänä. Näiden vaihtoehtojen välillä pohdittaessa huomataan kuitenkin, että SWI-keskeytysten kerralla läpi ajettavan luonteen vuoksi ne eivät tehtävään sovellu. Käyttöliittymäprosessin on suoritettava toimintoja jot­

ka vaativat että prosessi on välillä voitava jättää odottamaan tietyn resurssin (esi­

merkiksi EEPROM-muistista luettavan tiedon) saatavuutta, tämän mahdollisuuden tarjoaa vain tehtävä.

5.1.2 CAN-väylän käyttö näytön kanssa kommunikointiin

Käytetty prosessori tarjoaa CAN-kommunikointiin 32 postilaatikkoa. Koska ky­

seessä olevan UPS-laitteen muu CAN-väylän käyttö on vähäistä, päätettiin näistä postilaatikoista kaksi valjastaa palvelemaan käyttöliittymän tarpeita. Toinen posti­

laatikko vastaanotettaville viesteillepä toinen lähetettäville viesteille.

Käyttöliittymän CAN-viestien lähettäminen on luonteeltaan sellaista, että viestejä lähetetään yksi kerrallaan. Koska jokaisen viestin lähettämisen jälkeen halutaan tie­

to että näyttökortti on toiminnassa ja suorittanut tehtävänsä, odotellaan kuittausta jokaisen viestin lähettämisen jälkeen. Tämä johtaa hyvin yksinkertaiseen rakentee­

seen lähetyksen suhteen koska minkäänlaista jonoa lähetettäville viesteille ei tarvi­

ta.

Käyttöliittymäkortilta vastaanotettavia viestejä on kahta tyyppiä, automaattisesti lä­

hetettäviä näppäimistön tilan muutoksesta kertovia viestejä sekä komentojen suo­

rituksesta kertovia viestejä. Tässä tapauksessa jos minkäänlaista jonoa ei toteuteta, voidaan viestejä periaatteessa menettää jos käyttöliittymätehtävä ei ehdi reagoida tarpeeksi nopeasti. Käytännössä tämä vaatisi kuitenkin todella hätäisiä painalluksia käyttäjältäpä tällöin voidaan yksittäisen viestin menetys laittaa käyttäjän hätäisyy- den syyksi. Jos hän ei vastetta käyttöliittymältä saa, painaa hän mitä todennäköi­

simmin nappulaa uudestaan jolloin tilanne korjaantuu.

5.1.3 Toteutettu ratkaisu

CAN-viestien vastaanotossa päädyttiin ratkaisuun,jossa saapuvan viestin laukaise­

ma HWI-keskeytys kopioi viestin joko näppäimistön tilaviesteille varattuun muis­

tialueeseen, tai kuittausviesteille varattuun muistialueeseen. HWI-keskeytyksestä muodostuu lyhyt, joten se ei häiritse muita tärkeitä prosesseja. Vastaanotettaville

5.1 Käyttöliittymän integrointi DSP/BIOS-ympäristöön 43

CAN vastaanotto ISR 5ms periodinen SWI

kyllä opas tinsignaal ia

tai max 50Oms

Kuva 5.1 : kaavio käyttöliittymän toiminnasta DSP/BIOS -ympäristössä

viesteille ei ole jonoa, mutta käytetyt kaksi muistialuetta varmistavat ettei ainakaan tärkeämpiä eli kuittausviestejä menetetä.

Käyttöliittymän riittävän nopea reagointi näppäinviestin saapuessa varmistetaan käyttämällä periodisesti suoritettavaa SWI-keskeytystä. Tähän riittää lyhyt rutiini, joka käy tarkistamassa onko saapuvien näppäinviestien muistialueessa tuoretta vies­

tiä. Jos näin on, se viestittää opastinsignaalin avulla käyttöliittymää suorittamaan päivityksen.

Itse käyttöliittymän ylläpito toteutetaan tehtävänä mihin edellä päädyttiin. Päivitys asetetaan laukaistavaksi näppäintilan muutoksesta kertovan opastinsignaalin vies­

tistä, sekä vähintään puolen sekunnin välein ajastettuna. Kaaviokuva käytetystä rat­

kaisusta on esitettynä kuvassa 5.1.

5.2 Merkkijonojen pakkaaminen 44

5.2 Merkkijonojen pakkaaminen

Käytetty signaaliprosessori osoittaa luontaisesti vain 16 bitillä jaollisiin osoitteisiin muistiavaruudessa. Tällöin myös merkkijonot, jotka on koodattu 8-bittisillä luvuilla merkkiä kohti, talletetaan muistiin 16-bittisinä. Tämä on tapa jolla C-kielen kään­

täjä merkkijonot muistiin tallettaa. Ne vievät kaksinkertaisesti muistia tarpeeseen­

sa verrattuna, mutta toisaalta niiden käsittely ei vaadi erikoistoimenpiteitä koska seuraava muistiosoite osoittaa aina seuraavan kirjaimen. Tällainen talletustapa on tietysti käytössä nopea.

Toinen tapa tallettaa merkkijonot muistiin, on tallettaa ne pakattuna. Tällöin yhteen 16-bittiseen muistipaikkaan talletetaan kaksi merkkiä, ylempään ja alempaan 8- bittiseen puolikkaaseen omansa. Talletustapoja on vertailtu kuvassa 5.2. Tämän ta­

van käyttöä ei kuitenkaan tarjota Texas-Instruments:in tarjoaman C-kääntäjän puo­

lesta, mutta assembler-kielen kautta se on kuitenkin mahdollista.

osoite arvo merkit 0x003ed3 00 0x4d49 MI 0x003ed3 01 0x5454 TT 0x003ed302 0x4155 AU

0x003ed3 00 0x004d M 0x003ed301 0x0049 I 0x003ed302 0x0054 T 0x003ed303 0x0054 T 0x003ed3 04 0x0041 A 0x003ed3 05 0x0055 U 0x003ed3 06 0x004b K 0x003ed3 07 0x0053 S 0x003ed308 0x0045 E 0x003ed309 0x0054 T 0x003ed30a 0x0000 \o

Pakkaamaton merkkijono Pakattu merkkijono

Kuva 5.2: Pakkaamattoman ja pakatun merkkijonon esitys muistiavaruudessa

Muistin säästö itse merkkijonojen talletuksessa on pakattua tapaa käyttäen hieman alle 50 prosenttia, uuden merkkijonon alku kun täytyy kuitenkin olla tasassa 16- bittisen osoitteen kohdalla. Näin talletettujen merkkijonoja käytettäessä lopullinen säästö pienenee hieman myös siinä, että ne tarvitsevat tulkitsemisessaan erikois­

käsittelyä. Tämä on kuitenkin pientä, jos merkkijonoja on paljon kuten käyttöliit­

tymän tapauksessa on luonnollista. Pakatut merkkijonot tarvitsevat myös hieman enemmän prosessoriaikaa käsittelyynsä, mutta tämäkään ero ei ole huomattava kun kyseessä on ei niin ajoituskriittinen käyttöliittymä.

5.2 Merkkijonojen pakkaaminen 45

5.2.1 Merkkijonojen pakkaamisen vaihtoehdot

Yksi, ehkä ilmeisin tapa toteuttaa merkkijonojen pakkaaminen olisi kirjoittaa pakat­

tavaksi haluttavia merkkijonoja sisältävä ohjelmakoodi assemblerilla. Tällöin kui­

tenkin menetettäisiin C-kielisen toteutuksen tarjoamia etuja, menetettäisiin halutut- tuja ominaisuuksia joita on muun muassa helppo muokattavuus.

Toinen tapa toteuttaa tehtävä, olisi kirjoittaa erillinen apuohjelma joka tulkitsisi käyttöliittymän tekstien määritykset ja kirjoittaisi ne assembler-kieliseksi listauk­

seksi. Apuohjelma ajettaisiin aina kun tekstejä muutetaan, ja tuotettu listaus linkat­

taisiin mukaan lopulliseen ohjelmaan. Tässä ratkaisussa suurin ongelma olisi juu­

ri vaadittava apuohjelma, jonka pitäisi mahdollistaa C-kielen tapainen käyttöliitty- mätekstien toteutus. Ongelmana olisi myös mahdolliset muutokset tulevaisuudessa, jos jotain halutaan lisää mitä apuohjelma ei hallitse, pitäisi myös apuohjelmaa pitää

ajan tasalla.

5.2.2 Merkkijonojen pakkaamisen toteutus

Tilanteeseen keksitty valittu ratkaisu on ikään kuin välimuoto edellisistä, siinä käy­

tetään hyödyksi mahdollisimman pitkälle valmista C-kääntäjää. Kaavio on esitet­

tynä kuvassa 5.3. Ideana ratkaisussa on se, että C-kääntäjällä tuotetaan assembler- kielinen listaus tiedostosta, jossa pakattavat merkkijonot sijaitsevat. Normaali toi­

menpide tämän jälkeen jonka kääntäjä tekee oletusarvoisesti automaattisesti olisi, että syntynyt assembler-listaus käännettäisiin suoraan lopulliseen ohjelmaan linki­

tettäväksi objektiksi. Kehitetyssä ratkaisussa lisätään tähän väliin lisätään välivaihe, jossa assembler-listaukseen kohdistetaan käsittely jolla sen sisältämät merkkijonot muutetaan pakatuiksi. Tämä toimenpide sisältää toiminnot jossa merkkijonoa ku­

vaavat avainsanat korvataan pakattua merkkijonoa kuvaaviksi avainsanoiksi. Samal­

la myös monelle riville jakautuvat merkkijonot yhdistetään samalle riville. Ratkai­

sun loppuvaiheessa, muokattu assembler-listaus käännetään ja linkitetään mukaan ohjelmaan.

Tämäkin ratkaisu vaatii erillisen apuohjelman kirjoittamisen, kuten hylätyistä rat­

kaisuista toinen. Etuna hylättyyn ratkaisuun verrattuna on tarvittavan apuohjelman yksinkertaisuus, riittää että se osaa johdonmukaisesti korvata merkkijonoja toisiin, ja suorittaa yksinkertaista rivien yhdistelyä. Apuohjelma ei vaadi päivittämistä

jäi-5.3 Erikielisten käännöstiedostojen luominen 46

C-kielinen ohjelmalistaus

käännös 2 . merkkijonojen

pakkaaminen

Kuva 5.3: Toimintosarja merkkijonojen pakkaamiseksi

kikäteen, sillä C-kääntäjän tuottamat merkkijonot noudattavat joka tapauksessa sa­

maa muotoa vaikka C-kielistä toteutustapaa muutettaisiinkin.

Ratkaisun suurimpana etuna on, että toteutus voidaan kirjoittaa edelleen C-kielellä halutunlaiseksi. Pakkaamisen suorittava välivaihe voidaan automatisoida käännök­

sen yhteyteen, jolloin sekin on ohjelmoijan kannalta läpinäkyvä.

5.3 Erikielisten käännöstiedostojen luominen

Kun käyttöliittymän tekstien käännökset eri kielille saadaan Unicode-muodossa voidaan olla suhteellisen varmoja että ruudulla näkyvät tekstit vastaavat todelli­

suutta ja että merkit ovat kuten niiden kuuluukin. Ohjelmoijan kannalta Unicode kuitenkin tuo tullessaan omat ongelmansa, koska varsinkaan kääntäjät eivät osaa lukea Unicode-muotoisia lähdekooditiedostoja. Toisekseen, jos aikomuksena ei ole tukea 16-bittistä merkistöä on merkkien tallettaminen laitteen rajoitettuun muistiin 16-bittisessä muodossa tuhlailevaa kuten edellä luvussa 5.2 esitettiin. Niin tässäkin tapauksessa olisi 16-bittisten merkkien käyttäminen tarkoittanut niiden muuntamis­

ta ajon aikana näytön käyttämään 8-bittiseen muotoon.

5.4 Käyttöliittymän toteutus 47 Tavoitteena oli saada erikielisten versioiden luominen sellaiseksi, että eri kieliä voi­

taisiin kuitenkin muokata tietokoneen ruudulla alkuperäisasussaan. Tämä tarkoittaa käytännössä Unicode-muodon säilyttämistä mahdollisimman pitkälle.

Toteutettu ratkaisu

C-kielessä voidaan merkkijonon sisällä minkä tahansa merkin esittäminen voidaan heksalukuna muodossa \xNN. Tämä sopii tarkoitukseen hyvin, ja koko näytön ymmärtämä merkistöjen 255 merkin alue saadaan hyödynnettyä. Ongelmana oli vain Unicode-muotoisten tiedostojen muuntaminen tällaiseen muotoon.

Ratkaisuksi muunnokseen päädyttiin toteuttamaan pieni erillinen apuohjelma tie­

dostojen muuntamiseen. Apuohjelmasta toteutettiin sellainen, että kun sille anne­

taan syötteenä Unicode- muotoinen lähdekooditiedosto ja haluttu merkistömuun- nostaulukko, se antaa tuloksena ASCII-muotoisen lähdekooditiedoston jossa muun­

nettavat Unicode-merkit on muutettu edellä esitettyyn C-kieliseen esitysmuotoon.

Kunhan pidetään huolta että kaikki Unicode-muotoisessa lähdekooditiedostossa olevat muunnettavat merkit sisältyvät käyttöliittymän menukuvausmerkkijonoihin, voidaan muunnostyökalu toteuttaa siinä mielessä yksinkertaisesti että se käy tiedos­

toa läpi merkki kerrallaan ja korvaa sokkona kaikki vastaantulevat muunnostauluk- koon kuuluvat merkit.

Muunnostyökaluun ohjelmoitiin myös mahdollisuus analysoida jokin Unicode- muotoinen tiedosto. Tämä toiminto käy tiedoston lävitse merkki merkiltä ja ver­

tailee sitä johonkin olemassa olevaan merkistömuunnostaulukkoon. Tulosteena se antaa tiedostosta mahdollisesti löytyneet merkit, jotka eivät merkkitaulukosta löy­

dy. Tämä auttaa uutta kieltä lisättäessä näkemään löytyvätkö kielen vaatimat merkit jo näytön merkkitaulukosta vai täytyykö jotain mahdollisesti lisätä.

5.4 Käyttöliittymän toteutus

5.4.1 Lähtökohdat toteutukselle

Kuten jo edellä mainittiin, oli käyttöliittymän tarkoitus pääpiirteissään noudattaa edellisten laitteiden antamaa mallia. Käytännössä tarkoitus oli siis rakentaa puu­

5.4 Käyttöliittymän toteutus 48 mainen menurakenne, jossa aloitusruudun alla on joukko kategorioittain jaettuja alimenuja. Perusmenujen merkitykset on lueteltuna seuraavassa:

UPSin tila kertoo tietoa laitteen tämänhetkisestä toimitilasta

Tapahtumaloki kertoo historiaa laitteen toiminnasta, virhetilanteista yms.

Mittaustiedot sisältää eri suureiden, kuten jännitteiden ja virtojen arvot Kontrolli sisältää laitteen ohjauskomentoja, kuten ohitusverkolle siirron

Asetukset sisältää sekä käyttäjän että huollon aseteltavat laitteen toimintaan vai­

kuttavat parametrit

Identifikaatio kertoo laitteen malli-ja sarjanumerot jne.

Käynnistys/Sammutus jonka kautta laitteen saa käynnistettyä ja sammutettua

Neljän painikkeen perusmerkityksen oli oltava samanlainen kuin aiemmin. Ensim­

mäinen painikkeen perustoiminto oli palata menurakenteessa edelliselle tasolle eli kohti aloitusruutua. Keskimmäisten painikkeiden toimintona oli “ylös”/”alas”, eli siirtyä saman menun sisällä tai muuttaa jotain arvoa ylös- tai alaspäin. Neljännen painikkeen perusmerkityksenä on “valitse” tai “hyväksy", eli valita jokin toiminto, siirtyä seuraavaan alimenuun tai hyväksyä ja tallettaa valittu arvo.

Toteutettu menurakenne on nähtävissä kokonaisuudessaan liitteessä B. Seuraavissa kappaleissa on käsitelty tarkemmin muutamia erityyppisiä menuja, joita käyttöliit­

tymään toteutettiin.

Menujen toteuttamisessa yritettiin noudattaa tiettyjä periaatteita, jotta toiminnalli­

suus olisi käyttäjän kannalta johdonmukaista. Tämä pitää sisällään muun muassa sen, että jos painikkeelle näytetään tietty kuva, on sen toiminto johdonmukainen verrattuna saman kuvan aiheuttamaan toimintoon muissa menuruuduissa. Johdon­

mukaisuutta noudatettiin mahdollisimman hyvin myös menuruutujen sisällön aset­

telussa. Osittain toisiaan vastaavissa ruuduissa yhtäläiset osat pyrittiin asettelemaan samalla tavalla sekaannusten välttämiseksi.

5.4.2 Käännökset eri kielille

Käyttöliittymän käännöksiä tehdessä yritettiin mahdollisimman pitkälle noudattaa samaa näyttöjen asettelua myös kaikkien erikielisten käännösten välillä. Tässä on­

nistuukin hyvin länsimaisten kielten osalta, jotka voidaan esittää samaa fontin

ko-5.4 Käyttöliittymän toteutus 49 koa käyttäen. Kuvassa 5.4 on esitettynä esimerkkinä kuvat historialoki-menusta englannin ja kreikan kielillä.

Notice #57

Kuva 5.4: Tapahtumaloki englannin sekä kreikan kielisenä

Työn aikana ehdittiin tekemään myös käyttöliittymän alustava käännös kiinan kie­

lelle. Tässä jouduttiin jossain määrin poikkeamaan yhtäläisyydestä muiden kielten kanssa, sillä merkkien suurempi koko sallii vain kaksirivisen näytön kun ruudul­

la on molemmilla riveillä kiinan kielistä tekstiä. Kuvaa 5.4 vastaava kiinankielinen näkymä historialokimenusta on esitettynä kuvassa 5.5.

Ш ivf

жил mm

Kuva 5.5: Tapahtumaloki kiinan kielellä

Kiinankielisessä versiossa jouduttiin ottamaan käyttöön myös ylimääräinen pie­

nempi fontti jotta kellonajat ja päivämäärät saatiin mahtumaan. Hälytystekstien kohdalla ongelmana oli että osa teksteistä oli pidempiä kuin mitä ruudulle mahtuu, ja kun kiinalaisten tapana on kirjoittaa tekstit putkeen ei saatuja käännöksiä voinut paloitella sattumanvaraisesti ilman pelkoa merkityksen muuttumisesta. Tähän rat­

kaisuna huomattiin, että muissa kielissä käytetty tekstien rivi kerrallaan vaihtami­

nen (sivu 35) muuttuu helposti merkki kerrallaan liputukseksi kun laitetaan häly- tysteksteihin rivinvaihdot jokaisen merkin jälkeen. Koska kiinan kielen merkit ovat tarpeeksi tasalevyisiä, on lopputulos siisti.

Neuvoja kiinankielisen version toteuttamista varten tiedusteltaessa ilmeni vielä että kiinankielinen tekstin liputus tapahtuukin vasemmalta oikealle [17]. Tämän mah­

dollistamiseksi toteutettuun käyttöliittymäohjelmistoon lisättiin ominaisuus, jolla tekstin liputtamisen toteuttavien funktioiden toiminta voidaan tiettyä kontrollikoo- dia käyttäen muuttaa toimimaan käänteisesti. Tätä käyttäen kiinankielisessä ver­

siossa saadaan aikaan halutunnäköinen lopputulos.

5.4 Käyttöliittymän toteutus 50

5.4.3 Mittausarvot ja mittausarvojen lukitseminen näytölle

Etupaneelin käyttöliittymää käyttäville, etenkin huoltomiehille [16], tulee toisinaan tarve saada jokin mittausarvo näkymään ruudulla pidempään kuin mitä käyttöliitty­

mään rakennettu aikakatkaisutoiminto sallii ilman että menu palaa alkutilaansa.

Tämä tarve saatiin täytettyä, sillä mittausarvoruuduissa yksi painike olisi muuten toimettomana. Toiminto toteutettiin poikkeavasti siinä mielessä, että kun lukitus on poissa päältä, mitään kuvaketta ei näytetä nappulan kohdalla. Tähän on yhtenä syy­

nä se, että toimintoa tarvitsevat sen oppivat tuntemaan nopeasti. Toisena syynä on että on vaikea keksiä sopivia pieneen tilaan mahtuvia kuvakkeita, jotka selvästi il­

maisevat toiminnon “lukitse” sekä “avaa”. Jos kuvakkeena toisessa tapauksessa oli­

si vaikkapa lukon kuva, ei siitä suoraan voisi sanoa onko kyseessä toiminto “lukit­

se”, vai kenties tieto “lukossa”. Toteutuksessa tyydyttiin siihen, että kun ruutu on lukittuna, näytetään avaimen kuvaa lukituksen ilmaisemiseen. Muutoin painikkeen kohdalla ei näy mitään.

5.4.4 Neljän painikkeen ongelmat ja toteutettuja ratkaisuja

Neljä painiketta on käyttöliittymän helppokäyttöisen toteutuksen kannalta suhteel­

lisen vähän. Käyttöliittymään ei haluttu tehdä toimintoja, jotka vaativat esimerkiksi usean näppäimen yhtäaikaisen painamisen, joten kerällään voi olla käytössä vain neljä toimintoa.

Ongelma nappuloiden vähäisyydessä tulee ilmi lähinnä menuruuduissa joita käy­

tetään erilaisten asetusten tekemiseen. Usein olisi tarpeen neljän peruspainikkeen (poistu/ylös/alas/hyväksy) lisäksi vähintäänkin painike, jolla voitaisiin palata askel taaksepäin edelliseen asetukseen.

Otetaan esimerkkinä menuruutu, jossa toimintona on kirjoittaa jokin vaihtuvan pituinen teksti. Jotta tekstin kirjoittaminen olisi missään suhteessa sujuvaa, on ylös/alas -nappuloiden toteutettava “valitse seuraava/edellinen kirjain” -toimintoa.

Jos toinen jätetään pois, olisi äärettömän hankalaa palata edelliseen kirjaimeen kos­

ka jouduttaisiin selaamaan kaikki kirjaimet uudelleen läpi. Myös painike, jolla va­

littu kirjain halutaan valita on olennainen, jotta tekstin kirjoittaminen etenee. Jotta ruudusta olisi myös helppo poistumistie, on yhden painikkeen toimitettava myös

“poistu” -nappulan virkaa. Ongelmana on lähinnä, että miten ilmaistaan että tekstin

5.4 Käyttöliittymän toteutus 51 on valmis talletettavaksi, tai miten voitaisiin palata palataan taaksepäin.

Tekstin tallettamiseen yhtenä vaihtoehtona pohdittiin esimerkiksi kahden peräkkäi­

sen välilyönnin kirjoittamisen tulkitsemista “lopeta” -toimintona. Tämän ongelma on ettei se ole missään määrin intuitiivinen, ja joskus voi myös olla tarpeen kir­

joittaa oikeasti kaksi välilyöntiä peräkkäin menettämättä niitä. Tilanteen ratkaisuna päädyttiin toteuttamaan näytön merkistöön näppäimistöiltä yleisesti tuttu “enter”

-merkki, jonka valitseminen kirjainten seasta aiheuttaa tekstin hyväksymisen ja tal­

lettamisen.

Tekstissä taaksepäin palaaminen voitaisiin tehdä merkki kerrallaan “poistu" - nappulaa painelleen, mutta silloin menetettäisiin mahdollisuus helposti poistua ky­

seisestä menusta. Yhtenä vaihtoehtona olisi tällaisessa tilanteessa tehdä poistumi­

nen niin että nappula täytyisi painaa hetkeksi pohjaan. Tätä eivät kaikki käyttäjät kuitenkaan välttämättä arvaa tehdä, ja poistumisesta tulisi merkkejä yksi kerrallaan peruuttamalla hankalaa jollei painiketta ymmärtäisi painaa pohjaan.

Tekstissä peruutus päädyttiin toteuttamaan niin, että “palaa” -painikkeen ensimmäi­

nen painallus palauttaa takaisin tekstin alkuun ensimmäisen merkin kohdalle. Tä­

män jälkeen uusi painallus poistuu menusta. Tällainen toiminta mahdollistaa helpon menusta poistumistien mutta mahdollistaa samalla myös tekstissä peruuttamisen, joskin kerralla merkkijonon alkuun mutta kuitenkin.

Jotta käyttöliittymän toiminta säilyisi yhtenäisenä, samanlaista toimintatapaa nou­

dattaen toteutettiin peruutustoiminto kaikkiin sitä tarvitseviin menuruutuihin. Va­

semmanpuoleisen, eli “palaa” -nappulan toiminto on aina asetuksia tai merkkijono­

ja muokattaessa “palaa alkuun” tai “hylkää muutokset ja palaa alkuun” tilanteesta riippuen. Kun puolestaan ollaan muokkaamasta menuruudussa ensimmäistä asiaa, nappula suorittaa normaalia “poistu menusta” toimintoa.

5.4.5 Näytön kielen vaihtaminen

UPS-laitteiden käyttäjille tulee välillä vastaan tilanteita joissa tarvitaan huollon apua puhelimitse. Tällaisissa tapauksissa tulee vastaan tilanteita, jolloin soittaja on muunmaalainen kuin puhelimen toisessa päässä oleva huoltomies ja puhelun aikana käytetään yhteisenä kielenä englantia. Soittajalla on ongelma, jonka selvittämiseksi hänen täytyy esimerkiksi lukea huoltomiehelle hälytysteksti näytöltä, mutta koska

5.4 Käyttöliittymän toteutus 52 ei osaa sitä esimerkiksi hankalan termistön takia kääntää englanniksi voi huollon olla vaikea auttaa tilanteessa. Kun vaikkapa puolaa taitamattomalle huoltomiehel- le luetaan ruudun teksti puolaksi puhelimitse, voi käännöksen löytämiseen mennä turhaan aikaa ja virheitä voi syntyä.

Tilanne voi olla myös se, että huoltomies asiakkaan tiloissa törmää tilanteeseen jos­

sa käyttöliittymä on asetettu vieraalle kielelle ja kieli tarvitsisi saada vaivattomasti vaihdettua englanniksi ilman sanakirjan apua.

Tilanteen ratkaisuna olisi, jos käyttöliittymä tarjoaisi helposti suoritettavan toimin­

non jolla kieli saataisiin vaihdettua englanniksi. Perusmalli, jossa käyttäjän pitäisi ensin siirtyä menurakenteessa kielen vaihtamisruutuun, ja sitten palata taas ongel- maruutuun on monimutkainen selittää puhelimessa eikä kovin nopea suorittaa.

Yksi mahdollisuus voisi olla, että käyttöliittymä tarjoaisi toiminnon jossa useaa nap­

pulaa yhtäaikaa painamalla pääsi vaihtamaan käytössä olevaa kieltä. Tässä ratkai­

sussa on kuitenkin muutama ongelma. Käyttäjän kannalta voi olla hankalaa toinen käsi puhelimessa yrittää saada sopiva näppäinyhdistelmä painettua yhdellä kädel­

lä. Toiminnon toteuttajan eli ohjelmoijan kannalta ongelmana tulisi vastaan tilanne, jossa nappulan painamisen jälkeen siihen ei enää voisikaan suoraan reagoida. Pitäi­

si lisätä ylimääräistä logiikkaa jossa odotella sitä mahdollisuutta, että useata nappu­

laa saatetaan painaa yhtäaikaisesti - niin samanaikaisesti käyttäjä tuskin nappuloita painaisi että muutos näkyisi käyttöliittymäohjelmalle kerralla.

Käytettyyn toteutukseen löydettiin malli, jossa kielen vaihtomenuun päästään aina yhtä nappulaa painaen. Ratkaisu perustuu siihen, että “paluu” -nappulana käytetyn painikkeen toiminto on aina johdonmukaisesti peruutus tai paluu ylöspäin menu- rakenteessa. Kyseinen painike voidaan milloin tahansa painaa pohjaan, mikä ensi­

sijaisesti aiheuttaa muutaman automaattisen toiston jälkeen paluun aloitusmenuun.

Jos nappulan painamista kuitenkin jatketaan, voidaan muutaman sekunnin viiveellä toteuttaa siirtymä kielenvaihtoruutuun. Kun kieli on vaihdettu, tarjotaan suora hyp­

py menuruutuun josta toiminnon aloittanut paluunappulan painaminen alunperin sai alkunsa. Tämä on helppo toteuttaa, ja helppo neuvoa myös puhelimessa: painat vasemman nappulan pohjaan ja odotat, kielen vaihdat nuolinäppäimillä ja painat

“paluu” nappulaa.

5.4 Käyttöliittymän toteutus 53

5.4.6 Painikkeiden kuvakkeet

Ruudun alalaidalla esitettävistä painikkeiden kuvakkeista haluttiin tehdä sellaiset että niitä ei tarvitsisi toteuttaa erilaisia jokaiselle eri kielelle. Sen takia kuvakkeik­

si yritettiin valita mahdollisimman yleisesti ymmärrettyjä kuvia. Ongelmana kovin monimutkaisten kuvien käyttämiselle olisi muutenkin ollut käytössä oleva pieni ti­

la, tämä osaltaan pakotti yrittämään yksinkertaisten kuvakkeiden valitsemiseen.

Käyttöön valitut kuvakkeet ovat esitettynä taulukossa 5.1. Pieneen tilaan mahtu­

vista vaihtoehdoista erilaisten nuolten käyttäminen tulkittiin tarpeeksi yleismaail­

malliseksi jotta ne olisivat mahdollisimman laajasti ymmärrettyjä. Näihin sisälty­

vät suorien liikettä kuvaavien nuolten lisäksi kulmaan taivutettu “enter” -nuoli sekä mutkalle taivutettu yleensä jonkin toiminnon peruuttamiseen liittyvä nuoli.

Eniten pohdintaa kuvakkeissa aiheutti se että pitäisikö menurakenteessa takaisin­

päin liikkumiseen käyttää nuolta vasemmalle, kun vastaavasti valittuun menuun siirtymiseen käytettiin nuolta oikealle. Toisaalta vasemmalle osoittavalle nuolelle oli lärvistä myös peruuttamisessa, joka tapahtuu jonkin menuruudun sisällä. Tässä päädyttiin valitsemaan menuissa takaisinpäin liikkumiseen selkeästi erottuva kuva­

päin liikkumiseen käyttää nuolta vasemmalle, kun vastaavasti valittuun menuun siirtymiseen käytettiin nuolta oikealle. Toisaalta vasemmalle osoittavalle nuolelle oli lärvistä myös peruuttamisessa, joka tapahtuu jonkin menuruudun sisällä. Tässä päädyttiin valitsemaan menuissa takaisinpäin liikkumiseen selkeästi erottuva kuva­