life is like an echo…

life is like an echo, what you send out comes back

– chinese proverb –

pepatah china ini hampir sama maknanya dengan pepatah kita [Indonesia], siapa yang menanam dia yang menuai. kalau kita baik, orang pasti baik. kalau kita berbuat baik akan dibalas dengan baik pula.

janji

“Barangsiapa menghilangkan kesulitan seorang mukmin di dunia, maka Allah akan melepaskan kesulitannya pada hari kiamat. Barang siapa memudahkan orang yang tengah dilanda kesulitan, maka Allah akan memudahkannya di dunia dan di akhirat…” (Hadis Riwayat Muslim).

jika dengan bantuan kita dapat mempermudah urusan orang lain, kenapa kita persulit….?

janji ini terinspirasi dari pengalam pribadi kegalauan menanti fotocopy sertifikat rumah yang tak kunjung di dapatkan. more than one and half year…!

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 :D  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😀

Java

Java_Logo

Java_Logo

Hmmmmm mood menulis saya tiba-tiba muncul, entah dari mana datangnya. Mungkin karena lagi happy kali yah😀. Kali ini saya mau berbagi pengetahuan soal Java (pengetahuan versi saya pastinya). Cieeeeeeeeee… Tumben mau berbagi…! hahaha kalau bukan kita siapa lagi…?😀

“Tidak akan bergeser kaki anak Adam (manusia) pada hari kiamat nanti di hadapan Rabbnya sampai ditanya tentang lima perkara: umurnya untuk apa dihabiskan, masa mudanya untuk apa dihabiskan, hartanya dari mana dia dapatkan dan dibelanjakan untuk apa harta tersebut, dan sudahkah beramal terhadap ilmu yang telah ia ketahui. ” (HR. At Tirmidzi no. 2340)

Sebelumnya saya sudah menulis beberapa artikel yang berkaitan dengan Java di blog tercinta ini seperti  Java : serial communication,  Java : insert text file to MySQL via JDBC koneksi MySQL dll :D  Sudah banyak bercerita tapi saya belum pernah bercerita apa sih sebenarnya Java itu…? Mengapa Java…? Apa keunggulan serta kelemahannya…? Bagaimana memulai Java…?

Java itu bahasa pemrograman berorientasi objek (Object Oriented Programming/OOP) yang dipengaruhi oleh bahasa C dan C++.  Jadi kalau mau buat suatu aplikasi yang ada GUI (Garaphical User Interface) sangat bisa untuk mengandalkan Java. Ini contoh aplikasi desktop yang dibuat menggunakan Java.

Java

Java

Java itu sendiri merupakan sebuah produk yang dimiliki oleh Sun Microsystem (saat ini sudah diakuisisi Oracle, CMIIW). Sejauh ini Java memiliki beberapa jenis diantaranya Java Mobile (Micro Edition), Java Desktop (Standart Edition)  dan Java Web (Enterprise Edition). Untuk lebih tahu soal sejarah Java dan seluk beluknya bisa googling sendiri :D  Selanjutnya saya hanya akan berbagi ilmu/bercerita soal Java Desktop.  kenapa…? Karena cuma Java itu yang saya tahu😀

Untuk membangun sebuah aplikasi berbasis Java (utamannya Java desktop) dibutuhkan sebuah IDE (Integrated Development Environtment) semacam Visual Basic, Delphi atau Visual Studio. Untuk Java ada 2 IDE free yang biasa digunakan, yaitu NetBeans dan Eclipse. Namun sekali lagi saya batasi tulisan ini hanya pada NetBeans saja karena sejauh ini saya mem-build aplikasi berbasis Java menggunakan NetBeans.

Mengapa Java…? Apa keunggulannya…?

Yang pertama itu menurut saya adalah multiplatform. Jadi Java bisa berjalan di lingkungan Windows, Linux dan Mac. Kenapa…? Penyebabnya adalah setiap sistem operasi menggunakan programnya sendiri-sendiri (yang dapat diunduh dari situs Java dan free) untuk menginterpretasikan bytecode tersebut. Coba kalau VB…? Susah untuk di-running di Linux (sebenernya sih katanya bisa via Wine). VB itu Windows native jadi hanya berjalan di sistem Windows juga, gak lintas platform kayak Java.

OOP, apa itu OOP…? Hmmmmmm googling sendiri aja yah hehehe

library-nya banyak karena banyak komunitas Java yang mem-build library tersebut dan disebarkan secara gratis di internet (walau beberapa kasus ada yang berbayar).

mempunyai pengumpulan sampah otomatis/garbage collection. Apa itu garbage collection…? buka ini😀

Ada kelebihan pasti ada kelemahan donk..!

penggunaan memori yang besar, berbeda dengan bahasa pemrograman lain yang hanya membutuhkan memori sedikit…

tulis sekali, jalankan di mana saja “write once, run anywhere“- yakin…? Baca artikel saya sebelumnya.

Kenapa saya memilih Java…?

Sebelumnya saya sudah berkenalan dengan yang namanya VB. Saya sudah buat beberapa aplikasi desktop (komunikasi serial-MySQL). Berhubung saya masih newbie dan master-master VB sudah banyak di kantor saya, maka mau tidak mau saya harus bermigrasi ke bahasa lainnya hmmm ini awal mulanya

Bagaimana cara menginstall Java…?

Untuk menginstall Java kita dapat mendownload IDE NetBeans di web Oracle secara langsung. Tenang saja, free kok hehehe bisa di download disini.

