Työskentely API:en ja SDK:ien kanssa

Koko: px
Aloita esitys sivulta:

Download "Työskentely API:en ja SDK:ien kanssa"

Transkriptio

1 OSA VII 679 LUKU LUKU Työskentely API:en ja SDK:ien kanssa Opi, kuinka käytetään Visual C++-ohjelmoijille tarkoitettuja eri API-rajapintoja ja SDK-kehitysympäristöjä Tosi nopeiden ääni- ja grafiikkasovellusten luominen DirectX:llä Sähköpostin lähettäminen ja vastaanottaminen MAPI-arkkitehtuuria käyttäen Media Control rajapinnan käyttö multimediaäänen ja videon esittämiseen

2 680 Mistä API- ja SDKkehityspaketit saa? Kaikkia API- ja SDK-paketteja ei toimiteta Visual C++:n mukana, mutta useimmat voidaan ladata Microsoftin sivustosta (msdn.microsoft.com) ilmaiseksi. Vaikka käyttämäsi API tai SDK olisikin toimitettu Visual C++:n mukana, kannattaa tarkistaa Webistä uusin versio. Kehittyneet tekniikat Mitä ovat API:t ja SDK:t APIt (Application programming interface) ovat funktiokokoelmia, jotka on yleensä tallennettu dynaamisiin linkkikirjastoihin (.dll) tai staattisiin kirjastoihin (.lib). Näiden avulla voidaan toteuttaa helpommin erityyppisten sovellusten toimintoja, kuten grafiikan, äänen, tietokannan käsittelyn tai tiedonsiirron toimittamalla koodikerroksen sovelluksesi ja laitteiston väliin. Eri API-kirjastoja on lukuisia ja ne helpottavat sovellusten rakentamista sekä yhtenäistävät alan toiminnot standardiksi funktiokutsujoukoksi. COMin ja OLEn kehitys on saanut aikaan sen, että useimmat näistä API-kirjastoista on toteutettu COM-objekteina, mikä helpottaa merkittävästi eri.dll-versioista johtuneita versionhallintaongelmia. SDK:t (Software development kit) ovat API-kirjastoja, joiden mukana toimitetaan dokumentointi sekä esimerkkiohjelmia. Nämä auttavat eri tyyppisten sovellusten kehittämistä, kuten Game SDK pelien ja OLE DB SDK OLE-pohjaisten tietokantasovellusten. Yleensä API-funktiot eivät sisälly projektisi oletuksena linkitettäviin kirjastoihin ja joudut sitä varten linkittämään projektiisi erityiseen kirjastoon. Voit yleensä lisätä kaikkien tarvitsemiesi API-funktioiden prototyypit ja makromäärittelyt sovellustiedostoosi lisäämällä APIkohtaisen.h header-tiedoston käännökseen #include-lauseella. KATSO MYÖS OLEn ja COMin perusteet luvusta 25. Nopean äänen ja näytön toteuttaminen DirectX:llä DirectX APIt luotiin ratkaisemaan näyttö- ja äänilaitteisiin liittyvät suorituskykyongelmat. Vaikka Windows tarjoaakin kehittyneen vakiografiikan ja äänitoimintojen tuen, nämä eivät olleet riittävän nopeita tai joustavia nopeiden toimintapelien ja esitysohjelmistojen kirjoittajille. Pitkän aikaa ainoa ratkaisu oli kirjoittaa ohjelmisto DOSsovelluksena ja menettää näin Windowsin laitteistoriippumattomuus, konfigurointitiedot ja muut palvelut. Microsoft on täyttänyt tämän puutteen joukolla laiteriippumattomia API-rajapintoja, jotka tarjoavat nopeamman ja suoremman pääsyn

3 OSA VII LUKU näyttö-, ääni- ja syöttölaitteisiin. Nämä APIt ovat DirectSound, DirectDraw, Direct3D, DirectPlay, DirectMusic, DirectAnimation, DirectInput ja DirectSetup; yhdessä ne muodostavat Game SDK:n (peli-sdk), joka on ollut hyvin suosittu pelintekijöiden ja esitysgrafiikkateollisuuden joukossa. Kaikki nämä APIt on toteutettu komponenttiobjektimallia (COM) käyttäen ja siksi funktiokutsut on ryhmitelty ne toteuttavan COMobjektin tiettyyn COM-liittymään. Windows 95 ei asenna näiden APIen vaatimia dll-kirjastoja, mutta ne ovat vapaasti jaeltavissa ja toimitetaan yleensä niitä käyttävien pelien mukana. Nämä voidaan myös ladata Microsoftin webbipalvelusta osoitteesta KATSO MYÖS OLEn ja COMin perusteet luvusta 25. DirectSoundin käyttö DirectSound APIn avulla pääset käsiksi suoraan äänikorttisi laitteistoon tehdäksesi ääntä aaltomuotopuskurin (waveform buffer) sisällön perusteella. Puskuri tarkoittaa vain suoraa muistialuetta, jota äänikortin laitteisto lukee ja muuttaa arvot äänitasoiksi. Yksinkertaisin koodaustekniikka on antaa jokaisen puskurin tavun edustaa 256 äänenvoimakkuustasoa, mikä vastaa suoraan kaiuttimen kartion asemaa äänikorttiisi kytketyssä kaiuttimessa. Kun puskurin arvot asetetaan vastaamaan haluttua aaltomuotoa, voi määrätä suoraan äänen korkeuden. Kun muutat tämän aaltomuodon amplitudia puskurin eri kohdissa, saat eri efektejä aaltomuotoa moduloimalla. Tätä aaltomuotopuskuria kutsutaan DirectSoundin ensisijaiseksi puskuriksi. Ensisijaista puskuria ei yleensä suoraan luoda, vaan tavallisesti luodaan toissijaisia puskureita ja näitä puskureita toistettaessa ne sekoittuvat automaattisesti ja tuottavat ensisijaisen puskurin. Useaa toissijaista puskuria ja sekoittamista käyttäen voidaan helposti saada aikaan hyvinkin mutkikkaita äänitehosteita. Kuva 28.1 esittää kahden hyvin erilaisen toissijaisen puskurin sekoittavan esimerkkiohjelman tulostusta. Ylempi puskuri on puhdas vaimeneva siniaalto ja keskimmäinen esittää amplitudiltaan (voimakkuudeltaan) kasvavaa satunnaiskohinaa. Alimmainen aaltomuoto on ensisijaisen puskurin sisältö eli kahden edellisen esittämisen aikaansaama sekoitus. Tuloksena Nopean grafiikan ongelmat Graafisten animaatioiden kirjoittamisen keskeisin ongelma on puhdas suorituskyky. Ihminen näkee peräkkäin esitetyt kuvat liikkeenä, kun kuvia näytetään noin 24 kertaa sekunnissa värin 800x600 näytöllä on kuvapistettä ja jos jokaisen kuvapisteen arvo vaihdetaan, tarvitaan sekunnissa operaatiota. Kuvapisteen asettaminen vie noin 12 kellojaksoa, joten pelkkä näytön päivittäminen vaatisi kellojaksoa. 500 MHz prosessorilla tuo olisi neljännes koko CPU ajasta, 266 MHz prosessorilla jo puolet. Silti toinen puoli ajasta menisi vielä mutkikkaaseen ja raskaaseen kolmiulotteiseen laskentaan, pintakuvioinnin tekemiseen, bittikarttojen skaalaamiseen ja käyttäjän toimiin.

4 682 DirectSoundCreate()- funktion käyttö Jos käytät DirectSoundCreate()- funktiota, joudut linkittämään projektiisi myös dsound.libkirjaston Project Settingsvalintaikkunan Link-välilehden Object/Library Modules -ruutuun. CoCreateInstance()-tapaa käyttämällä tätä kirjastoa ei tarvita, mutta luokan ja liittymän tunnukset tarvitaan (CLSID ja IID). Kehittyneet tekniikat saadaan aikaan puhdas ääni, joka nopeasti muuttuu esitettäessä kohinaksi. Voit sekoittaa haluamiasi ääniä toisten kanssa, esimerkiksi sakara-aaltoa, kolmioaaltoa tai muuta puskurin sisältöä (myös äänitettyä) tuottaaksesi haluamasi äänen. Ensimmäinen tehtävä DirectSound APIa käytettäessä on IDirectSound-liittymän luominen joko kutsumalla suoraan CoCreateInstance()-funktiota (kts. luku 25) tai käyttämällä pikavalintafunktiota DirectSoundCreate(). DirectSoundCreate() käyttää kolmea parametriä: ensimmäinen on osoitin GUID-tunnukseen, joka määrittää käytettävän äänilaitteen. Nämä äänilaitteen GUID-tunnukset saadaan selville asettamalla DirectSoundEnumerate()-funktiolla callback-funktio. Vaihtoehtoisesti parametrinä voidaan antaa NULL, jolloin käytetään oletusäänilaitetta. Toinen parametri on osoitin DirectSound-liittymäobjektin osoittimeen, jonka avulla asetetaan sovelluksesi osoitin uuteen objektiin. Kolmas parametri asetetaan yleensä arvoon NULL, ellet joudu käyttämään COM-aggregaatio tekniikkaa. Jos tämä funktio onnistuu, palautettu osoitin osoittaa IDirectSoundliittymään, joka voidaan vapauttaa muiden COM-liittymien tapaan liittymän Release()-funktiolla. Kun IDirectSound-liittymä on saatu, sen yhteiskäyttötaso (cooperative level) tulee säätää välittömästi. Useilla DirectX API kirjastoilla käytetään tällaisia tasoja, jotka määrittävät, kuinka niiden käyttämää laitteistoa pitäisi jakaa eri sovellusten kesken. Voit asettaa tämän tason IDirectSound-liittymän SetCooperativeLevel()- funktiolla syöttämällä sille oman sovelluksesi Windows-kahvan. Joudut myös syöttämään lipputietona halutun yhteiskäyttötason. Tavallisesti käytettävä DSSCL_NORMAL-arvo sallii täyden yhteiskäytön muiden sovellusten kanssa. Tämän jälkeen voit luoda toissijaiset äänipuskurit IDirectSoundliittymän CreateSoundBuffer()-funktiolla. Funktio käyttää kolmea parametriä. Ensimmäinen näistä on DSBUFFERDESC-tietorakenne, joka kertoo luotavaksi halutun puskurin tyypin. Toinen parametri on uutta puskuria varten oleva sovelluksesi IDirectSoundBuffer -liittymäosoitin. Kolmas parametri asetetaan yleensä arvoon NULL, ellet joudu käyttämään COM-aggregaatio tekniikkaa.

5 DSBUFFERDESC-tietorakenne määritellään typedef struct _DSBUFFERDESC{ DWORD dwsize; DWORD dwflags; DWORD dwbufferbytes; DWORD dwreserved; LPWAVEFORMATEX lpwfxformat; } DSBUFFERDESC, *LP DSBUFFERDESC; DSBUFFERDESC-tietorakenteen jäsenet edustavat seuraavaa: dwsize on tietorakenteen koko (joka saadaan sizeof()- operaattorilla). dwflags-lippuina voidaan määritellä useita ohjausasetuksia, kuten stereoääni ja äänenvoimakkuus. Hyvät oletusarvot saadaan lipulla DSBCAPS_CTRLDEFAULT. dwbufferbytes kertoo, kuinka monta tavua uuteen puskuriin tulee mahtua. Pitkille ääninäytteille ja mutkikkaille äänille tarvitaan suurempia puskureita; pienempi puskuri käy lyhyisiin tai toistuviin ääniin. Puskureita voidaan toistaa silmukassa, jolloin puskurin sisältö käytetään ääntä tuotettaessa uudelleen ja uudelleen ja näin saadaan aikaan pitkiä toistuvia ääniä. lpwfxformat osoittaa WAVEFORMATEX-tietorakenteeseen, jossa on tiedot äänikortille siitä, kuinka äänitehoste esitetään. OSA VII LUKU WAVEFORMATEX-tietorakenteessa on tietoa muun muassa puskurin esitysnopeudesta sekä siitä, kuinka monta puskurin tavua tarvitaan yhden ääniarvon esittämiseen. Siinä on myös kerrottu laitteistosta riippuva äänen esittämistekniikka, mutta useimmat äänikortit tukevat aiemmin esiteltyä yksinkertaista WAVE_FORMAT_PCM-tekniikkaa. Kun toissijainen puskuri on käytettävissä, voit asettaa sen arvot joko lataamalla ne.wav-tiedostosta tai määrittämällä ne ohjelmassa. Saatiinpa puskurin tiedot kummalla tavalla tahansa, puskurin käsittelyä ohjaa IDirectSoundBuffer-liittymän Lock()-funktio, joka palauttaa puskurin osoitteen ja koon. Tämän funktion kutsumisen jälkeen voit kirjoittaa puskuriin haluttua aaltomuotoa vastaavat arvot ja kutsua lopuksi puskurin vapauttamiseksi Unlock()-funktiota. Kun puskurin arvot on asetettu, voit esittää sen IDirectSoundBuffer-liittymän Play()-funktiolla. Play()-funktio tarvitsee kolme parametriä, joista kaksi ensimmästä ovat varattuja ja ne Puskurin lukitseminen ja avaaminen Äänipuskuria ei kannata lukita pitkäksi aikaa, muuten lukittua puskurin osaa tarvitseva toistettava ääni aletaan esittää kohinana. Joillakin äänikorteilla on puskuri, jota ei pääse suoraan käyttämään prosessorin osoiteavaruudesta. Tällaisessa tapauksessa Lock()- ja Unlock()- funktiot myös siirtävät tiedon kortilta keskusmuistiin, jossa ohjelmasi voi sitä päivittää ja siirtää sitten takaisin toistettavaksi kortille.

