“Mulai Lagi”

Ayo semangat……….!!!!

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

Lama gak Nulis – Page rang Diturunkan…?

Memang menulis itu harus kontinue, palagi dalam sebuah Blog…..! kalauo dibandingkan dengan 2 bulan yang lalu udah gak serajin waktu itu. Nulis padahal enak, ternyata ada jenuhnya juga…? Em memang sih untuk yang satu ini “Ngeblog ” memang jadi pilihan yang pas dari pada melakukan aktifitas yang negatif…..!

Ngomongin rating ternya google ngeliat rating bukan berasal dari banyaknya dikunjungi pembaca, namun juga dilihat dari banyaknya posting yang dibaca, seberapa sering kita posting di blog kita sendiri. Pengalaman dulu sempat rating 3/10 di page check rank dari google namun ya harus sering nulis waktu itu.  Dan akirnya meski pengunjung gak sampai 20.000 tapi udah dapet pagerank yang lumayan.

Kalo dibandingkan dengan sekarang maka lebih menurun dengan jumlah pengunjung yang bertambah. Sekarang turun jadi 2/10. Wah harus sering nulis lagi kalo gitu. Em temen – temenku banyak yang bikin blog sekarang, so harus makin rajin nulisnya. Em……..tulisan ini cuma review kok.

Kalau mau dapet ranking yang tetap dan makin naik meski pengunjung yang gak banyak, harus sering nulis lho…..!So ……jaga semangatnya untuk nulis…..!

Oracle APEX

Oracle apec adalah oracle Aplications Express, dimana untuk mempermudah kita membuat aplikasi secara singkat dengan database Oracle. Oracle ini membutuhkan Oracle express Versi 10, dan instal apex 3.11.

Untuk menginstallnya tidak sulit, bagi temen-temen yang mau apexnya tinggal download di website resmi oracle. untuk Instalasinya adalah sebagai beikut, dan bersumber dari Mas fajar Muharady – dari Oracle Indonesia…!

environment-setup-12

Jangan lagi Gunakan – Account Dosen…!

Ketika masuk dalam jurusan IT ini, saya yakin temen-temen semua pasti tertarik dengan dunia hacker, pasti how to…? Pertanyaan yang selalu muncul di benak kita, yang samapi-sampai kita tak mampu membenamkannya. Wah kenapa ya….? Apa mungkin kalo kita bisa jadi Hacker terus jadi keren…? Tentu tidak, pa lagi undang-undangnya sudah ada…..!!! Pasti yang kita dapet adalah penjahat, pastinya….! dan kemarin baru saja kami dikatan tidak bermoral….!

Namun dibalik itu semua ada beberapa ilmu yang kita dapet, apalagi sebuah ilmu jaringan, waktu itu disiapkan satu tool aja, dan setelah itu kita berani masuk ke codingnya, dengan menggunakan tameng menguh mac addres, supaya admin jaringan tidak tahu dan hide my ip untuk memperlambay admin yahu IP kita, namun yang pasti saya himbau jangan lakukan di kampus atau….kalian tahu konsekuensinya….!

Kalau masalah Hack semua pasti dengar, namun kalau sembarangan dan tidak teliti….? sama saja. Sedikit cerita account dosen kami dapat dengan mudah , dan semua mahasiswa juga mengetahuinya….! Dan apa yang terjadi? Mereka saling tukar Account untuk memperbanyak peluang. Wah sebenarnya sih tidak setuju…..Lum lagi kalau ketahuan. Namun kebersamaan penting sama temen-temen, walau terkadang salah sih….! Dan in terakir kami gunakan ilmu ini, soalnya sudah ada  hukuman untuk kami. But kami enjoy it, dan kebersamaan kami semakin solid.

Temenku….jangan account Dosen lagi….!

Winam Baru 5.53

Aduh malu rasanya udah lama gak nulis disini, padahal udah pengen nulis sejak kemarin-kemarin. Em kalo gitu biarin aja aku nulis, ne aku mau share winamp baru yang lumayan membantu kita untuk browsinng musik.

Ceritanya begini, kemarin temenku minta dicarikan winamp yang support vista untungnya aku nemuin winamp ini, dan langsung saja ku coba. Setelah ku install ternyata ada yang menarik, memang dari penampilan menari. Namun tidak itu saya, kalau kita bisa konekkan internet bisa lebih powerfull banyak fitur ambahan yang memanjakan kita. Mulai dari searching lagu dengan library yang seabrek, sampai play lebih dari dua lagu sekaligus. Dan yang pasti semakin nyaring saja. Kita bisa ngatur bits nya.

Em kalo sudah online, di menu more terdapat link ke internet, dan akan menunjukkan kita ling terkait, misalnya sejah band, kapan dan lgu apa saja yang dibuat. Tidak kalah menarik di menu Videos sudah otomatis terbuffer dengan koneksii youtube, dengan begitunya maka kita bisa play video langsuing diwinam. Dan perlu diingat lagi ternyata ada bantuan , limited bandwith sangat membantu. Saya pikir cepetkok, browsernya winam sangat membantu dan kita bisa dengerin musik sambil liat videonya tanpa harus download lho….

Tapi tetep masalahnya adalah koneksi internet. Dan ternyata dengan koneksi hp biasa kecepatan gprs sudah lumayan kok…..Udah bisa liat tu videonya…Adalagi, kalau kita menuju services online maka kita bisa mengaktifkan contentnya, misalnya TV Stream, disini kita bisa mendapatkan list tv yang mempunyai Stream Video, dan kalau kita tidak memfilternya maka saluran dewasa yang ada di dunia nyambung semua, wah bahaya donk kalau yang liat anak kecil. So difilter dulu kalau mau konten ini aktif. ….Cobain aja bagi kamu yang lum pernah, dan yang lum jangan emosi lho…kalo tulisan ini jadul

