MyControlLampu memanfaatkan Jaringan menggunakan Java

MyControlLampu adalah sebuah aplikasi untuk mengoperasikan rangkaian elektronik menggunakan komputer. Aplikasi ini sebenernya adalah aplikasi saya ketika saya duduk di kelas 3 dalam mata diklat Pemrograman Antarmuka.Aplikasi ini menceritakan bagaimana mematikan dan menyalakan lampu melalui komputer.Disini saya menggunakan port paralel sebagai media penghubung antara rangkaian elektronik dan komputer nya dan Java sebagai bahasa pemrogramannya.Tak hanya itu juga, di aplikasi ini kita dapat mengoperasikan lampu di dalam jaringan.Seperti contoh , rangkaian lampu saya hubungkan dengan komputer di ruang A,tetapi saya mengoperasikan lampu tersebut di komputer ruang B.

Di aplikasi ini juga,saya menggunakan UsuLibrary milik mas Eko Kurniawan Khannedy agar tampilan aplikasi menjadi lebih menarik. . .he3x^^v

Berikut cara2 membuat aplikasi MyControlLampu :

1.Install jdk-6u11-windows-i586-p , dapat di unduh di http://java.sun.com/

2. Install netbeans-6.5-ml-windows ,dapat diunduh di http://java.sun.com/

3. Membuat rangkaian LED

  1. Untuk membuat rangkaian dibutuhkan komponen-komponen seperti berikut :
  • Lampu Led sebanyak 8 buah
  • Konektor LPT / Kabel LPT
  • Resistor 470 ohm
  • PCB berlubang
  1. Kemudian rangkai seperti gambar berikut seperti berikut :

4. Membuat Project Kevin_Interface

  1. Pada Netbeans,kilikl FileNew Projects
  2. Pilih Java pada Categoris dan Java Application pada Projects
  3. Ketikkan Kevin_Interface pada Project Name.Klik tombol Finish.
  1. Kemudian buka folder bantuan kemudian klik kanan pada folder template lalu pilih copy..kemudian klik kanan pada package Kevin_Interface,kemudian pilih paste
  1. Kemudian akan muncul package baru bernama Kevin_Interface.template yang masih ada error nya..agar error nya hilang,klik kanan pada Libraries,kemudian pilih Add JAR/Folder..kemudian buka kembali folder bantuan,kemudian pilih lib,lalu pilih TimingFramework-1.0.jar dan UsuLibrary.jar
  1. Kemudian pilih RunClean and Bulid Main Project atau tekan Shift+F11
  2. Kemudian buka folder bantuan kemudian klik kanan pada folder resource lalu pilih copy..kemudian klik kanan pada package Kevin_Interface,kemudian pilih paste..

Maka akan muncul package baru bernama Kevin_Interface.resource

  1. Kemudian buka folder bantuan kemudian klik kanan pada folder jnpout32 lalu pilih copy..kemudian klik kanan pada package Kevin_Interface,kemudian pilih paste..

Maka akan muncul package baru bernama Kevin_Interface. jnpout32

  1. Kemudian pilih RunClean and Bulid Main Project atau tekan Shift+F11

4.1 Membuat LogIn

Form ini berfungsi saat aplikasi dijalankan , maka form LogIn lah yang pertama kali akan muncul.

  1. Klik kanan pada package Kevin_Interface ,kemudian pilih NewJava Package
  1. Kemudian ganti newpackage menjadi program,kemudian akan muncul package baru yang bernama Kevin_Interface.program
  1. Kemudian klik kanan pada Kevin_Interface.program pilih NewJframeForm .. Beri nama LogIn,maka akan muncul form kosong..
  1. Drag file PanelBlackGreen pada Kevin_Interface.template ke dalam form LogIn
  1. Sehingga muncul kotak berwarna biru , kemudian klik kanan pada form yang kosong , kemudian pilih Set LayoutBorder Layout .Maka background akan berwarna biru
  2. Kemudian masukkan komponen Label ,Drag file Label pada Kevin_Interface.template ke dalam form LogIn..Kemudian klik kanan pada label1 pilih Edit Text .. Ganti menjadi MyControlLampu
  1. MasukkanLabel kemudian ganti namanya menjadi UserName

Kemudian masukkan komponen TextBox ,drag file TextBox ke dalam form LogIn kemudian klik kanan pada TextBox tersebut lalu pilih ChangeVariable Name ..Lalu ganti menjadi txtUser

  1. MasukkanLabel kemudian ganti namanya menjadi Password

Kemudian masukkan komponen PasswordBox,drag file PasswordBox ke dalam form LogIn kemudian klik kanan pada PasswordBox tersebut lalu pilih ChangeVariable Name ..Lalu ganti menjadi txtPassword

  1. Kemudian masukkan komponen Button,drag file Button ke dalam form LogIn..Ganti text tersebut menjadi Masuk kemudian klik kanan pada Buttontersebut lalu pilih ChangeVariable Name ..Lalu ganti menjadi btnMasuk ..
  2. Kemudian masukkan komponen Button,drag file Button ke dalam form LogIn..Ganti text tersebut menjadi Reset kemudian klik kanan pada Buttontersebut lalu pilih ChangeVariable Name ..Lalu ganti menjadi btnReset..
  3. Kemudian masukkan komponen Button,drag file Button ke dalam form LogIn..Ganti text tersebut menjadi Tentang kemudian klik kanan pada Buttontersebut lalu pilih ChangeVariable Name ..Lalu ganti menjadi btnAbout..Klik kanan pada tombol Tentang,lalu pilih Properties , kemudian akan muncul kotak dialog..
  1. Kemudian pilih Icon klik tombol di sebelah Combo Box..Pada package pilih Kevin_Interface.resource , pada file pilih Pics1.png
  2. Kemudian klik OK lalu klik Close
  3. Kemudian masukkan komponen Label,drag file Label ke dalam form LogIn..Ganti text tersebut menjadi kosong kemudian klik kanan pada label tersebut ,lalu pilih Properties , pilih IconReflec lalu masukkan gambar author.png
  1. Kemudian pilih source
  1. Pada keyword extends ubah javax.swing.JFrame menjadi Form implements DocumentListener
  2. Maka akan muncul lampu,klik lampu tersebut lalu pilih Add import for usu.widget.Form ,Add import for javax.swing.event.DocumentListener , Implements all abstract method

  1. Pada constructor LogIn tambahkan code berikut.