6 684 Kehittyneet tekniikat tulee asettaa nollaksi. Kolmas parametri voi olla DSBPLAY_LOOPING puskurin sisällön toistamiseksi tai nolla, jolloin puskurin sisältö esitetään ainoastaan kerran. Esittäminen voidaan lopettaa kutsumalla Stop()-funktiota. Listauksessa 28.1 esitetään, kuinka DirectSoundia voidaan käyttää yksinkertaisen, mutta vaikuttavan näppäimistöltä käytettävän syntetisaattoriäänen tuottamiseen yksinkertaisen SDI-sovelluksen näkymäluokasta. Ohjelma luo ja näyttää kahden toissijaisen äänipuskurin sisällön punaisena ja vihreänä viivana, jotka asetetaan vaimenevaksi siniaalloksi ja voimakkuudeltaan kasvavaksi kohinaksi (kuva 28.1). KUVA 28.1 SoundView-esimerkki esittää kaksi puskuria ja tuloksena saadun niistä sekoitetun aaltomuodon. Tämän jälkeen sovellus esittää molemmat puskurit yhtä aikaa käyttäjän painaessa näppäintä, jolloin saadaan aikaan kohinan katoava siniaalto ensisijaisesta puskurista (yhdistetty aaltomuoto on alin sininen viiva). Siniaallon tuottama äänen korkeus määräytyy painetun näppäimen ASCII-koodin perusteella, joten aakkosten loppupään merkit saavat aikaan korkeampia ääniä. Luonnollisesti tämä esimerkki vaatii äänikortin. LISTAUS 28.1 LST28_1.CPP Yksinkertainen näppäimistöltä soitettava, kahta äänipuskuria sekoittava syntetisaattoriohjelma 1 CSoundView::CSoundView() 2 { 3 m_pdsobject = NULL;

7 OSA VII LUKU m_pdsbuffer = NULL; 5 m_pdsmix = NULL; 6 } 7 CSoundView::~CSoundView() 8 { 9 if (m_pdsmix) m_pdsmix->release(); 1 10 if (m_pdsbuffer) m_pdsbuffer->release(); 11 if (m_pdsobject) m_pdsobject->release(); 12 } 1 DirectSound COM-objektit tulee vapauttaa hallitusti Release()-funktiolla. 13 void CSoundView::PlayFreq(double dfreq) 14 { 15 if (!m_pdsobject) 16 { 17 // ** Create the Direct Sound Object 18 if(ds_ok == DirectSoundCreate(NULL, &m_pdsobject, NULL)) 19 { 20 // ** Set the Co-Operation level 21 m_pdsobject->setcooperativelevel(m_hwnd, DSSCL_NORMAL); 22 // ** Clear the direct sound buffer 23 memset(&m_dsbufferdesc,0,sizeof(dsbufferdesc)); 24 // ** Setup a secondary buffer 25 m_dsbufferdesc.dwsize = sizeof(dsbufferdesc); 26 m_dsbufferdesc.dwflags = DSBCAPS_CTRLDEFAULT; 27 m_dsbufferdesc.dwbufferbytes = 4096; 28 // ** Set a wave format for 22.0Khz, 1 byte DtoA 29 static WAVEFORMATEX swave = { 30 WAVE_FORMAT_PCM,1,22000,22000,1,8,0 }; 31 m_dsbufferdesc.lpwfxformat = &swave; // ** Create the First Secondary buffer 34 m_pdsobject->createsoundbuffer( &m_dsbufferdesc,&m_pdsbuffer,null); 35 // ** Create the Second Secondary buffer 36 m_pdsobject->createsoundbuffer( &m_dsbufferdesc,&m_pdsmix,null); 37 } 38 } 39 // ** if the DirectSound object is valid if (m_pdsobject) 41 { 42 // ** Declare buffer pointers 43 LPBYTE pbuffer1,pbuffer2; 44 LPBYTE penv1,penv2; 45 DWORD dwsize1,dwsize2; 46 // ** Erase the background 47 CClientDC dcclient(this);

8 686 Kehittyneet tekniikat 48 CRect rcclient; 49 GetClientRect(&rcClient); 50 int yoff = (rcclient.height()-24)/3; 51 dcclient.fillsolidrect(rcclient,rgb(255,255,255)); 2 Lock()-funktio lukitsee muistin ja palauttaa ohjelmasi käyttämien puskureiden osoitteet. 52 // Lock the sound buffer 53 m_pdsbuffer->lock(0,m_dsbufferdesc.dwbufferbytes, &pbuffer1,&dwsize1,&pbuffer2, &dwsize2,0); 2 54 m_pdsmix->lock(0,m_dsbufferdesc.dwbufferbytes, &penv1,&dwsize1,&penv2,&dwsize2,0); 55 // ** Set the two buffers 56 double drange = / (double)dwsize1; 57 double dxrange = (double)rcclient.width() / (double)dwsize1; 58 for(int i=0;i<(int)dwsize1;i++) 59 { 60 double damplitude = drange * (double)i; 61 BYTE b1 = (BYTE)(127 + ( damplitude) 62 * sin((double)i / (0.147 * dfreq))); 63 BYTE b2 = (BYTE)(rand()%(int)dAmplitude)>>1; 64 *(pbuffer1+i) = b1; 65 *(penv1+i) = b2; 66 BYTE b3 = b1 + b2; 3 Aaltomuodon arvot myös piirretään, jotta näkisit puskurin sisällön. 4 Puskurit asetetaan avaamisen jälkeen esittämään sisältönsä. 67 // ** Draw the waveform 3 68 int x = (int)(dxrange * (double)i); 69 dcclient.setpixelv(x,(b1>>1),rgb(255,0,0)); 70 dcclient.setpixelv(x,yoff+64 + b2>>1), RGB(0,255,0)); 71 dcclient.setpixelv(x,yoff*2 + (b3>>1), RGB(0,0,255)); 72 } 73 // ** Unlock the buffers and play the sound 4 74 m_pdsbuffer->unlock(pbuffer1, dwsize1,pbuffer2,dwsize2); 75 m_pdsmix->unlock(penv1,dwsize1,penv2,dwsize2); 76 m_pdsbuffer->play(0,0,0); 77 m_pdsmix->play(0,0,0); 78 } 79 } 80 void CSoundView::OnKeyDown(UINT nchar, UINT nrepcnt, UINT nflags) 81 { 82 CView::OnKeyDown(nChar, nrepcnt, nflags); 83 // ** Play the note with a freqency of the key value 84 if (nrepcnt==1) PlayFreq((double)nChar); 85 }

9 Listauksessa 28.1 esitetty koodi tulee sijoittaa tavallisen AppWizardin tekemän SDI-sovellusrungon (nimeltään Sound) näkymäluokkaan. Koska tässä on lisätty koodia näkymäluokkaan (SoundView.cpptiedostoon), joudut myös lisäämään uusia jäsenmuuttujia varten seuraavat rivit luokan määrittelyn header-tiedostoon (SoundView.h): IDirectSound* m_pdsobject; IDirectSoundBuffer* m_pdsbuffer; IDirectSoundBuffer* m_pdsmix; DSBUFFERDESC m_dsbufferdesc; void PlayFreq(double dfreq); Nämä rivit määrittelevät DirectSound-liittymää varten tarvittavan liittymäosoitinjäsenmuuttujan, kaksi äänipuskuria ja puskurinkuvaustietorakenteen. Myös äänitehosteen toteutuksessa tarvittava PlayFreq()-funktio määritellään. Lisää ClassWizardilla OnKeyDown()-käsittelijä WM_KEYDOWN-sanoman käsittelemistä varten. ClassWizard huolehtii myös vaadittujen headertiedostojen tekemisestä sekä sanomakartan alkion lisäämisestä. Jotta kääntäjä saisi vaadittavat tiedot liittymäosoittimesta, aaltomuototietorakenteesta toteutuksessa ja käytetystä sinifunktiosta, joudut lisäämään seuraavat #include-lauseet näkymäluokan määrittelytiedoston alkuun (soundview.h): OSA VII LUKU #include mmsystem.h #include DSOUND.H #include math.h Listauksessa 28.1 riveillä 1 6 esitetty näkymäluokan muodostin alustaa osoittimet DirectSound-objektiin m_pdsobject ja kaksi osoitinta puskureihin, m_pdsbuffer ja m_pdsmix, arvoon NULL. Vastaava tuhoajafunktio riveillä 7 12 tuhoaa nämä COM-objektit kutsumalla niiden liittymän Release()-funktiota ja vapauttaen niiden viittausluvut (reference count). Pääfunktion PlayFreq() riveillä alustetaan funktion ensimmäisellä kutsukerralla vaadittu DirectSound-objekti ja puskurit. Alustus täytyy suorittaa tässä vaiheessa, koska rivillä 21 kutsuttava SetCooperativeLevel()-funktio tarvitsee voimassa olevan ikkunakahvan, m_hwnd, joka ei ole vielä olemassa muodostinta suoritettaessa. Jos DirectSound-objektin alustaminen onnistuu rivillä 18, luodaan kaksi toissijaista puskuria kutsumalla funktiota CreateSoundBuffer() vaadittujen puskurin tietojen Yhteiskäyttötasot (cooperative levels) DirectSound-objektilla on käytettävissä neljä eri yhteiskäyttötasoa. DSSCL_EXCLUSIVE antaa sovelluksellesi (jos se ehtii ensin) äänikortit käyttöön kokonaan ja muut sovellukset eivät saa ääntä esitettyä. DSSCL_NORMAL-tasolla äänikorttia käytetään moniajon mukaan joustavasti sovellusten välillä. DSSCL_PRIORITY antaa sovelluksellesi etusijan äänikortin käyttöön muihin sovelluksiin nähden. DSSCL_WRITEPRIMARY on korkein etuoikeustaso, jolloin sovelluksesi pääsee käsiksi ensisijaiseen äänipuskuriin ja voi estää (muiden sovellusten) toissijaisten puskureiden esittämisen.

10 688 Äänipuskureiden sekoittaminen Kahta yhtäaikaa esitettävää toissijaista puskuria sekoittamalla aaltomuodolla saadaan moduloitua toista. Tällä tekniikalla voidaan esimerkiksi korkeataajuista ensimmäistä puskuria moduloida matalataajuisella toisella puskurilla, mikä tekee esitettävästä äänestä värisevän tai karkeamman. Kehittyneet tekniikat m_dsbufferdesc-jäseneen ja WAVEFORMATEX-tyyppiseen swavetietorakenteeseen asettamisen jälkeen. PlayFreq()-funktion jälkimmäinen puolisko asettaa äänipuskurit, piirtää aaltomuodot ja esittää äänen dfreq-parametrin mukaan. Riveillä alustetaan ikkunapiirtopinta, tyhjennetään näkymä ja alustetaan koko näkymän työalue. Riveillä suoritetaan kahdelle toissijaiselle puskurille Lock()-toiminto, joka palauttaa osoittimet niihin. Riveillä on toteutettu silmukka, jossa näihin kahteen puskuriin generoidaan arvot ja ne myös piirretään näkymään. Rivillä 61 lasketaan siniaallon arvo b1, joka perustuu taajuuteen, silmukkamuuttujan i edustamaan paikkaan puskurissa ja pienenevään damplitude-voimakkuusarvoon. Tämä arvo tallennetaan kahdesta puskurista ensimmäiseen rivillä 64 ja sen perusteella piirretään rivillä 69 kolmas aalto punaisena SetPixelV()-funktiolla. Toisen puskurin kohinasignaalin arvo, b2, saadaan puolittamalla satunnaislukufunktiolla rand() saadun arvon ja äänisignaalin voimakkuuden jakojäännös (rivi 63). Tämä arvo kirjoitetaan puskuriin rivillä 65 ja näytetään vihreänä kuvapisteenä rivillä 70. Kolmas arvo, b3, joka vastaa esitettäessä ensisijaisen puskurin arvoa, lasketaan rivillä 66 yksinkertaisesti sekoittamalla (laskemalla yhteen) b1 + b2. Tämä arvo näytetään sekoitettuna aaltomuotona sinisellä kuvapisteellä rivillä 71. Riveillä suoritetaan kahdelle puskurille Unlock()-toiminto niiden sisällön esittämiseksi Play()-funktiolla riveillä 76 ja 77. Kun ensimmäistä Play()-funktiota kutsutaan, muodostetaan ensisijainen puskuri automaattisesti tämän toissijaisen puskurin vaatimusten mukaisesti ja siitä kirjoitetaan äänisignaali suoraan toistavalle laitteistolle. Seuraava Play()-funktiokutsu saa aikaan toisen toissijaisen puskurin sisällön sekoittamisen ensisijaiseen puskuriin, jolloin haluttu äänitehoste saadaan aikaan. Lopuksi voidaan vielä lisätä OnKeyDown()-käsittelijä New Windows Message/Event valintaikkunan avulla näppäinpainallusten käsittelemiseksi ja PlayFreq()-funktion kutsumiseksi. Kunkin näppäimen ASCII-koodi vastaa esitettyä taajuutta, jolla saadaan aikaan vaikutelma yksinkertaisesta, näppäimistöltä ohjattavasta syntetisaattorista. Ennen tämän sovelluksen kääntämistä joudut ottamaan linkitykseen mukaan dsound.lib-kirjaston Project Settings valintaikkunan Link välilehdeltä lisäämällä sen Object/Library Modules-riville. Saat tämän valintaikkunan esiin näppäilemällä Alt+F7 tai valitsemalla Projectvalikosta Settings.

11 Kun käännät ja ajat sovelluksesi, saat aaltomuodot esiin käyttämällä näppäimistön eri kirjaimia. Kuulet samalla myös ASCII-koodia vastaavan äänen tehosteineen. OSA VII LUKU KATSO MYÖS OLEn ja COMin perusteet luvusta 25. DirectDraw:n käyttö DirectDraw API:lla voidaan kirjoittaa hyvin nopeita, välkkymättömiä grafiikkasovelluksia. Toimintapeleille ja animaatio-ohjelmille DirectDraw:n synkronoitu kaksoispuskurointitekniikka on välttämätöntä. DirectDraw:lla saadaan käyttöön koko Windowsin näyttö ja eri näyttötilat (myös vähemmän tunnettu ModeX, jota Doom2-pelin väitetään käyttäneen). Ohjelmat piirtävät näytettävän kuvan piilossa olevalle taustanäytölle, joka kuvan valmistuttua vaihdetaan esillä olevan tilalle. Tämä vaihto voidaan tahdistaa tehtäväksi näytön elektronisuihkun palatessa viimeisestä pisteestä alkuun, jolloin animaatio saadaan välkkymättömäksi. Voit myös jättää Windows-näytön ennalleen ja käyttää tavallisen ikkunan sisällä nopeampaa piirtotekniikkaa. DirectDraw:lla saadaan piirto- ja lohkon kopiointitoiminnot nopeammiksi kahta ohjelmistokerrosta, HAL (Hardware Abstraction Layer, laitteiston piilotus) ja HEL (Hardware Emulation Layer, laitteiston mallinnus), käyttäen. DirectDraw-pinnan piirto- ja kopiointitoiminnot käyttävät näistä HALia. Näin saadaan aikaan laiteriippumaton toiminta, jolloin samalla ohjelmakoodilla voidaan käyttää erilaisia näyttökortteja. Mikäli näyttökortti osaa suoraan jonkin piirtotoiminnon, tämä laitteistokiihdytys nopeuttaa piirtoa huomattavasti; ellei osaa, HEL-kerros mallintaa kortin toimintoja ohjelmallisesti ja tällöinkään näyttökortin ominaisuudet eivät rajoita piirtotoiminnon käyttöä. DirectDraw APIssa on COM-liittymien kautta käytettävissä ainoastaan neljä COM-objektia, jotka on esitetty taulukossa Taulukosta muutamien liittymien nimen lopussa oleva numero 2 kertoo, että kyseessä on uudempi versio COM-liittymästä, jonka alkuperäinen versio on vielä käytettävissä vanhemmille sovelluksille. Taulukosta ilmenee myös, että tärkein objekti on DirectDrawSurface. DirectDraw-pääobjekti luo näitä pintoja (surface), joita voidaan rajata DirectDrawClipper-objekteilla ja maalata DirectDrawPaletteobjektin väreillä. ModeX ModeX on dokumentoimaton VGA-näyttötila. Useimmat pelintekijät joutuivat valitsemaan nopeussyistä monivärisen heikkoresoluutiotilan animaatioiden esittämiseen. Tuloksena paras VGA-tila oli 0x13 (heksadesimaalisena), jolla saadaan erottelutarkkuudeksi 320x200 kuvapistettä. Erikoinen ModeX antaa kuitenkin pystysuunnassa hieman paremman arvon, 320x240.

12 690 Kehittyneet tekniikat TAULUKKO 28.1 DirectDraw-objektit ja niiden toiminnot DirectDraw-objekti COM-liittymä Toiminto DirectDraw IDirectDraw2 Käsittelee näyttötilat ja laitteiston ominaisuudet ja luo muut objektit. DirectDrawSurface IDirectDrawSurface2 Käsittelee ensisijaiset ja toissijaiset bittikartat, kaksoispuskuroinnin ja piirto- ja kopiointifunktiot. Tätä pintaa voidaan rajata DirectDrawClipperobjekteilla ja maalata DirectDrawPaletteobjektin väreillä. DirectDrawClipper IDirectDrawClipper Käsittelee pintojen rajaamisen tiedot. DirectDrawPalette IDirectDrawPalette Käsittelee väripaletin alkiot ja pinnalla käytettävien värien tiedot. COM-aggregaatio Aggregaatio on COM-tekniikka, jolla komponentteja sisältävä toinen komponentti voi hyödyntää sisältämänsä komponentin toimintoja. Ulompi komponentti tarjoaa asiakasohjelmilleen liittymän, joka on itse asiassa sen sisältämän komponentin liittymä. Asiakkaan pyytäessä osoitinta tuohon littymään ulompi komponentti palauttaa suoran osoittimen sisemmän komponentin liittymään. Tämän kolmannen parametrin tarjoamalla DirectDraw-objekti antaa muiden komponenttien upottaa sen sisälleen. DirectX-kirjaston vanhemmissa versioissa tätä ominaisuutta ei välttämättä tueta, jolloin DirectDrawCreate()- palauttaa virhekoodin. Saat luotua DirectDraw pääobjektin ddraw.lib-kirjaston funktiolla DirectDrawCreate() tai kutsumalla suoraan CoCreateInstance()- funktiota. DirectDrawCreate()-funktio tarvitsee kolme parametriä. Ensimmäinen on käytettävän näyttöajurin GUID-tunnus. Näyttöajurin tunnuksena annetaan yleensä NULL, jolloin valitaan käytettäväksi sillä hetkellä aktiivisena oleva ajuri. Muiden ajurien tunnukset löytyvät vastaavalla enumerate-funktiolla. Toinen parametri on osoitin uuden objektin IDirectDraw-liittymäosoittimeen. Jos käytät tätä metodia, joudut hankkimaan tämän jälkeen osoittimen uudempaan IDirectDraw2- liittymään COMin QueryInterface()-funktiolla. Kolmas parametri asetetaan tavallisesti arvoon NULL. Muita arvoja käytetään ainoastaan COM aggregaatio tekniikkaa käytettäessä. COM-objekti on mahdollisesti helpompi luoda CoCreateInstance()- funktiolla, koska tällöin päästään suoraan käsiksi IDirectDraw2- liittymään eikä linkittämistä ddraw.lib-kirjastoon tarvita. Funktiota käytetään välittämällä sille luokkatunnuksena CLSID_DirectDraw ja

13 OSA VII LUKU liittymäviittauksena IID_IDirectDraw2; nämä tunnukset löytyvät header-tiedostosta DrawDlg.h. Tämän jälkeen joudut kutsumaan Initialize()-funktiota näyttöajurin määrittävällä GUID-tunnuksella (tavallisesti NULL). Kun käytössä on DirectDraw-objekti, sen yhteiskäyttötaso joudutaan asettamaan IDirectDraw::SetCooperativeLevel()-funktiolla. Tälle funktiolle syötetään ensimmäisenä parametrinä omistajasovelluksen tunnuksena toimiva ikkunakahva ja toisena lippumääreet. Voit käyttää DirectDraw-objektia yhdessä muiden sovellusten kanssa tavallista Windows-näyttöä käytettäessä (lippu DDSCL_NORMAL), mutta halutessasi koko näytön käyttöön, on yhdistettävä liput DDSCL_EXCLUSIVE ja DDSCL_FULLSCREEN. Tahdistettua kaksoispuskurointia varten on koko näyttö otettava käyttöön. Pintoja piirtämistä ja kopioimista varten luodaan DirectDraw-objektin CreateSurface()-funktiolla välittämällä sille DDSURFACEDESCtietorakenne pinnan määreenä. Tässä tietorakenteessa määritellään monenlaisia pintoja. Tavallisesti luodaan yksi ensisijainen pinta DDSCAPS_PRIMARYSURFACE-lipulla ja mahdollisesti useita taustapintoja kopiointia ja kaksoispuskurointia varten. Kaksoispuskuroinnin sivun vaihtamista varten taustapuskurit voidaan luoda ja linkittää samalla CreateSurface()-kutsulla kuin ensisijainenkin puskuri. Tällöin puskureiden lukumäärä annetaan tietorakenteen dwbackbuffercountjäsenessä ja määritellään DDSD_BACKBUFFERCOUNT-lippu. Voit myös luoda useita clipper-objekteja rajausluetteloiden luomiseksi. Tämä ovat hyödyllisiä käytettäessä DirectDraw:lle tavallista Windowsin näyttöä, koska isäikkunaa rajaamalla estetään oman ikkunan alueen ulkopuolelle piirtäminen. Näitä objekteja voidaan luoda DirectDraw-objektista CreateClipper()-funktiolla, minkä jälkeen ne valitaan pinnalla käytettäviksi pinnan SetClipper()- funktiolla. Värien kierrättämistä tukevia värivalikoimia (paletteja) voidaan luoda DirectDraw-pääobjektista CreatePalette()-funktiolla. Värien arvot voidaan alustaa valikoimaan joukolla COLORREF-arvoja, minkä jälkeen ne voidaan valita pinnalle pinnan SetPalette()-funktiolla. DirectDraw-pinnalle voidaan piirtää tavallisilla GDI-funktioilla. Aluksi pinta lukitaan omaan käyttöön ja vastaava piirtopinta haetaan GetDC()-funktiolla. Piirtämisen jäljeen tämä vapautetaan ReleaseDC()-funktiolla. Käytettävissä on myös joukko nopeita bit Animointi värejä kierrättämällä Värejä kierrättämällä saadaan liikkuvaa kuvaa ilman raskasta laskentaa. Animointi ilman ylimääräistä piirtämistä on aina kannattavaa. Ottamalla käyttöön värivalikoimasta muutamia värejä värien kierrätykseen saadaan jollekin näytön alueelle toistuvaa liikettä ilman uudelleenpiirtämistä. Jos esimerkiksi tarvitaan samaan pisteeseen neljä kooltaan kasvavaa ympyrää, voitaisiin kolme väriä määrittää mustaksi ja yksi valkoiseksi. Valkoinen väri voitaisiin sitten muuttaa värivalikoimassa toiseen näistä neljästä paikasta, jolloin jokaisella mustalla piirretty ympyrä pääsisi vuorollaan esiin.

14 692 Bit blit- ja GDI-funktioiden käyttö Ole tarkkana, ettet kutsu bit blit - funktiota (lohkon kopiointi), kun käytät GetDC():llä saatua piirtopintaa. GetDC() lukitsee piirtopinnan ja bit blit -toiminto ei onnistu - joudut kutsumaan ReleaseDC()-funktiota ennen muiden bit blit -funktioiden käyttöä. 1 CoInitialize alustaa COMkirjastot. Kehittyneet tekniikat blitting kopiointifunktioita (kuten Blt), joilla pintoja voidaan kopioida ja värittää erilaisin tekniikoin, esimerkiksi kokoa muuttaen (stretch) tai pintakuviointia käyttäen (texture mapping). Ensisijainen puskuri voidaan vaihtaa taustapuskurin kanssa ensisijaisen pinnan Flip()-funktiolla, joka osaa odottaa seuraavaa juovanpaluujaksoa. Voit joko syöttää sille lipun päivityksen odottamiseksi tai käyttää DirectDraw-objektin WaitForVerticalBlank()-funktiota. Hyödyllisiä näyttöön liittyviä funktioita ovat myös GetMonitorFrequency() sekä GetScanLine(). Listauksessa 28.2 esitetään DirectDraw-esimerkkisovellus, joka esittää Windowsin näytön haltuun ottamisen jälkeen nopean, kaksoispuskurointia käyttävän, pyörivää kierrettä esittävän animaation. Sovellukseen ei jouduta linkittämään ddraw.lib-kirjastoa, koska siinä luodaan DirectDraw-objekti CoCreateInstance()-funktiolla ja palautetaan Windowsin näyttö ennalleen Esc-näppäintä painettaessa. Tämä esimerkki pohjautuu valintaikkunasovellukseen Draw, jonka OnInitDialog()-funktiossa alustetaan näyttö ja kuva piirretään taustapuskuriin Widowsin ajastimenkäsittelijässä OnTimer(). Kun tämä nopea ja mutkikas piirros on valmis, edusta- ja taustapuskurit vaihdetaan keskenään, jotta uusi kuva tulisi välittömästi esiin sen välkkymättä. LISTAUS 28.2 LST28_2.CPP Kaksoispuskurointia käyttäen tehty pyörivää kierrettä esittävä välkkymätön DirectDrawanimaatio 1 CDrawDlg::CDrawDlg(CWnd* pparent /*=NULL*/) 2 : CDialog(CDrawDlg::IDD, pparent) 3 { 4 //{{AFX_DATA_INIT(CDrawDlg) 5 // NOTE: the ClassWizard will add member initialization here 6 //}}AFX_DATA_INIT 7 // Note that LoadIcon does not require a subsequent 8 m_hicon = AfxGetApp()->LoadIcon(IDR_MAINFRAME); 9 10 m_pidraw = NULL; 11 m_pimainsurface = NULL; CoInitialize(NULL); 1 14 } CDrawDlg::~CDrawDlg() 17 { 18 if (m_pimainsurface) 19 {

15 OSA VII LUKU m_pidraw->setcooperativelevel(m_hwnd,ddscl_normal); 21 m_pidraw->restoredisplaymode(); 2 22 m_pimainsurface->release(); 23 } 24 if (m_pidraw) m_pidraw->release(); 25 CoUninitialize(); 26 } BOOL CDrawDlg::OnInitDialog() 29 { 30 CDialog::OnInitDialog(); // ** Initialize the OLE / COM library 33 if (FAILED(CoInitialize(NULL))) return FALSE; // ** Create a direct draw object and interface 36 HRESULT hr = CoCreateInstance(CLSID_DirectDraw,NULL, 37 CLSCTX_ALL, IID_IDirectDraw2, (void**)&m_pidraw); if(!failed(hr)) 40 { 41 hr = m_pidraw->initialize((struct _GUID*)NULL); 42 if (hr!=dd_ok) return FALSE; 43 } // ** Set exclusive full screen mode 46 m_pidraw->setcooperativelevel(m_hwnd, 47 DDSCL_EXCLUSIVE DDSCL_FULLSCREEN DDSCL_ALLOWREBOOT); // ** Set up a surface description structure 50 DDSURFACEDESC DrawSurfaceDesc; 51 memset(&drawsurfacedesc,0,sizeof(drawsurfacedesc)); 52 DrawSurfaceDesc.dwSize = sizeof(drawsurfacedesc); 53 DrawSurfaceDesc.dwFlags = DDSD_CAPS 54 DDSD_BACKBUFFERCOUNT; 4 55 DrawSurfaceDesc.ddsCaps.dwCaps = DDSCAPS_COMPLEX 56 DDSCAPS_FLIP DDSCAPS_PRIMARYSURFACE; 57 DrawSurfaceDesc.dwBackBufferCount = 1; 58 // ** Create the primary surface 59 hr = m_pidraw->createsurface(&drawsurfacedesc, 60 (IDirectDrawSurface**)&m_pIMainSurface,NULL); 61 if (FAILED(hr)) return FALSE; // ** Find the back buffer 64 DrawSurfaceDesc.ddsCaps.dwCaps = DDSCAPS_BACKBUFFER; 65 hr = m_pimainsurface->getattachedsurface( &DrawSurfaceDesc.ddsCaps,&m_pIFlipSurface); SetTimer(1,50,0); // ** Start the 50ms Timer return TRUE; // return TRUE unless you set the focus 71 } 2 Näyttötila asetetaan normaaliksi ja COM-objektit vapautetaan. 3 CoCreateInstance():lla haetaan osoitin uuden DirectDraw-objektin IDirectDraw2-liittymään. 4 DrawSurfaceDesc-tietorakenteessa esitetään ensisijainen puskuri, jolla on yksi taustapuskuri. 5 Taustapuskurin osoitin saadaan GetAttachedSurface()- funktiolla.

16 694 6 Blt()-funktiolla pinta voidaan täyttää halutulla värillä pinnan kopioinnin sijaan. 7 Nämä matematiikkaa sisältävät rivit tuottavat kaksi mutkikasta kiertyvää kuviota. Kehittyneet tekniikat void CDrawDlg::OnTimer(UINT nidevent) 74 { 75 CDialog::OnTimer(nIDEvent); static RECT rc={0,0,0,0}; 78 static double dpetals=2.0; // ** Clear the surface quickly with a blit 81 if (rc.right>0) 82 { 83 DDBLTFX dbltfx; 84 dbltfx.dwsize=sizeof(ddbltfx); 85 dbltfx.dwfillcolor=rgb(0,0,0); 86 HRESULT hr = m_piflipsurface->blt(&rc,null, 87 &rc,ddblt_colorfill,&dbltfx); 6 88 } 89 HDC hdc = NULL; // ** Get a device context for the surface 92 if (m_piflipsurface->getdc(&hdc) == DD_OK) 93 { 94 if (hdc) 95 { 96 CDC dc; 97 dc.attach(hdc); rc.right = dc.getdevicecaps(horzres); 100 rc.bottom = dc.getdevicecaps(vertres); double mx = (double)(rc.right>>1); 103 double my = (double)(rc.bottom>>1); CPen pscol(ps_solid,1,rgb(0,255,0)); 106 CPen* ppsold = dc.selectobject(&pscol); double sx = mx/2; 109 double sy = my/2; 110 double sangle = 0.0; // ** draw the graphical animation 113 for(i=0;i<(int)dpetals;i++) 114 { 115 double s1a = sin(sangle); double c1a = cos(sangle); 117 double s2a = sin(sangle * dpetals); 118 double c2a = sin(sangle * dpetals); 119 int x = (int)(mx+sx*c1a+sx*c2a); 120 int y = (int)(my+sy*s1a+sy*s2a); 121 if (i==0) dc.moveto(x,y); 122 else dc.lineto(x,y); 123 sangle+= ;

17 OSA VII LUKU } dpetals+=0.1; 127 dc.selectobject(ppsold); 128 dc.detach(); 129 } 130 m_piflipsurface->releasedc(hdc); 131 } // ** Show the newly drawn surface 134 m_pimainsurface->flip(null,ddflip_wait); } 8 Flip()-funktio odottaa juovanpaluuta ja vaihtaa näyttösivut ilman vajaan puoliksi piirretyn sivun aiheuttamaa välkyntää. Listauksen 28.2 lisäksi joudut lisäämään seuraavat #include-lauseet DrawDlg.cpp-toteutustiedoston alkuun, jotta GUID-arvot ja kosinifunktion määrittely tulisivat kääntämiseen mukaan: #include <initguid.h> #include DrawDlg.h #include math.h DirectDraw-liittymien määrittelyt saadaan mukaan liittämällä seuraava #include-lause DrawDlg.h-tiedoston alkuun: #include <ddraw.h> Myös seuraavat liittymäosoittimet joudutaan määrittelemään CDrawDlg-luokan jäseniksi DrawDlg.h-tiedostoon: IDirectDraw2* m_pidraw; IDirectDrawSurface2* m_pimainsurface; IDirectDrawSurface2* m_piflipsurface; Listauksessa 28.2 nämä liittymäosoittimet asetetaan CDrawDlg-luokan muodostimessa arvoon NULL (rivit 10 11) ja tämän jälkeen COMkirjasto alustetaan funktiolla CoInitialize() rivillä 13. OnInitDialog()-funktiolla luodaan DirectDraw-objekti kutsumalla rivillä 36 CoCreateInstance()-funktiota. Objekti saadaan käyttövalmiiksi alustamalla se vielä rivin 41 Initialize()-funktiolla, missä määritellään näyttöajuriksi käytössä oleva. Objektin yhteiskäyttötasoksi asetetaan rivillä 47 yksinoikeus kokoruutunäyttöön (exclusive, full screen). Rivillä 50 määritellään DDSURFACEDESC-tietorakenne DrawSurfaceDesc ja se alustetaan määrittämään ensisijaisen puskurin lisäksi yksi taustapuskuri kaksoispuskurointia varten. Tämän jälkeen DrawSurfaceDesc-tietorakennetta käyttäen voidaan luoda pinta rivin 59 CreateSurface()-kutsulla; taustapinnan liittymäosoitin saadaan

