Tämä selostus näyttää miten Palm-kämmentietokoneen ja tietokoneella pyörivän Java-ohjelman välillä voidaan siirtää tietoa USB-piuhan yli molempiin suuntiin. Selostuksessa käydään läpi kaikki tarvittavat vaiheet ja kaikki tarvittava lähdekoodi (sekä Java-, että C-kielinen) tiedonsiirron aikaansaamiseksi:
Tässä on aika monta eri vaihetta, joten käsitellään niitä vähän tarkemmin. libusb on kirjasto jota käytämme USB-tiedonsiirtoon. Se on saatavilla GNU/Linuxille, Max OS X:lle ja BSD:eille. Windowsille on olemassa myös oma versionsa LibUsb-Win32. GNU/Linuxille libusb:n asentaminen on todella suoraviivaista. Se voi olla jopa valmiiksi järjestelmässäsi, joten sitä ei ole edes välttämättä tarvetta asentaa. Jos asentaminen on tarpeen, se onnistuu ehkä helpoiten käyttämällä järjestelmäsi pakentinhallintatyökaluja. Tietenkin on mahdollista myös ladata ja asentaa se manuaalisesti kirjaston kotisivulta käsin. Windows-version, eli LibUsb-Win32:n asentaminen vaikuttaisi olevan hieman hankalampaa, sillä pelkkä kirjaston asentaminen ei riitä, vaan lisäksi täytyy käyttää erillistä, kirjaston mukana tulevaa ohjelmaa (jonkinlaisen) laiteajurin tekemiseen. Ensin käsittelemme libusb:n asentamisen GNU/Linux:iin, sitten Windows XP:en.
Helpoin ja nopein tapa libusb:n asennetamiseen on luultavasti käyttää järjestelmäsi paketinhallintaohjelmaa. Samalla voit helposti tarkastaa onko kirjasto jo asennettuna järjestelmässäsi ja jos se on, mikä sen versio on. Alla olevassa kuvassa on esimerkki graafisesta pakentinhallintaohjelmasta Ubuntussa. Huomaa, että tässä selostuksessa käytetään libusb:n versiota 0.1-4, ei siis versiota 1.0. Luultavasti olisi parempi käyttää uudempaa 1.0-versiota, mutta tässä yhteydessä on käytetty vanhempaa versiota, ja uuden version käyttö voi edellyttää joitakin muutoksia koodiin, joita ei ole vielä ehditty testaamaan. Samoin windowsin versio kirjastosta näyttäisi olevan melko vanha, eikä siksi ehkä sisällä kaikkea uudemman version toiminnallisuutta.
Tämä ohjeen osa on vielä keskeneräinen. Toistaiseksi voit noudattaa ohjeita jotka löytyvät osoitteesta http://libusb-win32.sourceforge.net/#installation. Olen testannut asennusprosessia nopeasti Windows XP:ssä ja saanut sen 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.
Käynnistä Garnet OS Development Suite ja luo uusi projekti.
Anna projektille nimeksi vaikkapa USB. Valitse projektin tyypiksi Simple Application.
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. Siirrä se lopuksi oikeaan Palmiin Palm Desktop-ohjelmalla.
Huomaa, että tätä osaa ei ole vielä testattu Windowsissa. Lataa alla olevat tiedostot koneellesi:
Kytke palmi tietokoneen USB-porttiin. Siirry komentorivillä hakemistoon, jonne tallensit yllä olevat tiedostot. Anna komentoriviltä käskyt jotka on listattu seuraavassa tiedostossa: commands1.txt. Korvaa ylimmän rivin gcc-käskyssä include-hakemistojen paikat oikeisiin polkuihin järjestelmässäsi. Käynnistä palmista luomasi USB-ohjelma. (Huomaa, että ohjeessa on jätetty näyttämättä miten USB.h-tiedoston luonti on tehty. Se on tehty automaattisesti javah-ohjelmalla. Myöhemmin ohjeeseen voi lisätä tästä asiaa).
Aina kun painat palmissa jotakin näppäintä, lähetetään USB:n yli merkkijono jonka serveri ottaa vastaan. Jos merkkijono on DATE, sereri lähettää päivämäärän takaisin palmiin. Jos se on TIME, serveri lähettää kellonajan. Jos se on GREETINGS, serveri lähettää tervehdystekstin ja palvelinkoneen hostnamen. Jos se on SHUTDOWN, palvelin lähettää hyvästit ja sulkemisajan ja sulkee itsensä.
Ohje ei ole valitettavasti vielä kovin yksityiskohtainen...