Em ada lagi Radio Onlene, via AOL dan disini kamu bisa dengerin lagu-lagu barat yang baru dan jyang jadul banget, suaranya enak, dan tidak tersendat kok. Soalnya seperti media Box, dan kita bisa search lagu yang kita inginkan. Lagu barunya juga keren, kayak radio lokal kita lho…! Perlu diingat kalau mau dapet hasil yang maksimal harus tunggu buffernya selesai lho….!

Eit, sampai disini dulu nulisnya, ne aku ada capturennya…!Sorry untuk semuanya yaw…Kalau ada yang salah sama tulisannya. Cobain aja….!Pasti enak. Dan kita bisa memainkan liriknya….! Enjoy it…!

winamp

Membuat Menu Makanan Pada Java

Em praktikum pertama GUI di kuliah lumayan menarik, pertama kalinya membuat menu makanan dengan Java. yang pertama yang disiapkan adalah membuat kelasnya. Disini nama projec sekaligus kelasnya adalah Database. Dan pertama dalam GUI Java yang dibuat adalah desain dari Output yang ingin ditampilkan. berikut ini adalah desainnya.

Dan berikut desain dan nama variabeL

menu31

menu2dari setiap desain yang dibuat. Berikut Listing programnya

package MyProject;

import javax.swing.JOptionPane;
public class Database extends javax.swing.JFrame {

public static int hargaSoto = 5000;
public static int hargaRawon = 6000;
public static int hargaBakso = 4000;
public static int hargaGudeg = 8000;

/** Creates new form Database */
public Database() {
initComponents();
}

private void cbRawonActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
if(cbRawon.isSelected()==true){
tfRawon.setEditable(true);
}
else{
tfRawon.setEditable(false);
tfRawon.setText(“”);
}
}

private void cbBaksoActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
if(cbBakso.isSelected()==true){
tfBakso.setEditable(true);
}
else{
tfBakso.setEditable(false);
tfBakso.setText(“”);
}
}

private void cbGudegActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
if(cbGudeg.isSelected()==true){
tfGudeg.setEditable(true);
}
else{
tfGudeg.setEditable(false);
tfGudeg.setText(“”);
}
}

private void cbSotoActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
if(cbSoto.isSelected()==true){
tfSoto.setEditable(true);
}
else{
tfSoto.setEditable(false);
tfSoto.setText(“”);
}
}

private void bHitungActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
int totalHarga = 0;
if(cbSoto.isSelected()){
if(!tfSoto.getText().equalsIgnoreCase(“”)){
totalHarga+=Integer.parseInt(tfSoto.getText())* hargaSoto;
}else
JOptionPane.showMessageDialog(null,”Maaf belum Anda terisi”,”Error”,JOptionPane.ERROR_MESSAGE);
}
if(cbBakso.isSelected()){
if(!tfBakso.getText().equalsIgnoreCase(“”)){
totalHarga+=Integer.parseInt(tfBakso.getText())* hargaBakso;
}else
JOptionPane.showMessageDialog(null,”Maaf belum Anda terisi”,”Error”,JOptionPane.ERROR_MESSAGE);
}
if(cbRawon.isSelected()){
if(!tfRawon.getText().equalsIgnoreCase(“”)){
totalHarga+=Integer.parseInt(tfRawon.getText())* hargaRawon;
}else
JOptionPane.showMessageDialog(null,”Maaf belum Anda terisi”,”Error”,JOptionPane.ERROR_MESSAGE);
}
if(cbGudeg.isSelected()){
if(!tfGudeg.getText().equalsIgnoreCase(“”)){
totalHarga+=Integer.parseInt(tfGudeg.getText())* hargaGudeg;
}else
JOptionPane.showMessageDialog(null,”Maaf belum Anda terisi”,”Error”,JOptionPane.ERROR_MESSAGE);
}
tfTotal.setText(“”+totalHarga);
}

private void bClearActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
tfSoto.setText(“”);
tfBakso.setText(“”);
tfRawon.setText(“”);
tfGudeg.setText(“”);
tfTotal.setText(“”);
cbSoto.setSelected(false);
cbBakso.setSelected(false);
cbRawon.setSelected(false);
cbGudeg.setSelected(false);
tfSoto.setEditable(false);
tfBakso.setEditable(false);
tfRawon.setEditable(false);
tfGudeg.setEditable(false);
}

/**
* @param args the command line arguments
*/
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new Database().setVisible(true);
}
});
}

// Variables declaration – do not modify
private javax.swing.JToggleButton bClear;
private javax.swing.JButton bHitung;
private javax.swing.JCheckBox cbBakso;
private javax.swing.JCheckBox cbGudeg;
private javax.swing.JCheckBox cbRawon;
private javax.swing.JCheckBox cbSoto;
private java.awt.Label label1;
private java.awt.Label label2;
private javax.swing.JTextField tfBakso;
private javax.swing.JTextField tfGudeg;
private javax.swing.JTextField tfRawon;
private javax.swing.JTextField tfSoto;
private javax.swing.JTextField tfTotal;
// End of variables declaration

}

Berikut adalah Hasilnya….!

hasil

Gampang kan….?

Selamat mencoba