waktu mendownload harus diperhatikan sistem operasi yang kita gunakan Windows atau Linux based. Selain itu juga harus diperhatikan PC kita menggunakan arsitektur prosesor 32 bit atau 64 bit. Untuk tahu arsitektur PC dapat dilihat di command prompt pada Windows (Windows7) dengan mengetik SYSTEMINFO atau pada Linux dengan mengetik UNAME  –A pada terminal (saya menggunakan CentOS, Kubuntu, Ubuntu).

Apa itu JDK yg di-bundle di NetBeans..?

JDK ( Java Development Kit) yaitu software yang digunakan untuk membangun aplikasi-aplikasi Java. Tanpa JDK kita tidak akan bisa membangun atau membuat berbagai macam aplikasi Java.

Sedangkan JRE (Java Runtime Environment) yaitu software yang diciptakan oleh Sun Microsystem berguna HANYA untuk menjalankan program atau aplikasi Java yang sudah di-compile atau sudah jadi.

Setelah menginstall NetBeans apa selanjutnya…?

Selanjutnya kita harus membuat PATH dan CLASSPATH. Di Windows kita bisa menyeting path dan classpath via CMD. Untuk berhasil atau tidaknya cukup ketikkan JAVAC atau JAVA  –VERSION di CMD

via CMD

via CMD

Atau melalui system properties > tab advance > environment variables > pada user variable pilih NEW > insert vaiable name dan variable value > OK.

setting path

setting path

Jika ada kesulitan jangan segan untuk bertanya pada Mbah Google😀

Contoh program/coding di NetBeans

NetBeans

NetBeans

  Dimana belajar Java bagi pemula …?

Saya merekomendasikan link-link dibawah ini :

Untuk web berbahasa Indonesia

Java Lyracc

i-bego

diskusiweb

Untuk web berbahasa Inggris

roseindia

Java2s

tips : untuk memperlancar dan menambah pengetahuan seputar Java jangan cuma jadi silent reader hehehe kalau kita bisa bergabunglah di forum Java, sesekali menjawab pertanyaan di forum yang mampu kita jawab, gak ada salahnya menjawab. Kalaupun jawaban kita salah, pasti bakalan ada member lain yang akan memberikan masukan atau mengkoreksi kesalahan kita🙂 CMIIW

 NB : tulisan ini dirangkum dari berbagai sumber dan sepengetahuan saya saja. Disarankan untuk tidak percaya mentah-mentah dengan apa yang saya tulis, biar valid gak ada salahnya membaca literature lainnya :D  Saat ini saya sudah menyelesaikan beberapa aplikasi desktop seperti FTP (File Transfer Protocol), komunikasi socket (client-server) dan komunikasi HID USB (Human Interface Device). Kalau ada waktu dan ada mood akan saya posting disini😀

ramai riuh…

hmmmmm ada pemandangan aneh pagi ini, menurut pandangan saya pastinya. apa itu…?

biasanya jam 7.40 pagi itu masih sepi kayak kuburan. ini biasanya lhoooo… TAPI pagi ini lain ceritanya. yang biasanya terlihat setelah pukul 8 atau bahkan pukul 9 tiba-tiba sudah datang. #tumben. ada apa ini…? usut punya usut ternyata si-numero uno a.k.a si-bapak kepala mau datang. hahaha aneh dan konyol menurut saya. mentang-mentang si-numero uno datang, gak mau terlihat telat. by the way kemaren-kemaren kemana aja omm…???

si-hati sempat nyeletuk “kenapa si-numero uno gak datang kesini setiap hari aja ya…? biar ini kantor ramai riuh kayak pasar setiap hari :D”

konyol [part II]

konyol sekali bulan lalu dan bulan lalu satunya lagi. sudah datang selalu paling pagi dan terkadang pulang paling terakhir, sudah mengerjakan tugas-tugas yang diberikan [walau belum sepenuhnya selesai dengan benar] TAPI  yaaa sudahlah… bandingan dengan… TAPI  yaaa sudahlah…
ini mungkin yang namanya ikhlas, walau hati kecil selalu berteriak “dimana keadilan….!”, “apa parameternya…?”, “kok bisa sih…? ” ahhh sudahlah, disini memang penuh dengan hal-hal absurd yang terkadang sangat sulit untuk dijelaskan dengan akal sehat. cukup tau…!

Fort Marlborough

long time no see you Fort Marlborough🙂 almost for 10 years i guess.

when i was mudik (going back to my city, the city where i was born), i’m to be a guide for my friend Jimmi and his family. i walk surround my city, Bengkulu. Bengkulu is not too large than my other city, Bogor. but i love this city very much. i go to Panjang BeachFort Marlborough, Soekarno’s house (a house when Soekarno was throw to Bengkulu) and some place to culinary🙂

unfortunately i just take some picture about Fort Marlborough, no picture when i visited Soekarno’s house :(  ok, let’s we start.

Fort Marlborought

Fort Marlborough

main gate inside

main gate inside

Photo0494

main gate outside

Photo0493

another side of fort

Photo0491

the fort surrounded by civil house

Photo0488

inside the fort

Photo0478

inside the fort

Photo0475

inside the fort

Photo0476

Indonesian Ocean view from the fort side

Photo0474

inside the fort

Photo0473

inside the fort

Photo0472

Jimmi’s family

Photo0471

inside the fort

Photo0470

Indonesian Ocean view from the fort side

Photo0482

main gate view from inside

Photo0487

information board

Photo0486

timeline board about all over fort in Indonesia

Photo0477

the window

Photo0485

bullet of meriam

Photo0484

meriam

Photo0483

meriam

Photo0481

Jimmi with his camera

Photo0479

meriam