18 696 Juovanpaluujakso Kun CRT-monitorisi piirtää näytettävän kuvan, sen elektronisäde piirtää yhden rivin kerrallaan vasemmalta oikealle. Näytön sisäpinnan fosfori hehkuu hetken elektronisuihkun osuttua siihen, joka saa aikaan kuvapisteen näkymisen. Kun elektronisäde pääsee näytön alalaitaan, sen on palattava takaisin ylös pisteitä piirtämättä, joten elektronisäde katkaistaan täksi aikaa. Tällöin näyttökortti asettaa paluujaksosta kertovan lipun. Elektronisuihkun ollessa sammutettuna on paras hetki vaihtaa näytölle esitettävä muistilohko, koska vaihtaminen ei näy. Kehittyneet tekniikat tämän jälkeen rivin 65 GetAttachSurface()-kutsulla. Lopuksi rivillä 68 asetetaan 50 ms ajastin (timer) kutsumaan OnTimer()-funktioon (rivi 73) toteutettua piirtofunktiota. Tämä OnTimer()-funktio kannattaa lisätä ClassWizardilla käsittelemään WM_TIMER-sanomaa. Näin toimimalla varmistetaan luokkamäärittelyjen päivittäminen ja sanomakartan rivien lisääminen. Piirrettäessä asetetaan aluksi oletusarvoja, jonka jälkeen rivin 86 Blt()-funktiolla pyyhitään taustapuskurin edelliset kuviot asettamalla sen taustaväri mustaksi. Rivillä 92 hankitaan GDI:ltä piirtopintaosoitin GetDC()-funktiolla taustapinnalle piirtämiseksi. Tämä kahva voidaan sitten liittää CDCluokkaan, kuten rivillä 97 on esitetty. Riveillä käytetään tavallisia GDI-kutsuja ja CPen-oliota viivojen piirtoon pinnalle, jolloin saadaan piirrettyä hyvin nopeasti yksi ruutu monimutkaisesta kierreanimaatiosta. Piirtopinta vapautetaan rivillä 130 ja juuri piirretty puskuri vaihdetaan näytössä olevan tilalle Flip()-funktiolla. Funktion parametri DDFLIP_WAIT saa vaihtamisen odottamaan seuraavaa juovanpaluujaksoa. Rivien tuhoajafunktio palauttaa tavallisen Windowsin työpöydän nollaamalla yhteiskäyttötason ja kutsumalla RestoreDisplayMode()-funktiota näytön palauttamiseksi ennalleen. Release()-kutsu vapauttaa liittymät ja COM-kirjaston alustus purkautuu hallitusti. Jos teet nämä muutokset tavalliseen valintaikkunasovelluksen runkoon, voit kääntää sovelluksen ilman ylimääräisiä API-kirjastoja, mikä osoittaa aitojen COM-objektien vahvuuden. Tämän jälkeen voit suorittaa ohjelmasi ja nauttia sujuvasta ja nopeasta, välkkymättömästä tietokonegrafiikasta, joka havainnollistaa hyvin DirectX:n todellista voimaa. Saat lopetettua sovelluksen missä vaiheessa tahansa Escnäppäintä painamalla (joka on itse asiassa vielä aktiivisena olevan valintaikkunan Cancel-painike). Tämän tehtyäsi tavallinen työpöytä palautetaan hallitusti ja sovellus suljetaan. KATSO MYÖS OLEn ja COMin perusteet luvusta 25. Lisätietoja piirtopinnoista ja GDI:llä piirtämisestä luvusta 15.

