Toiseksi kone pitää olla yhteydessä Pocket PC:hen esim. Microsoftin ActiveSync:lla (esim. USB-liitännän kautta).

Samankaltaiset tiedostot
CE (versio 3) tukee neljää ajurityyppiä: native, stream interface, USB ja NDIS.

Tapahtumapohjainen ohjelmointi. Juha Järvensivu 2007

1.1 Pino (stack) Koodiluonnos. Graafinen esitys ...

11. Javan valintarakenteet 11.1

Tapahtumapohjainen ohjelmointi. Juha Järvensivu 2008

HARJOITUS 3: Asennetaan Windows Vista koneeseen Windows 7 Professional upgrade ohjelmisto (Windows 7 käyttöjärjestelmän asennus)

TAITAJA 2007 ELEKTRONIIKKAFINAALI KILPAILIJAN TEHTÄVÄT. Kilpailijan nimi / Nro:

TeleWell TW-LTE/4G/3G USB -modeemi Cat 4 150/50 Mbps

USB-siirto-ohjelman ja ajurin asentaminen

Windows Live SkyDrive - esittely

Webforum. Version 16.2 uudet ominaisuudet. Päivitetty:

11. Javan valintarakenteet 11.1

Web Services tietokantaohjelmoinnin perusteet

erasmartcardkortinlukijaohjelmiston

- Valitaan kohta Asetukset / NAT / Ohjelmallinen palvelin - Seuraavassa esimerkki asetuksista: valitaan käytössä oleva ohjelmistorajapinta

Asteri Kirjanpito Dos ALV% nousu 1 %-yksiköllä Vuosipäivitys

erasmartcard-kortinlukijaohjelmiston asennusohje (mpollux jää toiseksi kortinlukijaohjelmistoksi)

Trust PhotoCam 1300 TRUST PHOTOCAM Pika-asennusohje. Versio 1.0

Moodle HOPS-työskentelyn tukena

Joonas Ruotsalainen GIT PIKAOPAS. Tutkielma 2011

Algoritmit 2. Demot Timo Männikkö

Kalenterimerkintöjen siirtäminen Notesista

815338A Ohjelmointikielten periaatteet Harjoitus 5 Vastaukset

Ohje hakulomakkeen täyttämiseen yliopistohaku.fi -palvelussa

Tech Conference Visual Studio 2015, C#6,.NET4.6. Heikki Raatikainen. #TechConfFI

1 Muutokset piirilevylle

Visma Avendon asennusohje

DL SOFTWARE Uumajankatu 2 Umeågatan FIN VAASA/VASA FINLAND +358-(0) Fax +358-(0)

Haka-palveluiden valvonta ja tilastointi AAIEye -työkalun avulla. Mika Suvanto, CSC

Koottu lause; { ja } -merkkien väliin kirjoitetut lauseet muodostavat lohkon, jonka sisällä lauseet suoritetaan peräkkäin.

CLOUDBACKUP TSM varmistusohjelmiston asennus

TW- EAV510 / TW- EAV510 AC: IPSeC- Ohjeistus

Asteri Laskutus (Dos)

// // whiledemov1.c // #include <stdio.h> int main(void){ int luku1 = -1; int luku2 = -1;

ASENNUS- JA KÄYTTÖOHJE

DNA Mokkula E180 - korjaus päivityksen yhteydessä syntyneeseen ongelmaan

Uutta Remote Support Platform 3.1 -versiossa

C++ rautaisannos. Kolme tapaa sanoa, että tulostukseen käytetään standardikirjaston iostreamosassa määriteltyä, nimiavaruuden std oliota cout:

TIETORAKENTEET JA ALGORITMIT

Windowsin sanomanvälitys. Juha Järvensivu 2007

-versiot) Mozilla Firefox Safari Chrome. selaimista. Windows. Windows. Vista. Windows

PIKAOPAS. Nokia Connectivity Cable Drivers -ohjainten asentaminen

Listarakenne (ArrayList-luokka)

TIETOKONE JA TIETOVERKOT TYÖVÄLINEENÄ

Luento 5. Timo Savola. 28. huhtikuuta 2006

A-LINK IPC1. MJPEG Verkkokamera. Pika-asennusohje

Jypelin käyttöohjeet» Ruutukentän luominen

A-LINK IPC2. Pan-Tilt MPEG4/MJPEG Verkkokamera. Pika-asennusohje

Muuttujien roolit Kiintoarvo cin >> r;

