Mengakses perangkat USB dari aplikasi Java

OVERVIEW

Platform Java secara tradisional prided sendiri pada platform kemerdekaan. Sedangkan Java yang memiliki banyak manfaat, itu membuat proses menulis aplikasi Java yang berinteraksi dengan perangkat keras yang cukup rumit. Pada artikel ini, penelitian ilmuwan Qingye Jiang memeriksa dua proyek yang membuat proses lebih mudah dengan menyediakan API melalui aplikasi Java yang dapat menggunakan perangkat USB. Sedangkan kedua proyek ini masih dalam bentuk embrio, kedua menunjukkan janji dan sudah menjabat sebagai landasan dari beberapa aplikasi real-dunia.

Versi pertama dari Universal Serial Bus (USB) spesifikasi dirilis pada Januari 1996. Karena biaya rendah, tingginya data transfer rate, kemudahan penggunaan, dan fleksibilitas, USB telah mendapat penerimaan luas dalam industri komputer. Saat ini, banyak periferal dan perangkat terhubung ke komputer melalui interface USB. Saat ini, paling umum-tujuan sistem operasi menyediakan dukungan untuk perangkat USB, dan relatif mudah untuk mengembangkan aplikasi dalam C atau C + + yang mengakses seperti periferal. Namun, bahasa pemrograman Java oleh desain menyediakan sangat sedikit dukungan untuk akses perangkat keras, sehingga menulis aplikasi Java yang berinteraksi dengan perangkat USB telah membuktikan cukup sulit.

Upaya untuk menyediakan akses ke perangkat USB dalam bahasa Jawa yang dimulai pada tahun 1999 oleh Dan Streetman di IBM. Pada tahun 2001, proyek yang telah diterima sebagai calon diperpanjang standar Java melalui bahasa Java Specification Request (JSR) proses. Proyek ini sekarang disebut JSR-80 dan telah ditetapkan secara resmi Java paket javax.usb. Sementara itu, pada bulan Juni 2000, Mojo Jojo dan David Brownell memulai proyek jUSB di SourceForge. Kedua proyek telah diproduksi sejak paket bermanfaat untuk Linux developer, walaupun tidak dekat dengan sempurna. Kedua proyek juga telah mulai mencoba untuk menyediakan akses ke perangkat USB untuk aplikasi Java pada sistem operasi lain, meskipun dapat digunakan paket belum muncul dari baik.

Pada artikel ini, Anda akan mendapatkan pengenalan singkat ke jUSB dan proyek JSR-80; pertama, namun kita akan melihat kacang dan baut dari USB protokol, sehingga Anda dapat memahami bagaimana kedua orang-orang proyek berinteraksi dengan perangkat USB. Kami juga akan menawarkan potongan kode untuk menunjukkan bagaimana Anda akan menggunakan kedua proyek ‘API untuk mengakses perangkat USB.

Pengantar USB

Pada tahun 1994, sebuah aliansi dari empat mitra industri (Compaq, Intel, Microsoft, dan NEC) mulai menentukan USB protokol. Awal tujuan dari protokol adalah untuk menghubungkan PC ke telepon dan memberikan I / O interface yang mudah untuk memperluas dan reconfigure. Pada Januari 1996, versi pertama dari spesifikasi USB yang telah dibebaskan, dan selanjutnya revisi (versi 1.1) diluncurkan pada bulan September 1998. Spesifikasi yang diizinkan 127 perangkat untuk terhubung bersama-sama pada saat yang sama, dengan total komunikasi bandwidth terbatas sampai 12 Mbps. Nantinya, tiga anggota (Hewlett-Packard, Lucent, dan Philips) bergabung dengan aliansi. Pada bulan April 2000, versi 2.0 dari spesifikasi USB, yang mendukung transfer rate hingga 480 Mbps, telah dirilis. Saat ini, USB memainkan peran penting dalam kecepatan tinggi (video, imaging, penyimpanan) dan kecepatan penuh (audio, broadband, mikrofon) aplikasi transfer data. Ia juga menghubungkan berbagai perangkat kecepatan rendah (keyboard, mouse, peripheral game, virtual reality periferal) ke PC.