setAnimationHide(usu.widget.constan.Animation.HIDE_TO_RIGHT);

//saat program ditutup,program akan bergerak dari tengah ke kanan

setAnimationShow(usu.widget.constan.Animation.SHOW_FROM_LEFT);

//saat program dijalankan,program akan bergerak dari kiri ke tengah

txtUser.requestFocus();

//saat program dijalankan,program akan txtUser akan mendapatkan focus

  1. Kemudian tambahkan kode berikut .

private void cekUser() {

if ((txtUser.getText().equals(“arsenal_asep@yahoo.co.id”)) &     (txtPassword.getText().equals(“KevinRenataOctavian”))) {

Menu menu = new Menu();

this.dispose();

menu.setVisible(true);

menu.setLocationRelativeTo(null);

} else {

txtUser.setText(“”);

txtPassword.setText(“”);

txtUser.requestFocus();

}

}

private void aboutActionPerformed(java.awt.event.ActionEvent evt) {

((GlassPane) getGlassPane()).hideComponent();

}

  1. Klik kanan pada tombol Masuk kemudian pilih EventActionactionPerformed[btnMasukActionPerformed]
  1. Kemudian tambahkan code berikut .

cekUser();

  1. Klik kanan pada tombol Tentang kemudian pilih EventActionactionPerformed[btnMasukActionPerformed]

((GlassPane) getGlassPane()).showComponent(about);

  1. Klik kanan About pada Kevin_Interface.program kemudian pilih copy.
  1. Kemudian Klik kanan Other Components pada menu Inspector.
  1. Kemudian klik kanan pada about1[about],pilih Change Variable Name .Beri nama about.
  1. Klik kanan kembali pada about[about],pilih properties.Kemudian ganti tab nya menjadi Events.Klik actionPerformed.Kemudian akan mucul kotak dialog seperti di bawah ini.
  1. Tekan tombol Add.Kemudian tuliskan aboutExit .Tekan OK lalu Close.
  2. Kemudian akan muncul method private void aboutExit(java.awt.event.ActionEvent evt).Kemudian tambahkan kode berikut ini

((GlassPane) getGlassPane()).hideComponent();

  1. Kemudian klik kanan kembali pada Others Component dalam menu Inspector.Kemudian pilih Add From PaletteBeansChoose Bean
  1. Masukkan usu.widget.GlassPane ,maka akan muncul glasspane1[GlassPane].
  2. Klik kanan glassPane1[GlassPane] pada menu Inspector ,pilih Change Variable Name.Beri nama glassPane
  3. Klik kanan glassPane1[GlassPane] pada menu Inspector ,pilih Set LayoutFlow Layout
  4. Klik kanan glassPane1[GlassPane] pada menu Inspector ,pilih properties . Ganti tab nya menjadi Code.Lalu pilih Pre-Init Code.Lalu isi setGlassPane(glassPane);

4.2 Membuat About

Form ini digunkan saat tombol Tentang pada form LogIn ditekan , maka form ini lah yang akan muncul.

  1. Sama seperti di atas buat frame baru pada package Kevin_Interface.program ,beri nama About .
  2. Buat form seperti gambar di bawah ini.
Label1
Label3
Label2
  1. Pada button Close beri nama variable buttonClose.
  2. Agar penulisan dapat ditengah,pada label1 .Isi text nya sebagai berikut :

<html><center>Bagi yang berminat bagaimana cara<br> pembuatannya,silahkan hubungi <br>ke email yang tertera di bawah ini..<br>Terimakasih.. </center></html>

  1. Pada label2 .Isi text nya sebagai berikut : Kevin Renata Octavian
  2. Agar penulisan dapat ditengah,pada label3 .Isi text nya sebagai berikut :

<html><center> MyControlProgram<br>Copyright 2009 <u>arsenal_asep@yahoo.co.id</u><br> All Rights Reserved</center> </html>

  1. Buka Source,dan kemudian tambahkan kode berikut :

public void removeActionListener(ActionListener l) {

buttonClose.removeActionListener(l);

}

public void addActionListener(ActionListener l) {

buttonClose.addActionListener(l);

}

  1. Kembali lagi ke desain form , klik kanan pada label3 .Pilih EventsMouseMouseClicked[label3MouseClicked].Masukkan kode berikut :

if (Desktop.isDesktopSupported()) {//ketika di klik langsung minta kirim email

try {

desktop = Desktop.getDesktop();

desktop.mail(new URI(“mailto:arsenal_asep@yahoo.co.id”));

} catch (IOException ex) {

} catch (URISyntaxException ex) {

}

}

  1. Klik kanan pada label3 .Pilih EventsMouseMouseEntered[label3MouseEntered].Masukkan kode berikut :

setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));//mengubah kursor

  1. Klik kanan pada label3 .Pilih EventsMouseMouseExited[label3MouseExited].Masukkan kode berikut :

setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));//mengembalikan lagi kursor

4.3 Membuat Home

  1. Klik kanan pada package Kevin_Interface.program .Pilih NewJava Package .Beri nama support .Maka akan muncul package baru Kevin_Interface.program.support .
  1. Klik kanan pada package Kevin_Interface.program.support lalu pilih NewJPanel .Kemudian beri nama Home .
  2. Sama seperti di atas ,sekarang tambahkan komponen button , tetapi agar lebih menarik , pilih komponen ButtonImageReflection , caranya yaitu drag file ButtonImageReflection ke dalam form Home.Kemudian klik kanan pada button tersebut beri nama Konfigurasi dan beri nama variable btnSettings.Kemudian klik kanan pada button konfigurasi lalu pilih PropertiesIcon .Pilih controlpanel.png
  3. Sekarang , tambahkan kembali button dari ButtonImageReflection.Beri nama button tersebut Lampu ,dan beri nama variable button tersebut btnLampu .Kemudian beri icon author.png
  4. Kemudian klik kanan di form yang masih kosong.Pilih Set LayoutGrid Bag Layout
  5. Kemudian pilih source , kemudian tambahkan kode sebagai berikut :

public ButtonImageReflection getButtonSettings() {

return btnSettings;

}

public ButtonImageReflection getButtonLampu() {

return btnLampu;

}

Ketika method ini dipanggil , maka akan mengembalikan nilai object button.

4.4 Membuat Lampu

  1. Klik kanan pada package Kevin_Interface.program.support lalu pilih NewJPanel .Kemudian beri nama Lampu .
  2. Desain form seperti gambar di bawah ini.
btnUbah
txtAngka
btnAnimasi
Label9
Label2

Keterangan :

Komponen Nama Variabel Text Icon
label label2 lampu_off.png
Label label3 lampu_off.png
Label label4 lampu_off.png
Label label5 lampu_off.png
Label label6 lampu_off.png
Label label7 lampu_off.png
Label label8 lampu_off.png
Label label9 lampu_off.png
button btnUbah Ubah
text box txtAngka
ButtonImageReflection btnAnimasi Jalankan animasi lampu Refresh.png
  1. Kemudian pilih source,lalu tambahkan variable-variabel berikut :

public int Nlampu[] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; //kondisi lampu

String Nil, greeting; //pesan pada client(greeting)

public static int OL = 0,  OFF = 1; //kondisi computer offline atau online

static short pin; //pin pada port paralel

public static int value = 1,  delay = 1000;//waktu perpindahan lampu sewaktu animasi(delay)

public static pPort lpt;

static ServerSocket ss;

static Socket s;

static PrintWriter pw;

kemudian tambahkan method-method berikut :

serverBuka berfungsi untuk mengaktifkan server

public static void serverBuka() throws IOException {

ss = new ServerSocket(2002);

Menu.setTitleBody(“Menunggu client..”);

JOptionPane.showMessageDialog(null, “Menunggu Client..”, “Server dijalankan”, JOptionPane.INFORMATION_MESSAGE);

//        System.out.println(“Menunggu Klien…”);

s = ss.accept();

System.out.println(“Klien telah masuk”);

JOptionPane.showMessageDialog(null, “Client telah ditemukan..”, “Server dijalankan”, JOptionPane.INFORMATION_MESSAGE);

Menu.setTitleBody(null);

System.out.println(“Server pada port = ” +

s.getLocalAddress().getHostAddress() + ” : ” + s.getLocalPort());

System.out.println(“Client pada port = ” +

s.getInetAddress().getHostAddress() + ” : ” + s.getPort());

pw = new PrintWriter(s.getOutputStream(), true);

}

serverTutup berfungsi untuk mematikan server

public static void serverTutup() throws IOException {

pw.close();

s.close();

ss.close();

}

method cekLampu berfungsi untuk merubah lampu jika di klik.

private void cekLampu(int x) {

if (Nlampu[x] == 0) {

try {

ubahGambar(x);   //memanggil method ubahGambar

Nlampu[x] = 1;  //inisialisasi

if (OFF == 1) {

lpt.setPin((short) x, (short) Nlampu[x]); // lampu pada pin x akan nyala

}

if (OL == 1) {

kirimdata((short) x, (short) Nlampu[x]); //memanggil method kirimData

}

} catch (IllegalArgumentException ed) {

}

} else {

try {

balikinGambar(x); //memanggil method balikinGambar

Nlampu[x] = 0; //inisalisasi

if (OFF == 1) {

lpt.setPin((short) x, (short) Nlampu[x]);//lampu pada pin x akan mati

}

if (OL == 1) {

kirimdata((short) x, (short) Nlampu[x]);//memanggil method kirimData

}

} catch (IllegalArgumentException ed) {

}

}

}

Method ubahGambar berfungsi sebagai mengubah gambar dari lampu_off menjadi lampu_on