TW- EAV510: WDS- TOIMINTO KAHDEN TW- EAV510 LAITTEEN VÄLILLÄ

S11-09 Control System for an. Autonomous Household Robot Platform

Ohjelmistojen päivittäminen, varmuuskopioiminen ja palauttaminen

Yhteydensaantiongelmien ja muiden ongelmien ratkaisuita

Office ohjelmiston asennusohje

KÄYTTÖOHJE FLSNIF KÄYTTÖÖNOTTO V2.2 ( ) 1 (5)

Lue ohjeet huolellisesti ennen laitteen käyttöä.

Asteri Palkanmaksu Dos Vuosipäivitys

zotero

JavaScript alkeet Esimerkkikoodeja moniste 2 ( Metropolia)

Kirkkopalvelut Office365, Opiskelijan ohje 1 / 17 IT Juha Nalli

Algoritmit 1. Demot Timo Männikkö

Mathcad Flexnet lisenssipalvelimen asennus

MPCC-työkalua voidaan käyttää yhden laitteen valvontaan ja yhden tai useamman laitteen konfigurointiin (Modbus broadcast, osoite 0).

Microsoft Visual Studio 2005

MyTheatre asennus ja kanavien haku

Resteri laskutus (Dos) ("enemmän asiakkaita ja tuotteita; monipuolisempi reskontra)

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

lizengo Asennusopas Windows: in kopioiminen

String-vertailusta ja Scannerin käytöstä (1/2) String-vertailusta ja Scannerin käytöstä (2/2) Luentoesimerkki 4.1

Tietorakenteet ja algoritmit

5/20: Algoritmirakenteita III

Finnfoam tuotekirjaston asennusohje. Asennus ja rekisteröintiohje

Osion kaksi kertaus. Jukka Juslin. Jukka Juslin

Operaattoreiden ylikuormitus. Operaattoreiden kuormitus. Operaattoreiden kuormitus. Operaattoreista. Kuormituksesta

Titan SFTP -yhteys mittaustietoja varten

MASSER Loader V2.00. käyttö- ja asennusohje

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

Kieliversiointityökalu Java-ohjelmistoon. Ohje

ELEC-A4010 Sähköpaja Arduinon ohjelmointi. Jukka Helle

Ohjelmoinnin peruskurssi Y1

L2TP LAN to LAN - yhteys kahden laitteen välille

Flowcode 6 Omien komponenttien luonti 3D- tilassa Ledi

Kaakkois-Suomen Ammattikorkeakoulu Oy Mikkelin Ammattikorkeakoulu Oy Kymenlaakson Ammattikorkeakoulu Oy

MYEERIKKILÄ OHJEET PELAAJALLE

Loppukurssin järjestelyt

Sisältö Yleistä. Esittely ja luominen. Alkioiden käsittely. Kaksiulotteinen taulukko. Taulukko metodin parametrina. Taulukko ja HelloWorld-ohjelma. Ta

HP ProBook 430 G5 kannettavien käyttöönotto

Motorola Phone Tools. Pikaopas

Java-kielen perusteita

Adobe Premiere 6.0 ohjelmasta

Väylään liitettävä laite: Pheonix Contact ILB PB DI8 DIO8

Algoritmit 1. Demot Timo Männikkö

Racket ohjelmointia II. Tiina Partanen 2015

OSUUSPANKKI KULTALINKKI-PANKKIYHTEYSOHJELMA JA OSUUSPANKIN E-LASKUPALVELU

Algoritmit 2. Demot Timo Männikkö

ASENNUS JA KÄYTTÖOHJE

SSH Secure Shell & SSH File Transfer

Maha Eurosystem jarrulaskentaohjelman asennusohje versio

Ohje Inteno EG101 modeemin ohjelmistopäivitykseen

Transkriptio:

1 ESIMERKKIAJURI Tehdään virtuaalinen portti COM7, jota eri sovellukset voivat käyttää. Oletuksena tässä projektissa on, että olet asentanut PC:hen Microsoft embedded Visual C++ 3:n Windowsiin sekä Platform SDK:n siihen alustaan, johon haluat tehdä ajurin (H/PC 2000, H/PC Professional, Palmsize PC, Pocket PC). Saat ne Microsoftilta. Aina kuitenkin kannattaa asentaa ko. ohjelmistosta se uusin versio. Tällä hetkellä löytyy Microsoftilta jo kokeiluversio Windows CE 6:een (Windows Embedded CE 6.0), jossa on jopa Platform Builder mukana. Silloin sinun pitää kuitenkin asentaa myös Visual Studio 2005. Tässä materiaalissa esimerkkikoodi on tehty Pocket PC 2002 ympäristöön ARM prosesoriin. Toiseksi kone pitää olla yhteydessä Pocket PC:hen esim. Microsoftin ActiveSync:lla (esim. USB-liitännän kautta). Aloita embedded Visual C++:sta valitsemalla File, New, Projects. Valitse seuraava projektityyppi: Nimeä projekti nimelle Demo, kuten kuvassa. Valitse itsellesi sopiva CPU.

2 Seuraavaksi valitse kuten alla: Syntyneessä projektissa on tiedostossa Demo.cpp seuraavanlainen pääohjelma : #include "stdafx.h" BOOL APIENTRY DllMain( HANDLE hmodule, DWORD ul_reason_for_call, LPVOID lpreserved ) return TRUE;

3 Lisää ennen DllMain funktiota seuraavat funktioiden esittelyt: #include "stdafx.h" declspec(dllexport) DWORD COM_Init(LPCTSTR pcontext, LPCVOID lpvbuscontext); declspec(dllexport) BOOL COM_Deinit( DWORD hdevicecontext ); declspec(dllexport) DWORD COM_Open( DWORD hdevicecontext, DWORD AccessCode, DWORD ShareMode ); declspec(dllexport) BOOL COM_Close( DWORD hopencontext ); declspec(dllexport) BOOL COM_IOControl( DWORD hopencontext, DWORD dwcode, PBYTE pbufin, DWORD dwlenin, PBYTE pbufout, DWORD dwlenout, PDWORD pdwactualout ); declspec(dllexport) void COM_PowerUp( DWORD hdevicecontext ); declspec(dllexport) void COM_PowerDown( DWORD hdevicecontext ); declspec(dllexport) DWORD COM_Read( DWORD hopencontext, LPVOID pbuffer, DWORD Count ); declspec(dllexport) DWORD COM_Write( DWORD hopencontext, LPCVOID pbuffer, DWORD Count ); declspec(dllexport) DWORD COM_Seek( DWORD hopencontext, long Amount, WORD Type ); BOOL APIENTRY DllMain( HANDLE hmodule, DWORD ul_reason_for_call, LPVOID lpreserved ) return TRUE; Muokkaa DllMain funktiota seuraavanlaiseksi: BOOL APIENTRY DllMain( HANDLE hmodule, DWORD ul_reason_for_call, LPVOID lpreserved ) switch ( ul_reason_for_call ) case DLL_PROCESS_ATTACH: break; case DLL_PROCESS_DETACH: break; case DLL_THREAD_ATTACH: break; case DLL_THREAD_DETACH: break; return TRUE;

4 Seuraavaksi lisää seuraavan function toteutus DllMain funktion alapuolelle: declspec(dllexport) DWORD COM_Init( LPCTSTR pcontext, LPCVOID lpvbuscontext) DWORD dwport = 0; HKEY hkey; if (RegOpenKeyEx(HKEY_LOCAL_MACHINE, pcontext, 0, 0, &hkey) == ERROR_SUCCESS) TCHAR szdriverkey[255]; DWORD dwsize = 255; DWORD dwtype; if (RegQueryValueEx(hKey, L"Key", 0, &dwtype, (BYTE *)szdriverkey, &dwsize) == ERROR_SUCCESS) RegCloseKey(hKey); if (RegOpenKeyEx(HKEY_LOCAL_MACHINE, szdriverkey, 0, 0, &hkey) == ERROR_SUCCESS) dwsize=4; if (RegQueryValueEx(hKey, L"ManagePort", 0, &dwtype, (BYTE *)&dwport, &dwsize)!= ERROR_SUCCESS) dwport = 0; RegCloseKey(hKey); if (dwport!= 0) dwmanageport = dwport; return DRV_CONTEXT; Lisää myös seuraavat vakiot ennen DllMain:ia: #define DRV_CONTEXT 0x1450 #define OPEN_CONTEXT 0x1451 HANDLE hcomm = INVALID_HANDLE_VALUE; DWORD dwmanageport = 1; Seuraavaksi lisää funktion COM_Deinit -toteutus: declspec(dllexport) BOOL COM_Deinit( DWORD hdevicecontext ) if (hdevicecontext!= DRV_CONTEXT) return FALSE; return TRUE;

5 Funktion COM_Open -toteutus: declspec(dllexport) DWORD COM_Open( DWORD hdevicecontext, DWORD AccessCode, DWORD ShareMode ) if (hdevicecontext!= DRV_CONTEXT) TCHAR szport[255]; swprintf(szport, L"COM%u", dwmanageport); hcomm = CreateFile( szport, AccessCode, ShareMode, NULL, OPEN_EXISTING, 0, NULL); MessageBox(NULL,szPort,L"Portti auki", MB_OK); if (hcomm == INVALID_HANDLE_VALUE) else return OPEN_CONTEXT; Funktion COM_Close toteutus: declspec(dllexport) BOOL COM_Close( DWORD hopencontext ) if (hopencontext!= OPEN_CONTEXT) BOOL bret = CloseHandle(hComm); hcomm = INVALID_HANDLE_VALUE; return bret;

6 Funktion COM_IOCOntrol toteutus: declspec(dllexport) BOOL COM_IOControl( DWORD hopencontext, DWORD dwcode, PBYTE pbufin, DWORD dwlenin, PBYTE pbufout, DWORD dwlenout, PDWORD pdwactualout ) if (hopencontext!= OPEN_CONTEXT) BOOL bret=deviceiocontrol( hcomm, dwcode, pbufin, dwlenin, pbufout, dwlenout, pdwactualout, NULL); return bret; Funktioiden COM_PowerUp ja COM_PowerDown toteutukset: declspec(dllexport) void COM_PowerUp( DWORD hdevicecontext ) declspec(dllexport) void COM_PowerDown( DWORD hdevicecontext ) Funktion COM_Read toteutus: declspec(dllexport) DWORD COM_Read( DWORD hopencontext, LPVOID pbuffer, DWORD Count ) if (hopencontext!= OPEN_CONTEXT) DWORD dwbytes = 0; ReadFile(hComm, pbuffer, Count, &dwbytes, NULL); return dwbytes;

7 Funktion COM_Write toteutus: declspec(dllexport) DWORD COM_Write( DWORD hopencontext, LPCVOID pbuffer, DWORD Count ) if (hopencontext!= OPEN_CONTEXT) DWORD dwbytes = 0; WriteFile(hComm, pbuffer, Count, &dwbytes, NULL); return dwbytes; Funktion COM_Seek toteutus: declspec(dllexport) DWORD COM_Seek( DWORD hopencontext, long Amount, WORD Type ) Lisää tiedosto Demo.def projektiisi. Sen sisältö on seuraavanlainen: LIBRARY EXPORTS Demo COM_Init COM_Deinit COM_Open COM_Close COM_Read COM_Write COM_Seek COM_IOControl COM_PowerDown COM_PowerUp Käännä ja linkitä projekti. Syntynyt Demo.dll pitää kopioida kohdelaitteen (tässä Pocket PC 2002) windows hakemistoon. Jos sinulla on ActiveSync yhteydessä sopivat asetukset ja myös kohdelaite on auki, tiedosto kopioituu automaattisesti (jos oikeat asetukset ovat päällä). Sen lisäksi sinun pitää jotenkin pystyä rekisteröimään kohdelaitteeseen vapaaseen rekisterin paikkaan esim. seuraavat arvot (laitteessa COM7 vapaa): HKEY_LOCAL_MACHINE\Drivers\BuiltIn\Serial7 Dll = DemoDriver.dll FriendlyName = Demo Driver Index = 7 Order = 2 Prefix = COM ManagePort = 1

8 BuiltIn avaimen alle voidaan tehdä ladattavia omia ajureita. Tässä siis tehty avain Serial7, koska se ei ollut vielä kohdelaitteessa käytössä. Muistiin latautuneet ajurit näkyvät avaimen Active alla. Katso rekisteristä montako laitetta on kohdassa HKEY_LOCAL_MACHINE\Drivers\Active latautuneena (laske montako aliavainta siellä on). Kun ajuri on lisätty kohdelaitteen Windows hakemistoon ja em. Serial7 avaimen arvot on lisätty, buuttaa laite. Katso nyt HKEY_LOCAL_MACHINE\Drivers\Active kohdan aliavaimet. Tuliko yksi lisää? Voit tutkia myös embedded Visual C++:lla seuraavasta valikosta laitteesi rekisteriä, jos sinulla on laitteeseen ActiveSync yhteys: Valitse Connection, Add Connection rekisterieditorissa ja etsi sieltä laitteesi, jonka rekisteriä tutkit. Onko siellä seuraava aktiivinen avain?: Jos avain, näkyy, ajurisi on latautunut muistiin.

9 Alla vielä BuiltIn- avaimen arvot: