Java : HID USB

kali ini saya akan berbagi sedikit hal tentang komunikasi dengan perangkat HID-USB. akan dibahas apa itu HID-USB dan bagaimana berkomunikasi dengan perangkatnya via Java Programming Language  🙂

apa itu HID (Human Interface Device)…?

USB class yang mendefiniskan perangkat atau device. fungsi ini memungkinkan produsen perangkat keras untuk merancang produk pada spesifikasi HID-USB class agar dapat bekerja atau berhubungan dengan perangkat lunak yang juga memenuhi spesifikasi ini. HID-USB menggunakan port USB sebagai interface-nya. HID digunakan untuk mengontrol peralatan yang ada di PC. contoh HID-USB itu keyboard-mouse-jostick. tapi kalau keyboard-mouse-nya pake USB lho…! klo gak pake USB biasanya menggunakan PS/2  😀 port USB  itu sendiri ada beberapa type, diantaranya USB type-A dan  USB type-B (simplenya kayak kabel printer saat ini). untuk melihat list device HID yang ada di PC kita, kita dapat melihatnya melalui device manager.

device manager

device manager

untuk dapat berkomunikasi dengan HID-USB, kita harus tahu VID (Vendor ID) dan PID (Product ID) device tersebut. VID-PID tersebut dalam bentuk heksadesimal dan biasanya selalu diawali dengan 0x. contohnya pada perangkat HID-USB saya VID dan PID-nya adalah 0x20CE dan 0x0022. untuk mengetahui VID-PID melalui device manager tadi cukup klik kanan pada komponen HID > properties

VID-PID

VID-PID

dalam rancangbangun HID-USB pertama saya ini, saya menggunakan library AtUsbHidJni.jar yang dapat di download disini.

special thank for everyone who have done upload this library, without it maybe my duty will stuck again 🙂

by the way apa itu library Java…? klik disini 😀  setelah di download, library-library tersebut di-copy ke dalam PATH dan CLASSPATH yang sebelumnya telah di buat. biasanya untuk PATH berada di folder C:\Program Files (x86)\Java\jdk1.7.0_05\bin dan untuk CLASSPATH berada di C:\Program Files (x86)\Java\jdk1.7.0_05\lib atau dimana file-file JDK terinstall pada PC kita. selain itu, library tersebut ditambahkan pada Libraries NetBeans seperti gambar di bawah ini

add library

add library

selain itu, sebuah device yang akan di kontrol selalu memiliki manual book. baca manual-nya…! jangan pernah melewatkan bagian ini, karena didalam manual book, banyak panduan-panduan yang memudahkan user untuk menggunakan device tersebut. selain itu biasanya vendor device tersebut telah menyediakan file *. DLL (Dynamic Link Library) atau juga *.SYS untuk ditambahkan dalam system operasi kita (kalau di Windows biasa pada folder System32 dan di-root pada Linux). atau ada juga file *.SLN yang harus di-build menggunakan Visual Studio untuk dapat menjadi sebuah library.

aplikasi HID-USB yang saya buat kali ini untuk mengontrol sebuah switching

Java GUI

Java GUI

saya membuat dua kelas utama yaitu untuk kelas GUI (RF_GUI) dan kelas komunikasi (RF_Comm). kelas GUI (form) berisi kumpulan button, text field, text area dan label sebagai input/output ke perangkat HID-USB. kelas komunikasi akan berfungsi atau berjalan ketika dipanggil oleh kelas GUI. berikut codingnya >>>

kelas komunikasi

kelas komunikasi

kelas komunikasi

dalam kelas ini kita wajib meng-import library AtUsbHidJni. jar.

untuk nilai VID dan PID harus dideklarasikan dalam bentuk integer heksadesimal (0x20CE)  namun pada saat pembacaan dalam bentuk integer desimal (8398).

selain itu dideklarasikan juga writeByteArray dalam bentuk byte array untuk menampung byte-byte perintah dan mendeklarasikan readByteArray dalm bentuk byte array untuk menampung byte-byte hasil pembacaan device HID-USB.

kita juga dapat mendeklarasikan nilai-nilai lainnya seperti string, int (integer), char ataupun short-long sesuai kebutuhan kita.

pada baris ke-18 banyaknya byte array adalah 64 (0-63). nilai tersebut saya dapatkan dari buku manual switching device-nya. beda device KEMUNGKINAN beda pula panjang byte array untuk write maunpun read 🙂

koneksi

koneksi

koneksi

untuk melakukan koneksi, dari kelas GUI (tombol konek) cukup diarahkan ke metode Connect pada kelas komunikasi.

koneksi dimulai dengan me-load library yang telah kita import dan yang ada di PATH-CLASSPATH (baris 32).

kemudian program mencari nilai VID-PID (int heksa) device HID-USB (baris 43).

jika koneksi berhasil akan mengaktifkan metode setConnected dan memanggil metode Toggle (baris 48-49).

diskonek

diskoneksi

diskoneksi

untuk diskoneksi dengan menutup koneksi melalui closeDevice (baris 84).

selain itu mengaktifkan metode setConnected dan memanggil metode Toggle (baris 81-82).

metode Toggle digunakan untuk mengontrol kondisi button (enable-disable) pada saat device terkoneksi atau tidak.

write command

write command

write command

untuk write command, harus melihat manual book bawaan vendor-nya. tanpa itu kita tidak tahu code-code write-nya (byte, string, int, char).

selain itu panjang byte array untuk melakukan write bisa berbeda-beda dan nilainya bisa berbeda pula (bisa desimal, heksadesimal atau karakter).

delay digunakan untuk memberikan jeda waktu write pada tiap-tiap byte yang dikirimkan (baris 121).

read data

read data

read data

untuk read data, data yang terbaca ditampung dalam byte array (readByteArray). selanjutnya byte-byte tersebut dapat kita konversikan menjadi short, char, int, long, float ataupun double tergantung kebutuhan kita. untuk konversi/casting data lebih jelasnya bisa dilihat pada web Java2s ini.

mudah-mudahan sejauh ini pembaca mengerti apa yang saya ceritakan diatas dan tulisan ini bisa bermanfaat hehehehe kalau ada pertanyaan, jangan segan untuk bertanya pada Mbah Google atau tinggalkan komentar dibawah 😀

NB : tulisan ini diilhami dari tulisan saya sebelumnya yang berjudul stuck, belum baca…? baca dulu donk 😀

Advertisements

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