private void ubahGambar(int x) {

String gambar = “/kevin_interface/resource/lampu_on.png”;

switch (x) {

case 2:

lampu2.setIconReflec(new javax.swing.ImageIcon(getClass().getResource(gambar)));

break; //mengubah ikon menjadi lampu_on

case 3:

lampu3.setIconReflec(new javax.swing.ImageIcon(getClass().getResource(gambar)));

break;

case 4:

lampu4.setIconReflec(new javax.swing.ImageIcon(getClass().getResource(gambar)));

break;

case 5:

lampu5.setIconReflec(new javax.swing.ImageIcon(getClass().getResource(gambar)));

break;

case 6:

lampu6.setIconReflec(new javax.swing.ImageIcon(getClass().getResource(gambar)));

break;

case 7:

lampu7.setIconReflec(new javax.swing.ImageIcon(getClass().getResource(gambar)));

break;

case 8:

lampu8.setIconReflec(new javax.swing.ImageIcon(getClass().getResource(gambar)));

break;

case 9:

lampu9.setIconReflec(new javax.swing.ImageIcon(getClass().getResource(gambar)));

break;

default:

JOptionPane.showMessageDialog(this, “ERROR”);

break;

}

}

Method balikinGambar berfungsi untuk merubah gambar menjadi lampu_off

private void balikinGambar(int x) {

String gambar = “/kevin_interface/resource/lampu_off.png”;

switch (x) {

case 2:

lampu2.setIconReflec(new javax.swing.ImageIcon(getClass().getResource(gambar)));

break;

case 3:

lampu3.setIconReflec(new javax.swing.ImageIcon(getClass().getResource(gambar)));

break;

case 4:

lampu4.setIconReflec(new javax.swing.ImageIcon(getClass().getResource(gambar)));

break;

case 5:

lampu5.setIconReflec(new javax.swing.ImageIcon(getClass().getResource(gambar)));

break;

case 6:

lampu6.setIconReflec(new javax.swing.ImageIcon(getClass().getResource(gambar)));

break;

case 7:

lampu7.setIconReflec(new javax.swing.ImageIcon(getClass().getResource(gambar)));

break;

case 8:

lampu8.setIconReflec(new javax.swing.ImageIcon(getClass().getResource(gambar)));

break;

case 9:

lampu9.setIconReflec(new javax.swing.ImageIcon(getClass().getResource(gambar)));

break;

default:

JOptionPane.showMessageDialog(this, “ERROR”);//akan memunculkan kotak dialog

break;

}

}

Method kirimData berfungsi untuk mengirim data ke client

private void kirimdata(short pin, short value) {

greeting = String.valueOf(pin) + “,” + String.valueOf(value);//inisialisasi

pw.println(greeting);//pesan greeting di kirim

}

  1. Pada label2,klik kanan kemudian pilih EventsMousemouseClickes[lampu2MouseClicked]
  1. Kemudian tuliskan cekLampu(2);

private void lampu2MouseClicked(java.awt.event.MouseEvent evt) {

cekLampu(2);

}

  1. Pada label3,klik kanan kemudian pilih EventsMousemouseClickes[lampu3MouseClicked]
  2. Kemudian tuliskan cekLampu(3);

private void lampu3MouseClicked(java.awt.event.MouseEvent evt) {

cekLampu(3);

}

  1. Lakukan tersebut secara berurutan hingga label9
  2. Kemudian tambahkan method berikut

Method ubah berfungsi untuk merubah bilangan decimal menjadi biner

private void ubah() {

dataBitts();//memanggil method dataBitts()

reset();//memanggil method reset

try {

int x = Integer.valueOf(txtAngka.getText());//inisialisasi

dataBitts();//memanggil method

if ((x >= 0) & (x <= 255)) {

if (OFF == 1) {

lpt.setAllDataBits((short) x);//lampu akan menyala sesuai nilai x

}

if (OL == 1) {

kirimdata((short) 1, (short) x);//memanggil method

}

Nil = Integer.toBinaryString(x);//inisialisai Nil

cekGambar(Nil);//mengubah gambar

System.out.println(Integer.toBinaryString(x));

} else {

txtAngka.requestFocus();

}

} catch (NullPointerException ex) {

txtAngka.requestFocus();

} catch (NumberFormatException lp) {

txtAngka.requestFocus();

}

}

dataBitts berfungsi menyalakan / mematikan semua lampu

private void dataBitts() {

if (value == 0) {

if (OFF == 1) {

lpt.setAllDataBits((short) 0x00);

}

if (OL == 1) {

kirimdata((short) 1, (short) 0);

}

} else {

if (OFF == 1) {

lpt.setAllDataBits((short) 0xff);

}

if (OL == 1) {

kirimdata((short) 1, (short) 1);

}

}

}

reset() berfungsi untuk mengembalikan kembali Nlamp dan mengembalikkan kembali gambar

private void reset() {

for (int x = 2; x < Nlampu.length; x++) {

Nlampu[x] = 0;

balikinGambar(x);

}

}

cekGambar berfungsi untuk menyesuaikan gambar seperti nilai yang diinputkan

private void cekGambar(String Nil) {

char temp = ‘0’;

int ko = 2;

for (int x = (Nil.length() – 1); x >= 0; x–) {

temp = Nil.charAt(x);

if (temp == ‘0’) {

balikinGambar(ko);

} else {

ubahGambar(ko);

}

ko++;

}

}

  1. Pada txtAngka ,klik kanan..Pilih EventActionactionPerformed[txtAngkaPerformed]
  1. kemudian tuliskan ubah();

private void txtAngkaActionPerformed(java.awt.event.ActionEvent evt) {

ubah();

}

  1. sama seperti tadi,klik kanan pada btnUbah ,pilih Eventaction actionPerformed[btnUbahActionPerformed]

agar pada saat tombol enter ditekan,maka bilangan langsung diubah

  1. 13. tambahkan kode berikut :

private void btnUbahActionPerformed(java.awt.event.ActionEvent evt) {

ubah();

}

  1. kemudian klik kanan kembali ,pilih eventkey keyType[txtAngkaKeyType]
  2. tambahkan sintaks berikut :

//memanipulasi agar yang bisa diinputkan hanya bilangan saja

private void txtAngkaKeyTyped(java.awt.event.KeyEvent evt) {

if (!Character.isDigit(evt.getKeyChar())) {

evt.consume();

}

}

  1. Sama seperti tadi,sekarang klik kanan pada tombol btnAnimasi pilih eventactionbtnAnimasi[btnAnimasiActionPerformed]

private void btnAnimasiActionPerformed(java.awt.event.ActionEvent evt) {

animasi();

}

  1. method animasi berfungsi untuk melacak animasi yang akan ditampilkan

private void animasi() {

int ko = (int) (Math.random() * 4);//melacak nilai dari 0 – 4

System.out.println(ko);

dataBitts(); //memanggil method dataBitts

switch (ko) {

case 0:

animasi4();//memanggil animasi ke 4

break;

case 1:

animasi1();//memanggil animasi ke 1

break;

case 2:

animasi2();//memanggil animasi ke 2

break;

case 3:

animasi3();//memanggil animasi ke 3

break;

default:

animasi4();//memanggil animasi ke 4

break;

}

}

private void animasi4() {

dataBitts();

for (int k = 2; k < 4; k++) {

for (int x = 3; x < 9; x++) {

Nlampu[x] = value;

cekLampu(x);

try {

Thread.sleep(delay);

} catch (InterruptedException op) {

}

cekLampu(x);

try {

Thread.sleep(delay);

} catch (InterruptedException op) {

}

}

dataBitts();

for (int x = 9; x > 1; x–) {

cekLampu(x);

try {

Thread.sleep(delay);

} catch (InterruptedException op) {

}

cekLampu(x);

try {

Thread.sleep(delay);

} catch (InterruptedException op) {

}

cekLampu(x);

}

}

}

private void animasi1() {

for (int k = 0; k < 5; k++) {

for (int x = 2; x < 10; x++) {

Nlampu[x] = value;

cekLampu(x);

try {

Thread.sleep(delay);

} catch (InterruptedException op) {

}

}

for (int x = 9; x > 1; x–) {

Nlampu[x] = value;

cekLampu(x);

try {

Thread.sleep(delay);

} catch (InterruptedException op) {

}

dataBitts();

try {

Thread.sleep(delay);

} catch (InterruptedException op) {

}

cekLampu(x);

try {

Thread.sleep(delay);

} catch (InterruptedException op) {

}

}

}

}

private void animasi2() {

for (int k = 0; k < 2; k++) {

for (int x = 9; x > 1; x–) {

dataBitts();

Nlampu[x] = value;

cekLampu(x);

try {

Thread.sleep(delay);

} catch (InterruptedException op) {

}

if (x != 9) {

cekLampu(x + 1);

}

}

}

}

private void animasi3() {

int a = 5;

for (int k = 0; k < 2; k++) {

for (int x = 5; x > 1; x–) {

++a;

dataBitts();

Nlampu[x] = value;

cekLampu(x);

cekLampu(a);

try {

Thread.sleep(delay);

} catch (InterruptedException op) {

}

}

for (int x = 2; x < 6; x++) {

–a;

Nlampu[x] = value;

cekLampu(x);

cekLampu(a);

try {

Thread.sleep(delay);

} catch (InterruptedException op) {

}

}

}

}

4.5 Membuat Settings

Form ini berfungsi untuk mengatur jalannya lampu..

  1. Klik kanan pada Kevin_Interface.program.support ,pilih NewJpanel ,kemudian beri nama Settings.
  2. Desain form seperti gambar di bawah ini .
radioBtnHidup
radioBtnClient
radioBtnMati
txtSpeed
radioBtnKomp
btnSimpan

Keterangan :

Komponen Variabel Name Text
Radio Button radioBtnKomp Komputer ini
Radio Button radioBtnClient Komputer orang lain
Radio Button radioBtnMati Mati
Radio Button radioBtnHidup Menyala
Button btnSimpan Simpan
Text Box txtSpeed 1000
  1. Masukkan button group , caranya klik kanan pada form yang kosong , kemudian pilih Add From PaletteSwing ControlButton Group
  1. Pada menu Inspector , pilih Other Components , klik kanan pada buttonGroup1[ButtonGroup].Kemudian pilih Change variable name ,ganti menjadi btnKondisiLampu
  1. Kemudian blok radioBtnMati dan radioBtnHidup ,kemudian klik kanan lalu pilih Properties
  1. Lalu pada buttonGruop , pilih btnKondisiLampu
  1. Kemudian pilih Source lalu tambahkan variable berikut.

private int lampStat = 0,  tempOL = 0,  tempOFF = 1,  server = 0;

  1. Kemudian tambahkan kode berikut pada constructor Settings

radioBtnKomp.setSelected(true);

radioBtnHidup.setSelected(true);

sintaks berikut berfungsi agar saat form ditampilkan , maka radio button Hidup dan Komputer ini telah terpilih.

  1. Klik kanan pada button Simpan , lalu pilih EventsActionactionPerformed[btnSimpan ActionPerformed] . Tambahkan script berikut :

if (lampStat == 0) {

Lampu.value = 0; //mengubah nilai pada variable value pada class lampu menjadi 0

}

if (lampStat == 1) {

Lampu.value = 1;

}

if (tempOL == 0) {

Lampu.OL = 0;

if (server == 1) {

try {

Lampu.serverTutup();

} catch (IOException op) {

}

server=0;

}

}

