USB-tiedonsiirto Palmin ja tietokoneen välillä Windows XP-käyttöjärjestelmässä

Tämän selostuksen tarkoituksena on kuvata työvaiheet, joilla Palmin ja Windows XP-käyttöjärjestelmässä ajettavan serverin välille saadaan muodostettua USB-tiedonsiirtoyhteys. Kyseessä on samantapainen ohjelma kuin ohjeessa http://www.cs.helsinki.fi/u/mihaasia/ohtu/javausb/, mutta tässä versiossa EI käytetä Java-kielistä serveriohjelmaa, eikä JNI:tä, vaan kaikki ohjelmat ovat pelkästään C-kielisiä. Syynä tähän on se, että Windowsissa JNI:tä testattaessa ei Java suostunut lukemaan natiivia kirjastoa jostakin syystä. Kirjaston lataaminen saattaa kyllä myöhemmin onnistua, mutta varmuuden vuoksi kirjoitin nyt testiohjelmat sitten C:llä. Koko vastaajan päähän tuleva ohjelmahan on hyvin yksinkertainen (yksi nappula tms.), joten koko tämä ohjelmahan on tarvittaessa mahdollista kirjoittaa pelkästään C:llä tai C++:lla (ilman Javaa) ja saada toimimaan sekä Windowsissa, että GNU/Linuxissa. Jos ohjelma kirjoitetaan pelkästään C:llä, voi käyttöliittymän luontiin käyttää esim. winapia, mutta mieluiten jotakin alustariippumatonta kirjastoa, kuten GTK+:ta, Qt:ta, wxWidgets:ia, tms.

Selostuksessa on mukana kaikki tarvittava lähdekoodi. HUOM! Tiedostot eivät välttämättä ole samoja kuin edellisessä selostuksessa, vaikka tiedostonimet ovatkin samat, joten ne kannattaa ladata uudelleen. Osa tiedostoista voi myös näyttää hieman hassuilta jos niitä katsoo vaikkapa selaimella, koska rivien sisennykset eivät mene muutamilla riveillä aivan kohdilleen. Syynä tähän on varmaan se, että olen muokannut tiedostoja useilla eri editoreilla, joista osa on kirjoittanut tab:it välilyönteinä ja osa ei.

1. Lataa ja asenna LibUsb-Win32 koneellesi

Tämä ohjeen osa on vielä keskeneräinen. Toistaiseksi voit noudattaa ohjeita jotka löytyvät osoitteesta http://libusb-win32.sourceforge.net/#installation. Asensin kirjaston ja laiteajurin Windows XP:ssä ja sain ne toimimaan noita ohjeita noudattamalla. Huomaa, että filteriä ei ilmeisesti tarvitse asentaa! Itse asensin sen turhaan, koska en lukenut ohjeita ensimmäisellä kerralla tarpeeksi huolellisesti. Tätä ohjeen osaa voi tarkentaa myöhemmin, jos on tarvis.

2. Käynnistä Garnet OS Development Suite ja luo uusi projekti

Anna projektille nimeksi USB. Valitse projektin tyypiksi Simple Application.

kuvaI kuvaII

3. Lataa alla olevat 5 tiedostoa koneellesi, kopioi ne ja liitä projektiin oikeisiin hakemistoihin

Lataa alla olevat neljä tiedostoa koneellesi, kopioi ne ja liitä src-hakemistoon. Kaksi tiedostoista on uusia, kaksi korvaa jo olemassaolevat tiedostot.

Lataa alla oleva tiedosto koneellesi, kopioi se ja liitä projektin rsc-hakemistoon. Tiedosto korvaa jo olemassaolevan tiedoston.

Käännä projekti, jos se ei käänny automaattisesti tallentamisen jälkeen. Voit testata ohjelmaa emulaattorilla jos haluat.

4. Siirrä ohjelma oikeaan Palmiin Palm Desktop-ohjelmalla

Ohjelma löytyy projektin Debug-hakemistosta, jonne se ilmestyy kääntämisen jälkeen. Siirrettyäsi ohjelman palmiin, on kaikki Palmin pääsä valmista ja voimme ryhtyä kääntämään tietokoneelle tulevaa C-kielistä serveri-ohjelmaa.

5. Lataa koneellesi Dev-C++ 5

Se löytyy osoitteesta http://www.bloodshed.net/devcpp.html

kuva1 kuva2 kuva3

6. Asenna Dev-C++ 5

Käynnistä asennusohjelma ja suorita asennus.

kuva4

7. Käynnistä Dev-C++

kuva5 kuva6

8. Luo uusi projekti

Luo uusi tyhjä C-projekti. Anna projektille nimeksi vaikkapa USBServerProject. Tallenna projekti jonnekin. Itse loin Dev-Cpp-hakemistoon oman kansion projekteille, mutta kuten kuvasta näkyy, projekti tuli tallennettua ohjelman oletuksena tarjoamaan Dev-Cpp:n päähakemistoon.

kuva8 kuva9 kuva10

9. Lisää projektiin uusi tiedosto

kuva11

10. Avaa alla oleva C-tiedosto, kopioi sen sisältö, liitä luomaasi tyhjään tiedostoon ja tallenna tiedosto


kuva12 kuva13 kuva14

11. Avaa projektin ominaisuudet ja valitse Parameters-välilehti

kuva15 kuva16

12. Lisää LibUsb-Win32:n kirjasto projektiin

Kirjasto löytyy lataamasi libusb-win32-device-bin-0.1.1.2.1-hakemiston alla olevan lib-hakemiston alla olevasta gcc-hakemistosta.

kuva17 kuva18 kuva19

13. Lisää LibUsb-Win32:n otsikkotiedostojen sijainti projektiin

Hakemisto include löytyy lataamasi libusb-win32-device-bin-0.1.1.2.1-hakemiston alta. Lisää se projektisi Include Directories-joukkoon.

kuva20 kuva21 kuva22 kuva23 kuva24

14. Liitä Palm tietokoneeneen USB-porttiin, jos se ei jo ennestään ole. Käännä ja aja projekti.

kuva25

[Välihuomautus: Kääntämisen ja linkittämisen jälkeen projektin voi käynnistää myös syntyneestä EXE-tiedostosta ilman IDE:Ä]

kuva26

15. Testaa ohjelmaa käynnistämällä USB-ohjelma Palmissa, jos se ei jo ennestään ole päällä ja klikkailemalla nappuloita

kuva29 kuva30

Siinä kaikki :-)