USB protokol sangat hirarkis. USB dalam sistem hanya ada satu tuan rumah, dan USB ke host komputer ini disebut sebagai host controller. Ada dua standar untuk pengendali host – Open Host Controller Interface (OHCI, oleh Compaq) dan Universal Host Controller Interface (UHCI, oleh Intel). Kedua standar yang memberikan kemampuan dan bekerja sama dengan semua perangkat USB; hardware pelaksanaan UHCI lebih sederhana, tetapi memerlukan perangkat yang lebih kompleks driver (sehingga lebih menempatkan beban ke CPU).

USB fisik interkoneksi adalah berjenjang topologi star, dengan sampai tujuh tingkatan. J hub adalah di pusat dari setiap bintang, dan USB host dianggap root hub. Setiap segmen kabel adalah point-to-point koneksi antara hub USB dan perangkat, yang kedua dapat berupa hub lain yang menyediakan tambahan lampiran poin ke sistem, atau beberapa macam perangkat yang menyediakan kemampuan fungsional. Host menggunakan master / subordinat protokol untuk berkomunikasi dengan perangkat USB. Pendekatan ini solves masalah tumbukan paket tetapi juga mencegah terpasang mendirikan langsung dari perangkat komunikasi satu sama lain.

Semua data transfer yang dilakukan oleh host controller. Data dari host diarahkan ke perangkat disebut hilir atau memperkecil transfer data dari satu perangkat yang ditujukan ke host yang disebut di hulu atau transfer. Transfer data terjadi antara host dan tertentu endpoint USB pada perangkat, dan data antara host dan endpoint disebut pipa. J diberikan perangkat USB memiliki banyak endpoints Mei, dan jumlah pipa data antara host dan perangkat yang sama dengan jumlah endpoints pada perangkat. J pipa mungkin uni-directional atau dua arah, dan data dalam satu aliran pipa independen adalah data yang mengalir di pipa lainnya.

Komunikasi pada jaringan kabel dapat menggunakan salah satu dari empat macam tipe data:

  • Kontrol transfer: Ini adalah data paket singkat untuk perangkat kontrol dan konfigurasi, khususnya pada saat pasang.
  • Bulk transfers: Ini adalah paket-paket data dalam jumlah yang relatif besar. Scanners atau perangkat seperti SCSI Adapters menggunakan jenis transfer.
  • Interrupt transfers: Ini adalah paket data yang polled secara berkala. Host controller akan secara otomatis mengirimkan interrupt pada interval tertentu.
  • Isochronous transfers: Ini adalah aliran data secara real time dengan bandwidth yang lebih tinggi daripada persyaratan untuk kehandalan. Audio dan video menggunakan perangkat ini umumnya jenis transfer.

Seperti port serial, setiap port USB pada komputer diberikan sebuah nomor identifikasi (ID port) oleh USB controller. Apabila perangkat USB terpasang ke port USB, port ID unik ini diberikan kepada perangkat dan perangkat keterangan yang dibaca oleh USB controller Perangkat keterangan termasuk informasi global yang berlaku untuk perangkat, serta informasi mengenai konfigurasi perangkat. J konfigurasi mendefinisikan fungsionalitas dan I / O perilaku perangkat USB. USB mungkin memiliki satu atau lebih konfigurasi yang digambarkan oleh mereka sesuai konfigurasi descriptors. Konfigurasi masing-masing memiliki satu atau lebih antarmuka, yang dapat dianggap sebagai saluran komunikasi fisik; setiap antarmuka telah nol atau lebih endpoints, yang dapat berupa data atau penyedia layanan data konsumen, atau keduanya. Antarmuka antarmuka dijelaskan oleh descriptors, dan dijelaskan oleh endpoints akhir-titik descriptors. Selain itu, perangkat USB mungkin juga ada string descriptors memberikan informasi tambahan seperti nama vendor, nama perangkat, atau nomor seri.

Seperti yang dapat Anda lihat, sebuah protokol seperti USB menawarkan tantangan pengembang yang menggunakan bahasa Java, yang berusaha untuk platform dan hardware. Mari kita sekarang melihat di dua proyek yang telah mencoba untuk menjembatani kesenjangan.

USB CABLE

Manfat yang diberikan oleh kabel USB yang penting adalah manfaat dari spesifikasi USB. USB sederhana I / O perangkat dapat mengandalkan kabel USB untuk semua kebutuhan daya dan tidak akan memerlukan tradisional “batu hitam” terhubungkan pada dinding. Adalah sumber daya yang dikelola secara hati-hati oleh USB, dengan perangkat hub pemutaran peran utama. J hub atau I / O perangkat dapat self-powered atau bis-powered.