if (tempOL == 1) {

server=1;

Lampu.OL = 1;

Lampu.lpt = new pPort();

try {

Lampu.serverBuka(); //memanggil method serverBuka pada class Lampu

} catch (IOException op) {

}

}

if (tempOFF == 1) {

Lampu.OFF = 1;

}

if (tempOFF == 0) {

Lampu.OFF = 0;

}

if (txtSpeed.getText().equals(“”)) {

} else {

Lampu.delay = Integer.parseInt(txtSpeed.getText());

}

  1. Klik kanan pada radio button Komputer ini , pilih EventsActionactionPerformed[radioBtnKompActionPerformed]
  2. Tambahkan script berikut :

if (tempOFF == 1) {

tempOFF = 0;

} else {

tempOFF = 1;

}

  1. Klik kanan pada radio button Komputer orang lain , pilih EventsActionactionPerformed[radioBtnClientActionPerformed]
  2. Tambahkan script berikut :

if (tempOL == 1) {

tempOL = 0;

} else {

tempOL = 1;

}

  1. Klik kanan pada radio button Mati , pilih EventsActionactionPerformed[radioBtnMatiActionPerformed]
  2. Tambahkan script berikut :

lampStat = 0;

  1. Klik kanan pada radio button Menyala , pilih EventsActionactionPerformed[radioBtnHidupActionPerformed]
  2. Tambahkan script berikut :

lampStat = 1;

4.6 Membuat Menu

  1. Klik kanan pada package Kevin_Interface.program , pilih NewJFrameForm .Beri nama Menu
  2. Desain form sesuai tampilan di bawah ini..
labelTitleBody
  1. Beri nama MyControlLampu kemudian beri nama variable labelTitleBody
  2. Kemudian drag ToolbarBlackGreen pada Kevin_Interface.template ke dalam form Menu.Letakkan pada paling atas kemudian tambahkan button ,
  1. Beri variable nama pada button btnMenu kemudian ganti text nya menjadi Menu .Beri gambar icon nya Home 2.png
  2. Kemudian klik kanan di sembarang tempat , kemudian pilih Add Form Palette Swing ContainersPanel.
  1. Kemudian klik kanan pada panel tersebut kemudian pilih Set LayoutCard Layout.Maka gambar panel akan menghilang..
  2. Pada Menu Insepector , klik kanan pada jPanel1 ,kemudian Change Variable Name .Ganti menjadi panelTengah.
  1. Kemudian perbesar ukuran panel dengan cara arahkan kursor  kepada lingkaran yang berwarna merah.Maka hasilnya akan tampil seperti berikut .
  1. Kemudian klik kanan pada panel .Pilih properties Opaque . Ubah menjadi false (jangan di ceklis) . Maka panel tersebut akan menjadi transparan
  1. Pada Menu Insepector , klik kanan pada panelBlackGreen1,kemudian Change Variable Name .Ganti menjadi panelUtama.
  2. Drag file Settings pada Kevin_Interface.program.support ke dalam panel panelTengah . Sehingga file tersebut ada di dalam panel.
  3. Kemudian pada menu Inspector , klik kanan pada settings1[settings] .Ganti namanya menjadi settings
  1. Pada Menu Insepector , klik kanan pada settings kemudian pilih properties – Opaque. Kemudian ganti menjadi false (jangan di ceklis)
  1. Kemudian ubah Card Name nya menjadi settings
  1. Maka desain layout form akan tampil sebagai berikut .
  1. Kemudian drag file Lampu pada Kevin_Interface.program.support ke dalam panel panelTengah. Sehingga file tersebut ada di dalam panel.
  2. Kemudian pada menu Inspector , klik kanan pada lampu1[Lampu] .Ganti namanya menjadi settings
  3. Pada Menu Insepector , klik kanan pada lampu[Lampu] kemudian pilih properties – Opaque. Kemudian ganti menjadi false (jangan di ceklis)
  1. Kemudian ubah Card Name nya menjadi lampu
  2. Kemudian drag file Home pada Kevin_Interface.program.support ke dalam panel panelTengah. Sehingga file tersebut ada di dalam panel.
  3. Kemudian pada menu Inspector , klik kanan pada home1[Home] .Ganti namanya menjadi home
  4. Pada Menu Insepector , klik kanan pada home[Home] kemudian pilih properties – Opaque. Kemudian ganti menjadi false (jangan di ceklis)
  1. Kemudian ubah Card Name nya menjadi home
  2. Kemudian pilih Source ,kemudian tambahkan kode berikut .

public void showPanel(JPanel panel, String card) { //mengganti panel

if (panel.isVisible()) {

return;

} else {

showTransition(panelUtama);

((CardLayout) panelTengah.getLayout()).show(panelTengah, card);

}

}

private void showTransition(JComponent com) {

try {

((GlassPane) getGlassPane()).startTransition(com);

} catch (AWTException ex) {

}

}

public static void setTitleBody(String title) {

if (title == null) {

labelTitleBody.setText(“MyControlLampu”);

} else {

labelTitleBody.setText(“MyControlLampu – ” + title);

}

}

private void Actions() {

home.getButtonLampu().addActionListener(new ActionListener() { //tombol lampu ditekan

public void actionPerformed(ActionEvent e) {

showPanel(lampu, “lampu”);

setTitleBody(“Lampu”);

Lampu.lpt = new pPort(); //bikin object

}

});

home.getButtonSettings().addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent e) {

showPanel(settings, “settings”);

setTitleBody(“Konfigurasi”);

}

});

settings.getButtonSimpan().addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent e) {

btnMenuActionPerformed(e);

}

});

}

  1. Pada keyword extends , ganti javax.swing.JFrame menjadi Form .Kemudian klik lampu tersebut kemudian pilih Add import for usu.widget.Form
  1. Pada Konstruktor Menu tambahkan kode berikut .

Actions();

setAnimationHide(usu.widget.constan.Animation.HIDE_TO_BOTTOM); //saat program   //ditutup maka program akan bergerak ke bawah

setAnimationShow(usu.widget.constan.Animation.SHOW_FROM_TOP);

//saat program dibuka maka program akan muncul dari atas

  1. Klik kanan pada tombol Menu ,kemudian pilih EventActionactionPerformed[btnMenuActionPerformed]
  1. Tambahkan kode berikut .

showPanel(home, “home”);

setTitleBody(null);

  1. Kemudian klik kanan kembali pada Others Component dalam menu Inspector.Kemudian pilih Add From PaletteBeansChoose Bean
  1. Masukkan usu.widget.GlassPane ,maka akan muncul glasspane1[GlassPane].
  2. Klik kanan glassPane1[GlassPane] pada menu Inspector ,pilih Change Variable Name.Beri nama glassPane
  3. Klik kanan glassPane1[GlassPane] pada menu Inspector ,pilih Set LayoutFlow Layout
  4. Klik kanan glassPane1[GlassPane] pada menu Inspector ,pilih properties . Ganti tab nya menjadi Code.Lalu pilih Pre-Init Code.Lalu isi setGlassPane(glassPane);

4.7 Menjalankan Kevin_Interface

  1. Hubungkan rangkaian lampu dengan komputer.
  2. Copy kan jnpout32pkg.dll pada folder bantuan  ke C:\WINDOWS\system32 .
  3. Kembali lagi ke Netbeans .Kemudian buka Main pada package Kevin_Interface .Kemudian pada method main tambahkan kode berikut .

LogIn log=new LogIn();

log.setLocationRelativeTo(null);

log.setVisible(true);

  1. Klik lampu kemudian pilih Add import for Kevin_Interface.program.LogIn
  2. Kemudian pilih Menu RunRun Main Project.
  3. Ketika program dijalankan , masukkan username arsenal_asep@yahoo.co.id dan password nya KevinRenataOctavian.

5. Membuat Client_Kevin_Interface

  1. Pada Netbeans,kilikl FileNew Projects
  2. Pilih Java pada Categoris dan Java Application pada Projects
  3. Ketikkan Client_Kevin_Interface pada Project Name.Klik tombol Finish.
  1. Kemudian buka folder bantuan kemudian klik kanan pada folder template lalu pilih copy..kemudian klik kanan pada package Client_Kevin_Interface,kemudian pilih paste
  1. Kemudian akan muncul package baru bernama Client_Kevin_Interface.template yang masih ada error nya..agar error nya hilang,klik kanan pada Libraries,kemudian pilih Add JAR/Folder..kemudian buka kembali folder bantuan,kemudian pilih lib,lalu pilih TimingFramework-1.0.jar dan MyLibrary.jar
  1. Kemudian pilih RunClean and Bulid Main Project atau tekan Shift+F11
  2. Kemudian buka folder bantuan kemudian klik kanan pada folder resource lalu pilih copy..kemudian klik kanan pada package Client_Kevin_Interface,kemudian pilih paste..

Maka akan muncul package baru bernama Client_Kevin_Interface.resource

  1. Kemudian buka folder bantuan kemudian klik kanan pada folder jnpout32 lalu pilih copy..kemudian klik kanan pada package Client_Kevin_Interface,kemudian pilih paste..

Maka akan muncul package baru bernama Client_Kevin_Interface. jnpout32

  1. Kemudian pilih RunClean and Bulid Main Project atau tekan Shift+F11

5.1 Membuat LogIn

  1. Klik kanan pada package Client_Kevin_Interface ,kemudian pilih NewJava Package
  2. Kemudian ganti newpackage menjadi program,kemudian akan muncul package baru yang bernama Client_Kevin_Interface.program
labelUser
  1. txtUser

    Kemudian klik kanan pada Client_Kevin_Interface.program pilih NewJframeForm .. Beri nama LogIn,maka akan muncul form kosong.

  1. Desain form seperti gambar di bawah ini.
labelPassword
labelIP
btnReset
btnKoneksi
txtIP
btnMasuk
txtPassword

Keterangan :

Komponen Variabel Name Text
Label labelUser UserName
Text Box txtUser
Label labelPassword Password
Text Box txtPassword
Button btnMasuk Masuk
Button btnReset Reset
Label labelIP Masukkan IP Server
Text Box txtIP 127.0.0.1
Button btnKoneksi Koneksi
  1. Kemudian pilih source
  1. Tambahkan variable berikut

public static String IPServer = “”,  file = src/client_kevin_interface/program/support/setip.kevin”,  greeting = “”;

pPort lpt;

  1. Pada keyword extends ubah javax.swing.JFrame menjadi Form implements DocumentListener

Maka akan muncul lampu,klik lampu tersebut lalu pilih Add import for usu.widget.Form ,Add import for javax.swing.event.DocumentListener , Implements all abstract method

  1. Pada constructor LogIn tambahkan kode berikut

txtIP.setVisible(false); //text box tidak akan ditampilkan

labelIP.setVisible(false);//label tidak akan ditampilkan

btnKoneksi.setVisible(false); //button tidak akan ditampilkan

lpt = new pPort(); //bikin object

setAnimationHide(usu.widget.constan.Animation.HIDE_TO_RIGHT);

setAnimationShow(usu.widget.constan.Animation.SHOW_FROM_LEFT);

  1. Tambahkan method-method berikut.

private void koneksiServer() {

try {

Socket s = new Socket(IPServer, 2002);

((GlassPane) getGlassPane()).showComponent(about);

System.out.println(“Komunikasi terhubung”);

System.out.println(“Client pada port = ” +

s.getLocalAddress().getHostAddress() + ” : ” + s.getLocalPort());

System.out.println(“Server pada port = ” +

s.getInetAddress().getHostAddress() + ” : ” + s.getPort());

BufferedReader br = new BufferedReader(new InputStreamReader(s.getInputStream()));

System.out.println(“Menunggu pesan…”);

while ((greeting = br.readLine()) != null) {

System.out.println(greeting);

nyalainLampu(greeting);

}

System.out.println(“Selesai”);

br.close();

s.close();

} catch (Exception e) {

JOptionPane.showMessageDialog(null, “Server mati!”, “Server mati”, JOptionPane.WARNING_MESSAGE);

}

}

private void nyalainLampu(String greeting) {

String temp[];

temp = greeting.split(“,”);

int pin, value;

pin = Integer.parseInt(temp[0]);

value = Integer.parseInt(temp[1]);

if (pin == 1) {

lpt.setAllDataBits((short) value);

} else {

lpt.setPin((short) pin, (short) value);

}

}

  1. Kembali lagi ke desain form.Klik kanan pada button Masuk ,pilih EventActionactionPerformed[btnMasukActionPerformed].Kemudian tambahkan code berikut ini .

if ((txtUser.getText().equals(“arsenal_asep@yahoo.co.id”)) & (txtPassword.getText().equals(“ClientKevin”))) {

txtIP.setVisible(true);

txtIP.setText(IPServer);

labelIP.setVisible(true);

btnKoneksi.setVisible(true);

labelUser.setVisible(false);

labelPassword.setVisible(false);

txtUser.setVisible(false);

txtPassword.setVisible(false);

btnMasuk.setVisible(false);

btnReset.setVisible(false);

txtIP.setText(“127.0.0.1”);

} else {

txtPassword.setText(“”);

txtUser.setText(“”);

txtUser.requestFocus();

}

  1. Klik kanan pada button Reset ,pilih EventActionactionPerformed[btnResetActionPerformed].Kemudian tambahkan code berikut ini .

txtPassword.setText(“”);

txtUser.setText(“”);

txtUser.requestFocus()

  1. Klik kanan pada button Koneksi ,pilih EventActionactionPerformed[btnKoneksiActionPerformed].Kemudian tambahkan code berikut ini .

IPServer = txtIP.getText();

koneksiServer();

5.2 Menjalankan program

  1. Copy kan jnpout32pkg.dll pada folder bantuan  ke C:\WINDOWS\system32 .
  2. Buka Main pada package Client_Kevin_Interface .Kemudian pada method main tambahkan kode berikut .

LogIn log=new LogIn();

log.setLocationRelativeTo(null);

log.setVisible(true);

  1. Klik lampu kemudian pilih Add import for Client_Kevin_Interface.program.LogIn
  2. Kemudian pilih Menu RunRun Main Project.

5.3 Menjalankan Client_Kevin_Interface

  1. Pada komputer server copy kan jnpout32pkg.dll pada folder bantuan  ke C:\WINDOWS\system32 .
  2. Jalankan program Kevin_Interface pada komputer server. Masukkan username arsenal_asep@yahoo.co.id dan password nya KevinRenataOctavian
  3. Kemudian pilih Konfigurasi.Kemudian pilih Komputer orang lain,klik Simpan.
  1. Maka akan muncul kotak dialog Menunggu Client dan program tidak bisa digunakan.
  1. Ketika program sedang menunggu, pada komputer client copy kan jnpout32pkg.dll pada folder bantuan  ke C:\WINDOWS\system32 .
  2. Hubungkan rangkaian lampu ke komputer client
  3. Jalankan program Client_Kevin_Interface pada komputer client.
  4. Ketika program berjalan , masukkan username arsenal_asep@yahoo.co.id dan password nya ClientKevin
  5. Kemudian masukkan IP Server nya,kemudian tekan tombol Koneksi.Apabila salah,maka akan muncul Server mati,karna tidak ada server dengan IP sekian.Apabila benar,maka program tidak bisa digunakan.
  1. Kemudian pada program Kevin_Interface pada komputer server akan muncul kotak dialog Client telah ditemukan . Dan aplikasi siap dijalankan.
  2. Apa yang anda input pada komputer server maka lampu pada komputer client akan berjalan.
  3. Selain itu,program ini pun dapat mengatur 2 rangkaian lampu sekaligus.Rangkaian lampu yang terhubung pada komputer server dan rangkaian lampu yang terhubung pada komputer client.Dengan cara pada menu konfigurasi pilih dua-duanya.

untuk source code dan library dapat di unduh disini http://www.4shared.com/file/WBLz6oUP/MyControlLampu.html .

sumber ilmu :

http://eecchhoo.wordpress.com/

http://cahyawan.net/2009/05/25/parallel-port-interfacing-with-java/

http://www.hytherion.com/beattidp/

http://cahyawan.net/2009/06/15/running-led-dengan-java/

Advertisements
MyControlLampu memanfaatkan Jaringan menggunakan Java

One thought on “MyControlLampu memanfaatkan Jaringan menggunakan Java

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