19 OSA VII LUKU Direct3D:n käyttö Direct3D API:lla saat käyttöösi uusimpien näyttökorttien 3D-ominaisuudet. Direct3D toimii yhdessä DirectDraw:n kanssa peleissä ja virtuaalimaailmasovelluksissa nähdyn perspektiivigrafiikan tuottamiseksi. Direct3D käyttää kolmesta osasta koostuvaa piirtokoneistoa, joka tukee koordinaattien matriisimuunnoksia, piste- ja hajavalotehosteita ja saadun näkymän rasteroimista sen piirtämistä varten. Direct3D:n toiminnot ovat tarjolla usean liittymän kautta. Näiden avulla saadaan muodostettua ja esitettyä mutkikkaita kolmiulotteisia näkymiä kahdessa eri piirtotilassa, jotka ovat immediate-mode ja retained-mode. Immediate-mode tilan kappaleet ovat alemman tason yksinkertaisia ja nopeasti esitettäviä peruskappaleita (joiden liittymät on esitetty taulukossa 28.2). Näiden päälle on rakennettu korkean tason kappaleita, joiden avulla voidaan tehdä edistyneitä korkeatasoisia reaaliaikaisia 3D näkymiä ja animaatioita. Uudet 3D-kortit Viime vuosina on tullut yhä enemmän käyttöön 3Dnäyttökortteja, jotka toteuttavat omilla piireillään useita kolmiulotteisen kuvan esittämisessä tarvittavia toimenpiteitä. Grafiikkaprosessori suorittaa mutkikkaat koordinaattilaskennan selvästi pelkkää ohjelmallista toteutusta nopeammin. Tämä vapauttaa myös prosessoriaikaa, jotta CAD- ja peliohjelmistojen kehittäjille jäisi enemmän prosessoriaikaa pelin laadun ja kuvan laadun muuhun kehittämiseen. TAULUKKO 28.2 Direct3D:n liittymät ja niiden toiminnot Direct3D-liittymä Toiminnot IDirect3D Alustaa ympäristön ja luo Light-, Material- ja Viewport-objektit. IDirect3DDevice Käsittelee allaolevan 3D-laitteiston ja ympäris tön ominaisuuksien konfiguroinnin. Tällainen liittymä saadaan DirectDraw-pinnalta QueryInterface()-kutsulla. IDirect3DExecuteBuffer Suorituspuskureissa pidetään piirtokäskyjä ja 3Dperusobjektien tietoja valmiina kerralla piirrettäviksi. IDirect3DLight Konfiguroi näkymän valonlähteiden tiedot. IDirect3DMaterial Ylläpitää materiaalien ominaisuuksia ja niiden heijastavuus- ja läpinäkyvyystietoja. IDirect3DTexture Ylläpitää ylläolevien 3D-pintojen pintakuviobittikarttoja. IDirect3DViewport Ryhmittää valot, pintakuviot ja taustatehosteet paikalleen näytöllä. Tämän jälkeen useita viewport-projektioita yhdistetään ja tulos on valmis piirrettäväksi laitteelle peruskappaleiden koodrinaattitietojen kera.

20 698 DirectPlayn verkkoprotokollatuki DirectPlay API tukee tiedonsiirtoa koneiden välillä, jotka on kytketty yhteen sarjakaapelilla, TCP/IPlähiverkolla, puhelinverkkoliitynnällä tai suoralla Internetliitynnällä, Netwarella ja monella muullakin verkkototeutuksella. Kehittyneet tekniikat DirectPlayn käyttö DirectPlayn avulla voidaan helposti toteuttaa monen pelaajan verkkopelejä ilman tarvetta räätälöidä jokaista verkkotyyppiä erikseen. DirectPlayn liittymät, IDirectPlay2 ja IDirectPlayLobby, huolehtivat verkkopelaamiseen liittyvistä objekteista ja istuntojen hallinnasta. DirectInputin käyttö DirectInputin avulla päästään näppäimistöön ja hiireen tavallista Windowsin syöttömekanismia nopeammin. DirectInput tukee myös monipainikkeisia ja akselisia ohjainsauvoja ja auttaa niiden kalibroinnissa. Tämä API on yksinkertainen mutta joustava, ja se on toteutettu kahdella COM-liittymällä. IDirectInput-liittymällä hallitaan järjestelmän syöttölaitteita ja niiden tilaa. Sillä voidaan myös luoda ilmentymiä IDirectInputDevice-liittymästä yksittäisen laitteen konfiguroimiseksi ja syötteen lukemiseksi. DirectMusic DirectMusic on DirectX-perheen uusin tulokas. Sen avulla voidaan peleihin luoda keinotekoista musiikkia midiäkin monipuolisemmin. Taustamusiikkia varten käytettävissä ovat myös samplatut ääninäytteet. DirectSetupin käyttö DirectSetup API on kenties kaikken pienen API-rajapinta. Siinä on vain kaksi funktiota: DirectXSetup(), joka automatisoi kaikkien DirectX-osien asennuksen ja DirectXRegisterApplication(), joka rekisteröi pelin DirectPlayLobby-enabloiduksi monen pelaajan verkkosovellukseksi. Viestien ja sähköpostin luominen MAPIlla Microsoft Messaging API (MAPI) ei ole oikeastaan funktiokirjastorajapinta, vaan arkkitehtuurin muodostava standardikokoelma. Näitä standardeja seuraamalla ohjelmiston kehittäjät voivat keskittyä tekemään sähköpostijärjestelmän eri osia.

Mainosankkuri.fi-palvelun käyttöohjeita

Mainosankkuri.fi-palvelun käyttöohjeita Mainosankkuri.fi-palvelun käyttöohjeita Sisällys 1. Johdanto... 1 2. Sisäänkirjautuminen... 1 3. Palvelussa navigointi... 2 4. Laitteet... 2 5. Sisällönhallinta... 4 6. Soittolistat... 7 7. Aikataulut...

Lisätiedot

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin peruskurssi Y1 Ohjelmoinnin peruskurssi Y1 CSE-A1111 30.9.2015 CSE-A1111 Ohjelmoinnin peruskurssi Y1 30.9.2015 1 / 27 Mahdollisuus antaa luentopalautetta Goblinissa vasemmassa reunassa olevassa valikossa on valinta Luentopalaute.

Lisätiedot

Sisältö. 2. Taulukot. Yleistä. Yleistä

Sisältö. 2. Taulukot. Yleistä. Yleistä Sisältö 2. Taulukot Yleistä. Esittely ja luominen. Alkioiden käsittely. Kaksiulotteinen taulukko. Taulukko operaation parametrina. Taulukko ja HelloWorld-ohjelma. Taulukko paluuarvona. 2.1 2.2 Yleistä

Lisätiedot

Sisältö. 22. Taulukot. Yleistä. Yleistä

Sisältö. 22. Taulukot. Yleistä. Yleistä Sisältö 22. Taulukot Yleistä. Esittely ja luominen. Alkioiden käsittely. Kaksiulotteinen taulukko. Taulukko metodin parametrina. Taulukko ja HelloWorld-ohjelma. Taulukko paluuarvona. 22.1 22.2 Yleistä

Lisätiedot

Yleistä. Nyt käsitellään vain taulukko (array), joka on saman tyyppisten muuttujien eli alkioiden (element) kokoelma.

Yleistä. Nyt käsitellään vain taulukko (array), joka on saman tyyppisten muuttujien eli alkioiden (element) kokoelma. 2. Taulukot 2.1 Sisältö Yleistä. Esittely ja luominen. Alkioiden käsittely. Kaksiulotteinen taulukko. Taulukko operaation parametrina. Taulukko ja HelloWorld-ohjelma. Taulukko paluuarvona. 2.2 Yleistä

Lisätiedot

815338A Ohjelmointikielten periaatteet Harjoitus 3 vastaukset

815338A Ohjelmointikielten periaatteet Harjoitus 3 vastaukset 815338A Ohjelmointikielten periaatteet 2015-2016. Harjoitus 3 vastaukset Harjoituksen aiheena ovat imperatiivisten kielten muuttujiin liittyvät kysymykset. Tehtävä 1. Määritä muuttujien max_num, lista,

Lisätiedot

Tietojen syöttäminen ohjelmalle. Tietojen syöttäminen ohjelmalle Scanner-luokan avulla

Tietojen syöttäminen ohjelmalle. Tietojen syöttäminen ohjelmalle Scanner-luokan avulla Tietojen syöttäminen ohjelmalle Tähän mennessä on käsitelty Javan tulostuslauseet System.out.print ja System.out.println sekä ohjelman perusrakenneosat (muuttujat, vakiot, lauseet). Jotta päästään tekemään

Lisätiedot

Epooqin perusominaisuudet

Epooqin perusominaisuudet Epooqin perusominaisuudet Huom! Epooqia käytettäessä on suositeltavaa käyttää Firefox -selainta. Chrome toimii myös, mutta eräissä asioissa, kuten äänittämisessä, voi esiintyä ongelmia. Internet Exploreria

Lisätiedot

Hiirisanomiin vastaaminen

Hiirisanomiin vastaaminen OSA II LUKU 8 163 8 LUKU Reagointi käyttäjän painaessa tai vapauttaessa hiiren painikkeen Omien funktioiden käyttö, kun hiiri liikkuu Hiirikoordinaattien käsittely ja valitun alueen tutkiminen 164 Näppäinpainallusten

Lisätiedot

Visma Nova. Visma Nova ASP käyttö ja ohjeet

Visma Nova. Visma Nova ASP käyttö ja ohjeet Visma Nova Visma Nova ASP käyttö ja ohjeet Oppaan päiväys: 2.2.2012. Helpdesk: http://www.visma.fi/asiakassivut/helpdesk/ Visma Software Oy pidättää itsellään oikeuden mahdollisiin parannuksiin ja/tai

Lisätiedot

Salasanojen hallinta. Salasanojen hallintaopas RESTAURANT ENTERPRISE SOLUTION

Salasanojen hallinta. Salasanojen hallintaopas RESTAURANT ENTERPRISE SOLUTION Salasanojen hallinta Salasanojen hallintaopas RESTAURANT ENTERPRISE SOLUTION Restaurant Enterprise Solution Asiakirjan tarkoitus Tämä asiakirja kertoo tarvittavat säännöt kuinka hallinnoida RES salasanoja

Lisätiedot

BlueJ ohjelman pitäisi löytyä Development valikon alta mikroluokkien koneista. Muissa koneissa BlueJ voi löytyä esim. omana ikonina työpöydältä

BlueJ ohjelman pitäisi löytyä Development valikon alta mikroluokkien koneista. Muissa koneissa BlueJ voi löytyä esim. omana ikonina työpöydältä Pekka Ryhänen & Erkki Pesonen 2002 BlueJ:n käyttö Nämä ohjeet on tarkoitettu tkt-laitoksen mikroluokan koneilla tapahtuvaa käyttöä varten. Samat asiat pätevät myös muissa luokissa ja kotikäytössä, joskin

Lisätiedot

Kuvan ottaminen ja siirtäminen

Kuvan ottaminen ja siirtäminen Kuvan ottaminen ja siirtäminen Kuvien ottaminen Kuvien ottaminen tapahtuu oppilaiden omien kännykkäkameroiden tai koulun tablettien kameran avulla o Työ tehdään pareittain, joten ainakin toisella työparin

Lisätiedot

Edico Lite ja S Käyttöohje istunnon pitäjälle ja kutsutulle

Edico Lite ja S Käyttöohje istunnon pitäjälle ja kutsutulle Edico Lite ja S Käyttöohje istunnon pitäjälle ja kutsutulle Sisältö: sivu Käyttäjäroolit Edico-istunnoissa 1 Istuntoon kutsutun kirjautuminen 1 Edico Lite, istunnon avausnäkymä 2 Edico S, istunnon avausnäkymä

Lisätiedot

Gree Smart -sovelluksen (WiFi) asennus- ja käyttöohje: Hansol-sarjan ilmalämpöpumput WiFi-ominaisuuksilla

Gree Smart -sovelluksen (WiFi) asennus- ja käyttöohje: Hansol-sarjan ilmalämpöpumput WiFi-ominaisuuksilla 02/2016, ed. 5 KÄYTTÖOHJE Gree Smart -sovelluksen (WiFi) asennus- ja käyttöohje: Hansol-sarjan ilmalämpöpumput WiFi-ominaisuuksilla Maahantuoja: Tiilenlyöjänkuja 9 A 01720 Vantaa www.scanvarm.fi Kiitos

Lisätiedot

Ohjeisto Trimble Pro 6H yhdistämisestä Juno 5:een

Ohjeisto Trimble Pro 6H yhdistämisestä Juno 5:een Liite 4 1(19) KEMIN ENERGIA Ohjeisto Trimble Pro 6H yhdistämisestä Juno 5:een Janne Pirttimaa 12.2.2013 Liite 4 2(19) SISÄLLYSLUETTELO 1 Yhdistäminen bluetoothilla... 3 2. Ongelmatilanteet ja ratkaisut...

Lisätiedot

Kaakkois-Suomen Ammattikorkeakoulu Oy Mikkelin Ammattikorkeakoulu Oy Kymenlaakson Ammattikorkeakoulu Oy