Ø Self-powered merupakan pendekatan tradisional yang hub atau I / O perangkat tambahan kabel power terpasang ke.

Ø J-bus powered perangkat hanya bergantung pada kabel USB untuk kebutuhan daya dan sering kurang mahal.

Kabel konektor USB yang dirancang secara khusus dengan daya yang lebih dari pin pin sinyal sehingga daya akan selalu dilakukan sebelum sinyal. Konektor dua jenis yang ditetapkan, untuk memastikan bahwa konfigurasi ilegal tidak bisa dilakukan. An “A” jenis-konektor mendefinisikan hilir ujung kabel, dan “B”-jenis Konektor mendefinisikan hulu akhir Lebih jelasnya lihat gambar berikut ini.

INSTALASI UNTUK WINDOWS

Untuk mencoba koneksi USB di Windows perlu instalasi dan seting classpath dan pathnya terlebih dahulu. Untuk Librarynya dan kelasnya sendiri bisa didapat dalam file JavaUSB.zip dimana file ini bersisi kelas dan test konfigurasi pada port usb di windows. File ini bisa didapat di situs berikut ini http://www.steelbrothers.ch/jusb/api/usb/ windows/sources/JavaUSB.zip

Bilal kita buka filenya seperti diatas. Dimana sudah disediakan instalsi dan sourcenya. Untuk CLASSPATHNYA adalah

Variable

Value

CLASSPATH

F:\Studium\JavaUSB\JavaSources

Dan pengertian dari classpath sendiri adalah memberitahu SDK alat dan tempat untuk mencari aplikasi pihak ketiga dan ditetapkan pengguna kelas – yaitu, kelas-kelas yang tidak Jawa ekstensi atau bagian dari platform Java. Kelas jalan perlu menemukan kelas Anda telah dikompilasi dengan kompiler javac – default-nya adalah dalam direktori nyaman untuk memungkinkan orang-orang kelas yang akan ditemukan. Kami mungkin perlu memperluas variabel CLASSPATH, karena pengaturan lainnya juga sudah ditetapkan. Extension yang dibuat oleh titik koma ‘;’.

Sedangkan untuk PATHnya adalah

Variable

Value

Path

C:\Programme\s1studio_jdk\j2sdk1.4.1_02\bin;

Sehingga dengan setting seperti diatas kita bisa mengetes dan melakukan configurasi pada port usb yang ada di CPU.

The jUSB API

JUSB proyek yang telah dibuat oleh Mojo Jojo dan David Brownell pada Juni 2000. Tujuannya adalah untuk menyediakan satu set perangkat lunak bebas Java API untuk mengakses perangkat USB pada platform Linux. API didistribusikan di bawah Lesser GPL (LGPL), yang berarti Anda dapat menggunakannya di eksklusif serta proyek-proyek perangkat lunak bebas. API memberikan akses ke beberapa multithreaded fisik perangkat USB, dan mendukung kedua perangkat asli dan terpencil. Dengan beberapa perangkat antarmuka dapat diakses oleh beberapa aplikasi (atau perangkat driver) secara bersamaan, dengan masing-masing aplikasi (atau perangkat driver) mengklaim antarmuka yang berbeda. API mendukung kontrol transfer, transfer massal, dan mengganggu transfer; isochronous transfer tidak didukung karena ini adalah media yang digunakan untuk data (seperti audio dan video) yang sudah baik yang didukung oleh JMF API , melalui perangkat driver standar lainnya . Saat ini, API bekerja pada GNU / Linux dengan distribusi Linux kernel 2,4 atau kembali ke pelabuhan 2.2.18 kernel. Dengan demikian, kebanyakan distribusi yang didukung; misalnya, API bekerja di Red Hat 7,2 dan 9,0 tanpa patch atau upgrade.