Kaakkois-Suomen Ammattikorkeakoulu Oy Mikkelin Ammattikorkeakoulu Oy Kymenlaakson Ammattikorkeakoulu Oy Opiskelijoiden OneDriveohje Kaakkois-Suomen Ammattikorkeakoulu Oy Mikkelin Ammattikorkeakoulu Oy Kymenlaakson Ammattikorkeakoulu Oy Ohjeen nimi Opiskelijoiden OneDrive-ohje Vastuuhenkilö Mari Jokiniemi

Lisätiedot

KODU. Lumijoen peruskoulu

KODU. Lumijoen peruskoulu KODU Lumijoen peruskoulu Sisällysluettelo 1. Aloitus... 2 1.1 Pelin tallennuspaikka... 2 1.2 Kodu Game lab... 3 2 Maan luominen... 4 2.1. Seinän tekeminen... 5 2.2. Vesialueen tekeminen peliin... 6 2.3.

Lisätiedot

AdobeConnect peruskäyttövinkkejä

AdobeConnect peruskäyttövinkkejä AdobeConnect peruskäyttövinkkejä Verkkotilaisuuden valmistelu ja kirjautuminen 1. Kytke kamera ja mikrofoni ennen tietokoneen käynnistystä a. Pöytäkoneessa laitteet kytketään aina TAKAPANEELIIN 2. Käynnistä

Lisätiedot

Digitaalisen SLR-kameran laiteohjelmiston päivittäminen

Digitaalisen SLR-kameran laiteohjelmiston päivittäminen Digitaalisen SLR-kameran laiteohjelmiston päivittäminen Kiitos, että valitsit Nikon-tuotteen. Tämä opaskirja kuvaa, miten laiteohjelma päivitetään. Jos et ole varma, että voit tehdä päivityksen, päivitys

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 12.4.2010 T-106.1208 Ohjelmoinnin perusteet Y 12.4.2010 1 / 34 Graafiset käyttöliittymät Tähän asti kirjoitetuissa ohjelmissa on ollut tekstipohjainen käyttöliittymä.

Lisätiedot

Windows. Valmistelut. Windows

Windows. Valmistelut. Windows Laiteohjelman päivittäminen vaihdettavalla objektiivilla varustetuille edistyksellisille Nikon 1 -kameroille, 1 NIKKOR -objektiiveille ja Nikon 1 -lisävarusteille Kiitos, että valitsit Nikon-tuotteen.

Lisätiedot

ATK tähtitieteessä. Osa 3 - IDL proseduurit ja rakenteet. 18. syyskuuta 2014

ATK tähtitieteessä. Osa 3 - IDL proseduurit ja rakenteet. 18. syyskuuta 2014 18. syyskuuta 2014 IDL - proseduurit Viimeksi käsiteltiin IDL:n interaktiivista käyttöä, mutta tämä on hyvin kömpelöä monimutkaisempia asioita tehtäessä. IDL:llä on mahdollista tehdä ns. proseduuri-tiedostoja,

Lisätiedot

815338A Ohjelmointikielten periaatteet Harjoitus 2 vastaukset

815338A Ohjelmointikielten periaatteet Harjoitus 2 vastaukset 815338A Ohjelmointikielten periaatteet 2015-2016. Harjoitus 2 vastaukset Harjoituksen aiheena on BNF-merkinnän käyttö ja yhteys rekursiivisesti etenevään jäsentäjään. Tehtävä 1. Mitkä ilmaukset seuraava

Lisätiedot

Skype for Business pikaohje

Skype for Business pikaohje Skype for Business pikaohje Sisällys KOKOUSKUTSU... 2 ENNEN ENSIMMÄISEN KOKOUKSEN ALKUA... 4 LIITTYMINEN KOKOUKSEEN SKYPE FOR BUSINEKSELLA... 5 LIITTYMINEN KOKOUKSEEN SELAIMEN KAUTTA... 6 LIITTYMINEN KOKOUKSEEN

Lisätiedot

KULTA2-JÄRJESTELMÄN KÄYTTÖOPAS Liikunta-, kulttuuri-, nuoriso-, hyvinvointiavustukset

KULTA2-JÄRJESTELMÄN KÄYTTÖOPAS Liikunta-, kulttuuri-, nuoriso-, hyvinvointiavustukset KULTA2-JÄRJESTELMÄN KÄYTTÖOPAS Liikunta-, kulttuuri-, nuoriso-, hyvinvointiavustukset Sisällysluettelo: 1. Sisällysluettelo s. 1 2. Kulta2-järjestelmän käyttäminen ensimmäistä kertaa s. 2-3 3. Kirjautuminen

Lisätiedot

Ohjelmassa muuttujalla on nimi ja arvo. Kääntäjä ja linkkeri varaavat muistilohkon, jonne muuttujan arvo talletetaan.

Ohjelmassa muuttujalla on nimi ja arvo. Kääntäjä ja linkkeri varaavat muistilohkon, jonne muuttujan arvo talletetaan. Osoittimet Ohjelmassa muuttujalla on nimi ja arvo. Kääntäjä ja linkkeri varaavat muistilohkon, jonne muuttujan arvo talletetaan. Muistilohkon koko riippuu muuttujan tyypistä, eli kuinka suuria arvoja muuttujan

Lisätiedot

Näin asennat MS-DOS käyttöjärjestelmän virtuaalikoneeseen

Näin asennat MS-DOS käyttöjärjestelmän virtuaalikoneeseen Näissä ohjeissa käydään läpi Microsoftin MS-DOS 6.22 -käyttöjärjestelmän asennus Microsoftin Virtual PC 2007 -virtuaalikoneeseen. Asennusta varten sinulla on oltava Virtual PC 2007 asennettuna tietokoneellasi

Lisätiedot

Johdanto: Jaetut näytöt Jaetun näytön asetukset ja näytöstä poistuminen Aktiivisen sovelluksen valitseminen

Johdanto: Jaetut näytöt Jaetun näytön asetukset ja näytöstä poistuminen Aktiivisen sovelluksen valitseminen Kappale 14: Jaetut näytöt 14 Johdanto: Jaetut näytöt... 232 Jaetun näytön asetukset ja näytöstä poistuminen... 233 Aktiivisen sovelluksen valitseminen... 235 TI-89 / TI-92 Plus:ssä voit jakaa näytön ja

Lisätiedot

Nspire CAS - koulutus Ohjelmiston käytön alkeet Pekka Vienonen

Nspire CAS - koulutus Ohjelmiston käytön alkeet Pekka Vienonen Nspire CAS - koulutus Ohjelmiston käytön alkeet 3.12.2014 Pekka Vienonen Ohjelman käynnistys ja käyttöympäristö Käynnistyksen yhteydessä Tervetuloa-ikkunassa on mahdollisuus valita suoraan uudessa asiakirjassa

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 1.4.2009 T-106.1208 Ohjelmoinnin perusteet Y 1.4.2009 1 / 56 Tentti Ensimmäinen tenttimahdollisuus on pe 8.5. klo 13:00 17:00 päärakennuksessa. Tämän jälkeen

Lisätiedot

Käyttöohje. Energent MagiCAD plugin

Käyttöohje. Energent MagiCAD plugin Käyttöohje Energent MagiCAD plugin Sisältö 1. Yleistä 1 Dokumentin sisältö... 1 Ohjelman asennus... 1 Vaadittavat ohjelmistot... 1 Asennus... 1 Ohjelman käynnistys... 2 2. Toiminnallisuudet 3 Insert Energent

Lisätiedot

TTY TKT-1110 Mikroprosessorit TKT. HEW-ohjeet ver 1.0

TTY TKT-1110 Mikroprosessorit TKT. HEW-ohjeet ver 1.0 Johdanto Nämä ohjeet opastavat sinut tekemään kurssiin TKT-1110 Mikroprosessorit liittyvät harjoitustyöt. Ohjeet sisältävät kolme osiota. Ensimmäisenä esitellään projektin luonti, mikä tehdään ainoastaan

Lisätiedot

Sisällys. 6. Metodit. Oliot viestivät metodeja kutsuen. Oliot viestivät metodeja kutsuen

Sisällys. 6. Metodit. Oliot viestivät metodeja kutsuen. Oliot viestivät metodeja kutsuen Sisällys 6. Metodit Oliot viestivät metodeja kutsuen. Kuormittaminen. Luokkametodit (ja -attribuutit).. Metodien ja muun luokan sisällön järjestäminen. 6.1 6.2 Oliot viestivät metodeja kutsuen Oliot viestivät

Lisätiedot

OP-eTraderin käyttöopas

OP-eTraderin käyttöopas OP-eTraderin käyttöopas Tämä käyttöopas on lyhennetty versio virallisesta englanninkielisestä käyttöoppaasta, joka löytyy etrader - sovelluksen Help-valikosta tai painamalla sovelluksessa F1 -näppäintä.

Lisätiedot

TIEP114 Tietokoneen rakenne ja arkkitehtuuri, 3 op. Assembly ja konekieli

TIEP114 Tietokoneen rakenne ja arkkitehtuuri, 3 op. Assembly ja konekieli TIEP114 Tietokoneen rakenne ja arkkitehtuuri, 3 op Assembly ja konekieli Tietokoneen ja ohjelmiston rakenne Loogisilla piireillä ja komponenteilla rakennetaan prosessori ja muistit Prosessorin rakenne

Lisätiedot

Salasanojen turvallinen tallentaminen KeePass ohjelmalla

Salasanojen turvallinen tallentaminen KeePass ohjelmalla Salasanojen turvallinen tallentaminen KeePass ohjelmalla KeePass on vapaasti saatavilla oleva, avoimen lähdekoodin ohjelma, jonka tarkoituksena on auttaa salasanojen hallinnassa. Tämä KeePass ohje on päivitetty

Lisätiedot

Motorola Phone Tools. Pikaopas

Motorola Phone Tools. Pikaopas Motorola Phone Tools Pikaopas Sisältö Vähimmäisvaatimukset... 2 Ennen asennusta Motorola Phone Tools... 3 Asentaminen Motorola Phone Tools... 4 Matkapuhelimen asennus ja määritys... 5 Online-rekisteröinti...

Lisätiedot

Muuttujien roolit Kiintoarvo cin >> r;

Muuttujien roolit Kiintoarvo cin >> r; Muuttujien roolit Muuttujilla on ohjelmissa eräitä tyypillisiä käyttötapoja, joita kutsutaan muuttujien rooleiksi. Esimerkiksi muuttuja, jonka arvoa ei muuteta enää kertaakaan muuttujan alustamisen jälkeen,

Lisätiedot

LIITE 1 1. Tehtävänä on mallintaa kitara ohjeiden mukaan käyttäen Edit Poly-tekniikkaa.

LIITE 1 1. Tehtävänä on mallintaa kitara ohjeiden mukaan käyttäen Edit Poly-tekniikkaa. LIITE 1 1 HARJOITUS 1 Kitara Tehtävänä on mallintaa kitara ohjeiden mukaan käyttäen Edit Poly-tekniikkaa. Käsiteltävät asiat Edit Poly Muokkaus kuvan mukaan TurboSmooth Extrude 1. Tarkistetaan että mittayksiköt

Lisätiedot

Tietorakenteet ja algoritmit

Tietorakenteet ja algoritmit Tietorakenteet ja algoritmit Useampitasoiset ADT:t Käytetään esimerkkiohjelmaa Ratkaisuyritys 1 Ratkaisuyritys 2 Lopullinen ratkaisu Lopullisen ratkaisun toteutusyritys Lopullisen ratkaisun oikea toteutus

Lisätiedot

Käyttöohjeet. Sovellussivusto

Käyttöohjeet. Sovellussivusto Käyttöohjeet Sovellussivusto SISÄLLYSLUETTELO Tietoja oppaasta...2 Oppaassa käytetyt symbolit...2 Vastuuvapauslauseke...3 Huomautuksia...3 Mitä sovellussivustolla voi tehdä... 4 Ennen sovellussivuston

Lisätiedot

815338A Ohjelmointikielten periaatteet 2015-2016. Harjoitus 5 Vastaukset

815338A Ohjelmointikielten periaatteet 2015-2016. Harjoitus 5 Vastaukset 815338A Ohjelmointikielten periaatteet 2015-2016. Harjoitus 5 Vastaukset Harjoituksen aiheena ovat aliohjelmat ja abstraktit tietotyypit sekä olio-ohjelmointi. Tehtävät tehdään C-, C++- ja Java-kielillä.

Lisätiedot

TALLENNETAAN MUISTITIKULLE JA MUISTIKORTILLE

TALLENNETAAN MUISTITIKULLE JA MUISTIKORTILLE TALLENNETAAN MUISTITIKULLE JA MUISTIKORTILLE HERVANNAN KIRJASTON TIETOTORI Insinöörinkatu 38 33720 Tampere 040 800 7805 tietotori.hervanta@tampere.fi TALLENNETAAN MUISTIKULLE JA MUISTIKORTILLE 1 Muistitikun

Lisätiedot

RockID-varastonhallintajärjestelmän käyttöohje. v. 1.0

RockID-varastonhallintajärjestelmän käyttöohje. v. 1.0 RockID-varastonhallintajärjestelmän käyttöohje v. 1.0 Yleistä Rockstar lukijakäyttöliittymä Tuotteiden lukeminen lähtevään tilaukseen Tilaukseen kuulumattomat tuotteet Tuotteiden lukeminen tilauksesta

Lisätiedot

12. Näppäimistöltä lukeminen 12.1

12. Näppäimistöltä lukeminen 12.1 12. Näppäimistöltä lukeminen 12.1 Sisällys Arvojen lukeminen näppäimistöltä yleisesti. Arvojen lukeminen näppäimistöltä Java-kielessä. In-luokka. Luetun arvon tarkistaminen. Tietovirrat ja ohjausmerkit.

Lisätiedot

sivu 1 SURFCAM V5 JÄRJESTELMÄN VAATIMUKSET

sivu 1 SURFCAM V5 JÄRJESTELMÄN VAATIMUKSET sivu 1 Minimi: Käyttöjärjestelmä: Windows XP Service Pack 3 Prosessori: Duo Core II tai nopeampi Muisti: 2 GB RAM Kovalevytila: 1 GB vapaana DVD asema Näytönohjain: 512 MB näyttömuistia. DirectX 9.0c tai

Lisätiedot

Webinaariin liittyminen Skype for

Webinaariin liittyminen Skype for Webinaariin liittyminen Skype for Business Web Appin kautta Ohjeet Sähköpostin Liity webinaariin tästä -linkki Kun klikkaat Osallistumisohjeet webinaariin -sähköpostiviestissä olevaa Liity webinaariin

Lisätiedot

MITEN KIRJAUDUN ADOBE CONNECTIIN?

MITEN KIRJAUDUN ADOBE CONNECTIIN? Connect-ohje oppilaalle MITEN KIRJAUDUN ADOBE CONNECTIIN? 1. Avaa internet-selain ja kirjoita osoiteriville virtuaaliluokkasi osoite, esim. http://tampere.adobeconnect.com/virta ja paina Enter: Luokkien

Lisätiedot

Matriisit ovat matlabin perustietotyyppejä. Yksinkertaisimmillaan voimme esitellä ja tallentaa 1x1 vektorin seuraavasti: >> a = 9.81 a = 9.

Matriisit ovat matlabin perustietotyyppejä. Yksinkertaisimmillaan voimme esitellä ja tallentaa 1x1 vektorin seuraavasti: >> a = 9.81 a = 9. Python linkit: Python tutoriaali: http://docs.python.org/2/tutorial/ Numpy&Scipy ohjeet: http://docs.scipy.org/doc/ Matlabin alkeet (Pääasiassa Deni Seitzin tekstiä) Matriisit ovat matlabin perustietotyyppejä.

Lisätiedot

Osallistavan suunnittelun kyselytyökalu

Osallistavan suunnittelun kyselytyökalu Osallistavan suunnittelun kyselytyökalu Käyttöohje ARFM- hankkeessa jatkokehitetylle SoftGIS-työkalulle Dokumentti sisältää ohjeistuksen osallistavan suunnittelun työkalun käyttöön. Työkalu on käytettävissä

Lisätiedot

Kameran laiteohjelman päivittäminen

Kameran laiteohjelman päivittäminen Kameran laiteohjelman päivittäminen Kiitos, että valitsit Nikon-tuotteen. Tämä opaskirja kuvaa, miten laiteohjelma päivitetään. Jos et ole varma, että voit tehdä päivityksen, päivitys voidaan tehdä Nikonin

Lisätiedot

HomeMonitor käyttöönotto-ohje

HomeMonitor käyttöönotto-ohje HomeMonitor käyttöönotto-ohje Sisällys HomeMonitor käyttöönotto-ohje... 1 Käyttäjätunnuksen luonti... 3 Henkilötiedot... 4 Kameran lisäys käyttäjätiliin... 5 Verkkoon yhdistäminen... 6 Kamerayhteyden tarkistus...

Lisätiedot

Ohjeet asiakirjan lisäämiseen arkistoon

Ohjeet asiakirjan lisäämiseen arkistoon Ohjeet asiakirjan lisäämiseen arkistoon 1. Jos koneellesi ei vielä ole asennettu Open Office ohjelmaa, voit ladata sen linkistä joka löytyy Arkisto => Asiakirjapohjat sivulta seuran kotisivuilta. Jos ohjelma

Lisätiedot

Yrjö Määttänen Kokemuksia SuLVInetin käytön aloituksen

Yrjö Määttänen Kokemuksia SuLVInetin käytön aloituksen Yrjö Määttänen Kokemuksia SuLVInetin käytön aloituksen yrjo.maattanen@phnet.fi helpottamiseksi puh. 050 413 0820 4.11.2009 1. Yleistä SuLVInet on SuLVI:n aloitteesta avattu sivusto LVI-alan kehittäjäfoorumiksi.

Lisätiedot

Projektin luonti LPCXpressolla

Projektin luonti LPCXpressolla Projektin luonti LPCXpressolla Ensimmäiseksi työtilaan (workspace) pitää liittää käytössä olevalle prosessorille sopiva CMSIS-kirjasto. LPCXpresson projektinluontivelhot olettavat, että projektit käyttävät

Lisätiedot

Javan perusteita. Janne Käki

Javan perusteita. Janne Käki Javan perusteita Janne Käki 20.9.2006 Muutama perusasia Tietokone tekee juuri (ja vain) sen, mitä käsketään. Tietokone ymmärtää vain syntaksia (sanojen kirjoitusasua), ei semantiikkaa (sanojen merkitystä).

Lisätiedot

TIETOKONE JA TIETOVERKOT TYÖVÄLINEENÄ

TIETOKONE JA TIETOVERKOT TYÖVÄLINEENÄ aaro.leikari@hotmail.com TIETOKONE JA TIETOVERKOT TYÖVÄLINEENÄ 25.01.2016 SISÄLLYS 1. Käyttöjärjestelmän asentaminen... 1 1.1 Windowsin asettamia laitteistovaatimuksia... 1 1.2 Windowsin asentaminen...

Lisätiedot

lizengo Asennusopas Windows: in kopioiminen

lizengo Asennusopas Windows: in kopioiminen lizengo Asennusopas Windows: in kopioiminen Windows: in kopioiminen lizengo Asennusopas Klikkaa sitä Windows-versiota, jonka haluat kopioida USB-tikulle, niin pääset suoraan oikeaan oppaaseen. Windows

Lisätiedot

Tietorakenteet ja algoritmit

Tietorakenteet ja algoritmit Tietorakenteet ja algoritmit Muuttujat eri muisteissa Ohjelman muistialueen layout Paikallisen ja globaalin muuttujan ominaisuudet Dynaamisen muistinkäytön edut Paikallisten muuttujien dynaamisuus ADT

Lisätiedot

MITEN KIRJAUDUN ADOBE CONNECTIIN?

MITEN KIRJAUDUN ADOBE CONNECTIIN? Connect-ohje oppilaalle MITEN KIRJAUDUN ADOBE CONNECTIIN? 1. Avaa internet-selain ja kirjoita osoiteriville virtuaaliluokkasi osoite, esim. http://tampere.adobeconnect.com/virta ja paina Enter: Luokkien

Lisätiedot

TIEP114 Tietokoneen rakenne ja arkkitehtuuri, 3 op. Assembly ja konekieli

TIEP114 Tietokoneen rakenne ja arkkitehtuuri, 3 op. Assembly ja konekieli TIEP114 Tietokoneen rakenne ja arkkitehtuuri, 3 op Assembly ja konekieli Tietokoneen ja ohjelmiston rakenne Loogisilla piireillä ja komponenteilla rakennetaan prosessori ja muistit Prosessorin rakenne

Lisätiedot

Sisällys. 15. Lohkot. Lohkot. Lohkot

Sisällys. 15. Lohkot. Lohkot. Lohkot Sisällys 15. Lohkot Tutustutaan lohkoihin. Muuttujien ja vakioiden näkyvyys sekä elinikä erityisesti operaation lohkossa. Nimikonfliktit. Muuttujat operaation alussa vai myöhemmin? 15.1 15.2 Lohkot Aaltosulkeet

Lisätiedot

Sisäänkirjaus Uloskirjaus. Yritystieto

Sisäänkirjaus Uloskirjaus. Yritystieto Sisäänkirjaus Uloskirjaus Yritystieto Kustannusarvio PartSmart Siirrä PartSmart tiedosto Näytä PartSmart ostoslistat Lataa PartSmartHinnasto Tuotteet Lisävarusteet SNOW ATV PWC Öljytuotteet Öljyt, Snow

Lisätiedot

LUKUJA, DATAA KÄSITTELEVÄT FUNKTIOT JA NIIDEN KÄYTTÖ LOGIIKKAOHJAUKSESSA

LUKUJA, DATAA KÄSITTELEVÄT FUNKTIOT JA NIIDEN KÄYTTÖ LOGIIKKAOHJAUKSESSA LUKUJA, DATAA KÄSITTELEVÄT FUNKTIOT JA NIIDEN KÄYTTÖ LOGIIKKAOHJAUKSESSA Tavallisimmin lukuja käsittelevien datasanojen tyypiksi kannattaa asettaa kokonaisluku 16 bitin INT, jonka vaihtelualueeksi tulee

Lisätiedot

Selaimen kautta käytettävällä PaikkaOpin kartta-alustalla PaikkaOppi Mobiililla

Selaimen kautta käytettävällä PaikkaOpin kartta-alustalla PaikkaOppi Mobiililla 19.1.2017 Sisällys Slide 3. Mikä on PaikkaOppi Mobiili? Slide 4. Kaavio PaikkaOppi Mobiilin käytön aloituksesta. Slidet 5-7. Tunnusten ja kurssin luominen ennen sovelluksen käyttöä. Slide 8. Hae sovellus

Lisätiedot

Kappale 14: Jaetut näytöt

Kappale 14: Jaetut näytöt Kappale 14: Jaetut näytöt 14 Johdanto: Jaetut näytöt... 220 Jaetun näytön asetukset ja näytöstä poistuminen... 221 Aktiivisen sovelluksen valitseminen... 223 TI-89:ssä voit jakaa näytön ja käyttää kahta

Lisätiedot

Ulkoiset laitteet. Asiakirjan osanumero: Tässä oppaassa kerrotaan lisävarusteena saatavien ulkoisten laitteiden käytöstä.

Ulkoiset laitteet. Asiakirjan osanumero: Tässä oppaassa kerrotaan lisävarusteena saatavien ulkoisten laitteiden käytöstä. Ulkoiset laitteet Asiakirjan osanumero: 419462-351 Tammikuu 2007 Tässä oppaassa kerrotaan lisävarusteena saatavien ulkoisten laitteiden käytöstä. Sisällysluettelo 1 USB-laitteen käyttäminen USB-laitteen

Lisätiedot

Tietorakenteet ja algoritmit syksy Laskuharjoitus 1

Tietorakenteet ja algoritmit syksy Laskuharjoitus 1 Tietorakenteet ja algoritmit syksy 2012 Laskuharjoitus 1 1. Tietojenkäsittelijä voi ajatella logaritmia usein seuraavasti: a-kantainen logaritmi log a n kertoo, kuinka monta kertaa luku n pitää jakaa a:lla,

Lisätiedot

INTINU13A6 Java sovellukset

INTINU13A6 Java sovellukset Johdanto Kurssin tavoitteena oli luoda tietokantaa käyttävä websovellus Java EE ohjelmointikielellä, sekä hyödyntää muun muassa servlettejä sekä JSP sivuja ja muita tekniikoita monipuolisesti. Webserverinä

Lisätiedot

Sisällys. 1. Omat operaatiot. Yleistä operaatioista. Yleistä operaatioista

Sisällys. 1. Omat operaatiot. Yleistä operaatioista. Yleistä operaatioista Sisällys 1. Omat operaatiot Yleistä operaatioista. Mihin operaatioita tarvitaan? Oman operaation määrittely. Yleisesti, nimeäminen ja hyvä ohjelmointitapa, määreet, parametrit ja näkyvyys. HelloWorld-ohjelma

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 2.3.2009 T-106.1208 Ohjelmoinnin perusteet Y 2.3.2009 1 / 28 Puhelinluettelo, koodi def lue_puhelinnumerot(): print "Anna lisattavat nimet ja numerot." print

Lisätiedot

Hgin kaupungin opetusvirasto Wilma opas huoltajille 1(10) HAKE/Tiepa 28.2.2007 KKa

Hgin kaupungin opetusvirasto Wilma opas huoltajille 1(10) HAKE/Tiepa 28.2.2007 KKa Hgin kaupungin opetusvirasto Wilma opas huoltajille 1(10) :LOPD 0LNl:LOPDRQ" Wilma on internetin kautta toimiva liittymä opettajille, oppilaille ja näiden huoltajille. Se ei ole käyttäjän koneella oleva

Lisätiedot

Kangasniemen yrityshakemisto KÄYTTÖOHJE YRITTÄJÄLLE. KANGASNIEMEN KUNTA yrityshakemisto.kangasniemi.fi

Kangasniemen yrityshakemisto KÄYTTÖOHJE YRITTÄJÄLLE. KANGASNIEMEN KUNTA yrityshakemisto.kangasniemi.fi 2015 Kangasniemen yrityshakemisto KÄYTTÖOHJE YRITTÄJÄLLE KANGASNIEMEN KUNTA yrityshakemisto.kangasniemi.fi 1 Sisällysluettelo 1. Sivustolle rekisteröityminen... 2 2. Yrityksen lisääminen... 3 2.1. Yritystiedot...

Lisätiedot

UpdateIT 2010: Editorin käyttöohje

UpdateIT 2010: Editorin käyttöohje UpdateIT 2010: Editorin käyttöohje Käyttäjätuki: Suomen Golfpiste Oy Esterinportti 1 00240 HELSINKI Puhelin: (09) 1566 8800 Fax: (09) 1566 8801 E-mail: gp@golfpiste.com Sisällys Editorin käyttöohje...

Lisätiedot

EASY Tiedostopalvelin Käyttöopas

EASY Tiedostopalvelin Käyttöopas EASY Tiedostopalvelin Käyttöopas Windows Client www.storageit.fi - Äyritie 8 D, 01510 VANTAA Salorantie 1, 98310 KEMIJÄRVI Sisältö 1. Asennus 2. Yhdistäminen pilveen - Tiedostojen siirto - Paikallisten

Lisätiedot

Informaatiotekniikan kehitysyksikkö

Informaatiotekniikan kehitysyksikkö SAVONIA Savonia RPM Käyttöopas Informaatiotekniikan kehitysyksikkö 18.8.2011 Sisällysluettelo 1. Perusnäkymä... 3 2. Kirjautuminen... 4 3. Rekisteröinti... 5 4. Idean jättäminen... 6 4. Arviointi... 8

Lisätiedot

Olion elinikä. Olion luominen. Olion tuhoutuminen. Olion tuhoutuminen. Kissa rontti = null; rontti = new Kissa();

Olion elinikä. Olion luominen. Olion tuhoutuminen. Olion tuhoutuminen. Kissa rontti = null; rontti = new Kissa(); Sisällys 7. Oliot ja viitteet Olio Java-kielessä. Olion luominen, elinikä ja tuhoutuminen. Viitteiden käsittelyä: sijoitus, vertailu ja varautuminen null-arvoon. Viite metodin paluuarvona.. 7.1 7.2 Olio

Lisätiedot

EDMODO. -oppimisympäristö opettajille ja oppilaille KOONNUT: MIKA KURVINEN KANNUKSEN LUKIO

EDMODO. -oppimisympäristö opettajille ja oppilaille KOONNUT: MIKA KURVINEN KANNUKSEN LUKIO EDMODO -oppimisympäristö opettajille ja oppilaille KOONNUT: MIKA KURVINEN KANNUKSEN LUKIO HUOM! Edmodo kehittyy koko ajan, seuraavat ohjeet voivat olla jo päivityksen tarpeessa. 1 Sisällysluettelo Rekisteröityminen

Lisätiedot

Kirkkopalvelut Office365, Opiskelijan ohje 1 / 17 IT Juha Nalli 22.12.2015

Kirkkopalvelut Office365, Opiskelijan ohje 1 / 17 IT Juha Nalli 22.12.2015 Kirkkopalvelut Office365, Opiskelijan ohje 1 / 17 Oppilaat saavat vuoden 2016 alusta käyttöönsä oppilaitoksen sähköpostin ja muita palveluita Microsoftin Office365:sta. Oppilaiden sähköposti on muotoa

Lisätiedot

Trust Gamer Kit PCI TRUST GAMER KIT PCI. Pika-asennusohje. Versio 1.0

Trust Gamer Kit PCI TRUST GAMER KIT PCI. Pika-asennusohje. Versio 1.0 TRUST GAMER KIT PCI Pika-asennusohje Versio 1.0 1 1. Johdanto Tämä käyttöohje on tarkoitettu Trust Gamer Kit PCI -tuotteen käyttäjille. Tuotteen asentamisessa tarvitaan jonkin verran kokemusta tietokoneista.

Lisätiedot

Moottorin kierrosnopeus Tämän harjoituksen jälkeen:

Moottorin kierrosnopeus Tämän harjoituksen jälkeen: Moottorin kierrosnopeus Tämän harjoituksen jälkeen: osaat määrittää moottorin kierrosnopeuden pulssianturin ja Counter-sisääntulon avulla, osaat siirtää manuaalisesti mittaustiedoston LabVIEW:sta MATLABiin,

Lisätiedot

Ohjelmointitaito (ict1td002, 12 op) Kevät Java-ohjelmoinnin alkeita. Tietokoneohjelma. Raine Kauppinen

Ohjelmointitaito (ict1td002, 12 op) Kevät Java-ohjelmoinnin alkeita. Tietokoneohjelma. Raine Kauppinen Ohjelmointitaito (ict1td002, 12 op) Kevät 2009 Raine Kauppinen raine.kauppinen@haaga-helia.fi 1. Java-ohjelmoinnin alkeita Tietokoneohjelma Java-kieli ja Eclipse-kehitysympäristö Java-ohjelma ja luokka

Lisätiedot

EU Login. EU Login kirjautuminen. EU Login tilin luominen

EU Login. EU Login kirjautuminen. EU Login tilin luominen EU Login EU Login kirjautuminen EU Login järjestelmä mahdollistaa keskitetyn pääsyn useisiin eri Euroopan Komission verkkosovelluksiin yhdellä käyttäjätunnuksella ja salasanalla. EU login varmistaa identiteettisi

Lisätiedot

Aditro Tikon ostolaskujen käsittely versio SP1

Aditro Tikon ostolaskujen käsittely versio SP1 Toukokuu 2012 1 (8) Aditro versio 6.1.2 SP1 Päivitysohje Toukokuu 2012 2 (8) Sisällysluettelo 1. Tehtävät ennen versiopäivitystä... 3 1.1. Ohjelmistomuutosten luku... 3 1.2. Application Pool Identity...

Lisätiedot

Sisällys. 7. Oliot ja viitteet. Olion luominen. Olio Java-kielessä

Sisällys. 7. Oliot ja viitteet. Olion luominen. Olio Java-kielessä Sisälls 7. Oliot ja viitteet Olio Java-kielessä. Olion luominen, elinikä ja tuhoutuminen.. Viitteiden vertailu. Varautuminen null-arvoon. Viite metodin paluuarvona.. Muuttumattomat ja muuttuvat merkkijonot.

Lisätiedot

Pong-peli, vaihe Aliohjelmakutsu laskureita varten. 2. Laskurin luominen. Muilla kielillä: English Suomi

Pong-peli, vaihe Aliohjelmakutsu laskureita varten. 2. Laskurin luominen. Muilla kielillä: English Suomi Muilla kielillä: English Suomi Pong-peli, vaihe 7 Tässä vaiheessa lisäämme peliin pistelaskun. Pong-pelissä pelaaja saa pisteen kun pallo ohittaa toisen pelaajan mailan. 1. Aliohjelmakutsu laskureita varten

Lisätiedot

Automaattitilausten hallinta

Automaattitilausten hallinta Automaattitilausten hallinta Automaattitilauksilla voidaan automatisoida kopiotilaukset tuotantolaitokselle. Työkalulla voitte määritellä kansio- sekä tiedostokohtaisia automaattitilauksia. Joka yö SokoPro

Lisätiedot

Sähköpostitilin käyttöönotto. Versio 2.0

Sähköpostitilin käyttöönotto. Versio 2.0 Sähköpostitilin käyttöönotto Versio 2.0 Sivu 1 / 10 Jarno Parkkinen jarno@atflow.fi 1 Johdanto... 2 2 Thunderbird ohjelman lataus ja asennus... 3 3 Sähköpostitilin lisääminen ja käyttöönotto... 4 3.1 Tietojen

Lisätiedot

Tentti erilaiset kysymystyypit

Tentti erilaiset kysymystyypit Tentti erilaiset kysymystyypit Monivalinta Monivalintatehtävässä opiskelija valitsee vastauksen valmiiden vastausvaihtoehtojen joukosta. Tehtävään voi olla yksi tai useampi oikea vastaus. Varmista, että

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 15.3.2010 T-106.1208 Ohjelmoinnin perusteet Y 15.3.2010 1 / 56 Tiedostoista: tietojen tallentaminen ohjelman suorituskertojen välillä Monissa sovelluksissa ohjelman

Lisätiedot

Monipuolinen esimerkki

Monipuolinen esimerkki Monipuolinen esimerkki Lopuksi monipuolinen esimerkki, jossa ohjelmisto koostuu pääohjelmasta ja kahdesta aliohjelmasta, joista toinen on proseduuri ja toinen funktio. Funktio Sqrt(int n): int Sqrt(int

Lisätiedot

1. Omat operaatiot 1.1

1. Omat operaatiot 1.1 1. Omat operaatiot 1.1 Sisällys Yleistä operaatioista. Mihin operaatioita tarvitaan? Oman operaation määrittely. Yleisesti, nimeäminen ja hyvä ohjelmointitapa, määreet, parametrit ja näkyvyys. HelloWorld-ohjelma

Lisätiedot

2006 i&i Solutions Oy

2006 i&i Solutions Oy 2006 i&i Solutions Oy Materiaali on vapaasti käytettävissä. Alkuperäiseen materiaaliin ei saa kuitenkaan tehdä muutoksia ja alkuperäinen tekijä (i&i Solutions Oy) on aina oltava näkyvissä. Mikäli materiaalista

Lisätiedot

Sivu 1 / 11 08.01.2013 Viikin kirjasto / Roni Rauramo

Sivu 1 / 11 08.01.2013 Viikin kirjasto / Roni Rauramo Sivu 1 / 11 Kuvien siirto kamerasta Lyhyesti Tämän oppaan avulla voit: - käyttää tietokoneen omaa automaattista kopiointiin tai siirtoon tarkoitettua toimintaa kuvien siirtoon kamerasta tai muistikortista

Lisätiedot

LASERJET PRO 500 COLOR MFP. Pikaopas M570

LASERJET PRO 500 COLOR MFP. Pikaopas M570 LASERJET PRO 500 COLOR MFP Pikaopas M570 USB-pikatulostus 1. Liitä USB-asema laitteen etupaneelin USBporttiin. 2. USB-flash-asema-valikko avautuu. Selaa vaihtoehtoja nuolipainikkeilla. Tulosta asiakirja

Lisätiedot

ASENNUS- JA KÄYTTÖOHJE

ASENNUS- JA KÄYTTÖOHJE ASENNUS- JA KÄYTTÖOHJE YKSIKKÖHINTA SOPIMUKSEN TOTEUTUNEET MÄÄRÄT-SOVELLUS CMPRO5 VERSIO 2.8 PÄIVITETTY HEINÄKUU 2010 COPYRIGHT 2010 ARTEMIS FINLAND OY. ALL RIGHTS RESERVED. KÄYTTÖOHJE SIVU 2 (12) SISÄLLYSLUETTELO

Lisätiedot

Johdatus ohjelmointiin

Johdatus ohjelmointiin Johdatus ohjelmointiin EXAM tentin liitetiedostojen lataaminen, käyttäminen ja palauttaminen Kerro mahdolliset puutteet tai parannusehdotukset: pietari.heino@tut.fi Tällä sivulla on selitetty lyhyesti

Lisätiedot

Nokia E5 ja Mail for Exchange

Nokia E5 ja Mail for Exchange Nokia E5 ja Mail for Exchange Uuden esiasennetun puhelinlaitteen käyttöönotto tapahtuu DataInfon käyttäjälle lähettämien ohjeiden mukaan. Ohjeistetussa käyttöönotossa puhelimeen asentuu langattoman verkon

Lisätiedot

HP Mobile -kaukosäädin (vain tietyt mallit) Käyttöopas

HP Mobile -kaukosäädin (vain tietyt mallit) Käyttöopas HP Mobile -kaukosäädin (vain tietyt mallit) Käyttöopas Copyright 2008 Hewlett-Packard Development Company, L.P. Windows ja Windows Vista ovat Microsoft Corporationin tavaramerkkejä tai rekisteröityjä tavaramerkkejä

Lisätiedot