API yang jUSB termasuk paket-paket berikut:

  • usb.core : Paket ini adalah bagian dari inti jUSB API. Hal ini memungkinkan akses aplikasi Java untuk perangkat USB dari USB host.
  • usb.linux : Paket ini berisi Linux pelaksanaan usb.core.Host objek, dukungan bootstrap, dan kelas lainnya Linux leveraging dukungan USB. Ini pelaksanaan mengakses perangkat USB melalui virtual USB device filesystem usbdevfs
  • usb.windows : Paket ini telah Windows pelaksanaan usb.core.Host objek, dukungan bootstrap, dan lainnya kelas leveraging Windows dukungan USB. Pelaksanaan ini masih dalam tahap sangat awal.
  • usb.remote : Paket ini merupakan versi yang jauh usb.core API. RMI terdiri dari sebuah daemon proxy dan aplikasi, yang memungkinkan akses aplikasi Java untuk perangkat USB pada komputer jauh.
  • usb.util : Paket ini menyediakan beberapa utilitas yang berguna untuk men-download firmware untuk perangkat USB, dump isi USB ke dalam sistem XML, dan convert USB massal hanya dengan perangkat I / O ke dalam soket.
  • usb.devices : Ini opsional paket Java mengumpulkan kode akses ke berbagai perangkat USB dengan jUSB API, termasuk kamera digital Kodak dan Rio 500 Pemutar MP3. API ini telah ditulis secara khusus untuk mempermudah proses yang mengakses perangkat USB yang ditunjuk dan tidak dapat digunakan untuk mengakses perangkat lain. API yang dibangun di atas usb.core API, dan mereka akan bekerja pada sistem operasi di mana jUSB yang didukung.
  • usb.view : Opsional ini menyediakan paket sederhana USB pohon browser berdasarkan swing.

Meskipun pelaksanaan usb.core.Host objek bervariasi dari sistem operasi untuk sistem operasi, Java pemrogram perlu memahami hanya usb.core paket untuk memulai pengembangan aplikasi dengan jUSB API. Tabel 1 mencantumkan dengan antarmuka dan kelas-kelas dari usb.core yang programmer Java harus akrab:

PC host software for USB is defined in layers

Tabel 1. Interfaces and classes in jUSB Antarmuka dan kelas jUSB

Interface Interface

Description Keterangan

Bus

Menghubungkan satu set perangkat USB ke Host

Host

Mewakili USB controller dengan satu atau lebih Bus es

Class Kelas

Description Keterangan

Configuration

Menyediakan akses ke konfigurasi USB didukung oleh perangkat dan dengan antarmuka yang berhubungan dengan konfigurasi

Descriptor

Dasar kelas untuk entitas dengan USB ketik descriptors

Device

Menyediakan akses ke perangkat USB

DeviceDescriptor

Menyediakan akses ke perangkat USB keterangan

EndPoint

Menyediakan akses ke USB akhir-point keterangan, struktur data perangkat masukan atau keluaran yang ada pada perangkat konfigurasi

HostFactory

Berisi metode bootstrap

Hub

Menyediakan akses ke sebuah hub USB dan beberapa keterangan hub operasi

Interface

Menjelaskan set endpoints, dan dikaitkan dengan suatu perangkat konfigurasi

PortIdentifier

Memberikan kestabilan string identitas / tanda untuk perangkat USB, sesuai untuk digunakan dalam operasi dan pemecahan masalah

Prosedur yang biasa untuk mengakses perangkat USB dengan jUSB API adalah sebagai berikut:

  1. Bootstrap oleh mendapatkan USB Host dari HostFactory
  2. Akses USB Bus dari Host maka akses USB Root hub (yang USB Device dari Bus
  3. Memperoleh jumlah port USB yang tersedia pada hub, dan menyeberang melalui semua port yang sesuai untuk mencari Device
  4. Akses USB Device yang terpasang ke port tertentu. J Device dapat diakses langsung dari Host dengan PortIdentifier atau dapat ditemukan oleh traversing USB Bus dimulai dari akar hub.
  5. Berinteraksi dengan Device secara langsung dengan ControlMessage atau klaim sebuah Interface dari sekarang Configuration dari Device dan melakukan I / O dengan Endpoint tersedia pada Interface

Listing 1 menggambarkan bagaimana mendapatkan konten USB dengan sistem jUSB API. Program sebagai tertulis hanya melihat Root hub perangkat USB yang tersedia, tetapi akan mudah untuk memperbaikinya menyeberang ke seluruh USB pohon. Logika di sini berkaitan dengan langkah-langkah 1 sampai 4 di atas.


Listing 1. Daftar 1. Mendapatkan isi USB dengan sistem jUSB API

import usb.core.*; impor usb.core .*;

public class ListUSB { (

public static void main(String[] args) { (

try { (

// Bootstrap by getting the USB Host from the HostFactory.

Host host = HostFactory.getHost();

// Obtain a list of the USB buses available on the Host.

Bus[] bus = host.getBusses

int total_bus = bus.length;

// Traverse through all the USB buses.

for (int i=0; i<total_bus; i++)

{ (

// Access the root hub on the USB bus and obtain the

// number of USB ports available on the root hub.

Device root = bus[i].getRootHub();

int total_port = root.getNumPorts();

// Traverse through all the USB ports available on the

// root hub. / / Root hub. It should be mentioned that the numbering

// starts from 1, not 0.

for (int j=1; j<=total_port; j++)

{ (

// Obtain the Device connected to the port.

Device device = root.getChild(j);

if (device != null) if (perangkat! = null)

{ (

// USB device available, do something here.

} )

} )

} )

} catch (Exception e) ) Catch (Exception e)

{ (

System.out.println(e.getMessage());

} )

} )

Listing 2 menggambarkan bagaimana cara melakukan massal I / O dengan Interface dan EndPoint dengan asumsi bahwa aplikasi telah berhasil terletak pada Device. Potongan kode ini juga dapat dimodifikasi untuk melakukan kontrol atau mengganggu I / O. Itu berkaitan dengan langkah 5 di atas.


Listing 2. Daftar 2. Performing bulk I/O with the jUSB API Massal performa I / O dengan jUSB API

if (device != null) if (perangkat! = null)

{ (

// Obtain the current Configuration of the device and the number of

// Interfaces available under the current Configuration.

Configuration config = device.getConfiguration();

int total_interface = config.getNumInterfaces();

// Traverse through the Interfaces

for (int k=0; k<total_interface; k++) for

{ (

// Access the currently Interface and obtain the number of

// endpoints available on the Interface

Interface itf = config.getInterface(k, 0);

int total_ep = itf.getNumEndpoints();

// Traverse through all the endpoints

for (int l=0; l<total_ep; l++)

{ (

// Access the endpoint, and obtain its I/O type.

Endpoint ep = itf.getEndpoint(l);

String io_type = ep.getType();

boolean input = ep.isInput();

// If the endpoint is an input endpoint, obtain its

// InputStream and read in data.

if (input) if (input)

{ (

InputStream in;

in = ep.getInputStream();

// Read in data here

in.close(); in.close ();

} )

// If the Endpoint is and output Endpoint, obtain its

// OutputStream and write out data.

else lain

{ (

OutputStream out;

out = ep.getOutputStream();

// Write out data here.

out.close();

} )

} )

} )

} )

JUSB proyek yang sangat aktif dari Juni 2000 ke Februari 2001. Yang terbaru rilis API, versi 0.4.4 telah tersedia pada 14 Februari 2001. Hanya sebagian kecil telah melaporkan kemajuan sejak saat itu, mungkin karena keberhasilan IBM grup menjadi calon diperpanjang standar dari bahasa Java. Namun, beberapa aplikasi pihak ketiga telah dikembangkan berdasarkan jUSB, termasuk proyek JPhoto (aplikasi yang menggunakan jUSB terhubung ke kamera digital) dan jSyncManager proyek (aplikasi yang menggunakan jUSB untuk melakukan sinkronisasi dengan Palm OS berbasis PDA).

The JSR-80 API (javax.usb)

Sebagaimana dicatat sebelumnya, dengan JSR-80 proyek telah dibuat oleh Dan Streetman di IBM pada tahun 1999. Pada tahun 2001, proyek telah diterima sebagai calon diperpanjang standar Java melalui bahasa Java Specification Request (JSR) proses. Proyek ini sekarang disebut JSR-80 dan telah ditetapkan secara resmi Java paket javax.usb. Proyek ini berlisensi di bawah Lisensi Publik Umum dan dikembangkan dengan menggunakan Java Community Process. Tujuan dari proyek ini adalah untuk mengembangkan USB antarmuka untuk platform Java yang memungkinkan akses penuh ke sistem USB untuk setiap aplikasi Java atau komponen middleware. The JSR-80 API memberikan dukungan penuh untuk semua jenis empat transfer ditetapkan oleh spesifikasi USB. Saat ini, Linux pelaksanaan API bekerja pada terkini GNU / Linux distribusi dengan dukungan 2,4 kernel, seperti Red Hat 7,2 dan 9,0.

The JSR-80 proyek meliputi tiga paket: javax-usb (yang javax.usb API), javax-usb-ri (umum bagian dari OS-independen acuan pelaksanaan), dan javax-usb-ri-linux (acuan pelaksanaan untuk platform Linux, yang menghubungkan umum pelaksanaan rujukan ke Linux USB stack). Semua tiga bagian diminta untuk melengkapi formulir yang berfungsi java.usb API pada platform Linux. Independen upaya yang bertujuan untuk port API untuk sistem operasi lain (terutama Microsoft Windows) telah dilaporkan pada proyek daftar e-mail, tetapi tidak berfungsi paket telah dirilis yet.

Walaupun OS tergantung pada pelaksanaan JSR-80 API berbeda dari sistem operasi untuk sistem operasi, Java pemrogram perlu memahami hanya javax.usb paket untuk mulai mengembangkan aplikasi. Tabel 2 daftar antarmuka dan kelas javax.usb yang programmer Java harus akrab:

Table 2. Tabel 2. Interfaces and classes in the JSR-80 APIs

Interface Interface

Description Keterangan

UsbConfiguration

Mewakili sebuah konfigurasi perangkat USB

UsbConfigurationDescriptor

USB untuk konfigurasi keterangan

UsbDevice

Interface untuk perangkat USB

UsbDeviceDescriptor

Interface untuk perangkat USB keterangan

UsbEndpoint

Untuk antarmuka USB endpoint

UsbEndpointDescriptor

Interface USB endpoint untuk keterangan

UsbHub

Interface untuk hub USB

UsbInterface

Interface untuk antarmuka USB

UsbInterfaceDescriptor

Interface untuk antarmuka USB keterangan

UsbPipe

Interface USB untuk pipa

UsbPort

Interface untuk port USB

UsbServices

Interface untuk javax.usb pelaksanaan

Class Kelas

Description

UsbHostManager

Entry point untuk javax.usb

Prosedur yang biasa untuk mengakses perangkat USB dengan JSR-80 API adalah sebagai berikut:

  1. Bootstrap oleh cara yang sesuai UsbServices dari UsbHostManager
  2. Akses root hub melalui UsbServices Root hub dianggap sebagai UsbHub dalam aplikasi.
  3. Memperoleh daftar yang UsbDevice s yang terhubung ke Root hub. Menyeberang melalui semua level rendah hubs untuk menemukan yang sesuai UsbDevice
  4. Berinteraksi dengan UsbDevice langsung dengan kontrol pesan UsbControlIrp atau klaim UsbInterface dari yang sesuai UsbConfiguration dari UsbDevice dan melakukan I / O dengan UsbEndpoint tersedia di UsbInterface
  5. Jika UsbEndpoint digunakan untuk melakukan I / O, buka UsbPipe terkait dengannya. Baik hulu data (dari perangkat USB ke komputer host) dan hilir data (host dari komputer ke perangkat USB) dapat disampaikan secara serempak atau asynchronously melalui UsbPipe
  6. Menutup UsbPipe dan rilis yang sesuai UsbInterface bila aplikasi tidak lagi membutuhkan akses ke UsbDevice

Daftar 3, kita mendapatkan konten USB sistem dengan JSR-80 API. Program secara rekursif traverses melalui semua USB hubs pada sistem USB dan locates semua perangkat USB yang terhubung ke komputer host. Kode berkaitan dengan langkah-langkah 1 sampai 3 di atas.


Listing 3. Obtaining the content of the USB system with the JSR-80 API

import javax.usb.*; impor javax.usb .*;

import java.util.List; java.util.List impor;

public class TraverseUSB

{ (

public static void main(String argv[]) { (

try

{ (

// Access the system USB services, and access to the root

// hub. / / Hub. Then traverse through the root hub.

UsbServices services = UsbHostManager.getUsbServices();

UsbHub rootHub = services.getRootUsbHub();

traverse(rootHub); lintang (rootHub);

} catch (Exception e) {} ) Catch (Exception e) ()

} )

public static void traverse(UsbDevice device)

{ (

if (device.isUsbHub())

{ (

// This is a USB Hub, traverse through the hub.

List attachedDevices = ((UsbHub) device).getAttachedUsbDevices();

for (int i=0; i<attachedDevices.size(); i++)

{ (

traverse((UsbDevice) attachedDevices.get(i));

} )

} )

else

{ (

// This is a USB function, not a hub

// Do something.

} )

} )

} )

Daftar 4 menggambarkan cara untuk melakukan I / O dengan Interface dan EndPoint dengan asumsi bahwa aplikasi telah berhasil terletak Device. Potongan kode ini juga dapat dimodifikasi untuk melakukan I / O dari semua empat jenis transfer data. Itu berkaitan dengan langkah 4 sampai 6 di atas.

Listing 4Performing I/O with the JSR-80 API

public static void testIO(UsbDevice device)

{ (

try

{ (

// Access to the active configuration of the USB device, obtain

// all the interfaces available in that configuration.

UsbConfiguration config = device.getActiveUsbConfiguration();

List totalInterfaces = config.getUsbInterfaces();

// Traverse through all the interfaces, and access the endpoints

// available to that interface for I/O.

for (int i=0; i<totalInterfaces.size(); i++)

{ (

UsbInterface interf = (UsbInterface) totalInterfaces.get(i);

interf.claim();

List totalEndpoints = interf.getUsbEndpoints();

for (int j=0; j<totalEndpoints.size(); j++) for (int j = 0; j <totalEndpoints.size (); j + +)

{ (

// Access the particular endpoint, determine the direction

// of its data flow, and type of data transfer, and open the

// data pipe for I/O

UsbEndpoint ep = (UsbEndpoint) totalEndpoints.get(i);

int direction = ep.getDirection();

int type = ep.getType();

UsbPipe pipe = ep.getUsbPipe();

pipe.open();

// Perform I/O through the USB pipe here

pipe.close();

} )

interf.release();

} )

} catch (Exception e) {} )

} )

The JSR-80 proyek telah sangat aktif dari awal. Versi 0.10.0 dari javax.usb API, dan RI untuk Linux yang dirilis pada Februari 2003. Kemungkinan bahwa versi ini akan diserahkan ke panitia JSR-80 untuk persetujuan akhir. Diharapkan implementasi untuk sistem operasi lain akan segera tersedia setelah JSR-80 resmi diperpanjang menjadi standar dari bahasa Java. Komunitas Linux tampaknya lebih menunjukkan minat pada JSR-80 proyek daripada jUSB proyek, dan telah terjadi peningkatan jumlah proyek yang diluncurkan dengan menggunakan javax.usb API pada platform Linux.

KESIMPULAN

Kedua jUSB API dan JSR-80 API menyediakan aplikasi Java dengan kemampuan untuk mengakses perangkat USB dari komputer yang menjalankan sistem operasi Linux. JSR-80 API menyediakan lebih banyak fungsi daripada jUSB API, dan memiliki potensi yang diperpanjang menjadi standar dari bahasa Jawa. Saat ini, para pengembang Linux hanya dapat mengambil keuntungan dari jUSB dan API JSR-80. Namun, upaya untuk aktif port kedua API untuk sistem operasi lain telah dilaporkan. Pengembang Java harus dapat mengakses perangkat USB pada sistem operasi lain dalam waktu dekat. Oleh familiarizing sendiri dengan API ini sekarang, anda bisa siap untuk menambahkan fungsi USB untuk aplikasi anda saat ini sudah siap untuk proyek-proyek utama waktu pada beberapa platform. Dan tidak lupa bila ingin mencobanya di windows perlu menseting terlebih dahulu claasspath dan pathnya karena terpisah dari librarynya. Sedangkan JDK yang telah support sejak versi 1.4 dan yang terakir sampai sekarang yang ke 6 telah support bermacam koneksi device.


DAFTAR PUSTAKA

http://www.steelbrothers.ch/jusb/api/usb/windows/related-docs/JavaUSBforWindowsWeb.pdf

http://www.steelbrothers.ch/jusb/api/usb/windows/sources/JavaUSB.zip

http://www.steelbrothers.ch/jusb/api/usb/windows/related-docs/chp8-developerinstallation.pdf

http://www.ibm.com/developerworks/library/j-usb.html

http://jusb.sourceforge.net

http://jusb.sourceforge.net/apidoc/usb/core/PortIdentifier.html

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: