LAPORAN TUGAS AKHIR PENGENDALIAN PERALATAN ELEKTRONIK PADA SERVER BERBASIS JARINGAN TCP/IP DAN JAVA™ 2
LAPORAN TUGAS AKHIR PENGENDALIAN PERALATAN ELEKTRONIK PADA SERVER BERBASIS JARINGAN TCP/IP DAN JAVA™ 2
Disusun Oleh: AHMAD SABIQ NIM Program Studi Jurusan Fakultas
: 01/146570/DPA/00850 : D3 ELINS : Fisika : MIPA
PROGRAM STUDI ELEKTRONIKA dan INSTRUMENTASI FAKULTAS MATEMATIKA dan ILMU PENGETAHUAN ALAM UNIVERSITAS GADJAH MADA YOGYAKARTA 2004
LAPORAN TUGAS AKHIR
PENGENDALIAN PERALATAN ELEKTRONIK PADA SERVER BERBASIS JARINGAN TCP/IP DAN JAVA™ 2
Diajukan Untuk Memenuhi Salah Satu Syarat Menyelesaikan Program Studi Diploma 3 (D3) Elektronika dan Instrumentasi (ELINS) Jurusan Fisika Fakultas Matematika dan Ilmu Pengetahuan Alam (MIPA) Universitas Gadjah Mada (UGM) Yogyakarta
Disusun Oleh:
AHMAD SABIQ 01/146570/DPA/00850
PROGRAM STUDI ELEKTRONIKA DAN INSTRUMENTASI FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM UNIVERSITAS GADJAH MADA YOGYAKARTA 2004
ii
HALAMAN PENGESAHAN LAPORAN TUGAS AKHIR
PENGENDALIAN PERALATAN ELEKTRONIK PADA SERVER BERBASIS JARINGAN TCP/IP DAN JAVA™ 2
Dipersiapkan dan disusun oleh: AHMAD SABIQ 0/146570/DPA/00850
Telah dipertahankan di depan dewan penguji pada hari, tanggal:
Kamis, 8 Juli 2004
Susunan Dewan Penguji
Dosen Penguji
Dosen Penguji
Drs. Tri Kuntoro Priyambodo, M.Sc.
Drs. Y. Suyanto, M.Kom.
NIP: 131 598 161
NIP: 131 789 398
Dosen Pembimbing
Dr. Ahmad Ashari, M.Kom. NIP: 131 898 309
iii
HALAMAN PERSEMBAHAN
KUPERSEMBAHKAN KARYA KECIL INI UNTUK:
AYAHANDA (Alm) DAN IBUNDA TERCINTA,
KAKAK-KAKAKU YANG SELALU MENDUKUNGKU,
SEMUA TEMAN DAN SAHABAT,
SERTA SESEORANG YANG SELALU ADA DIHATIKU.
iv
HALAMAN MOTTO
v
KATA PENGANTAR Puji syukur penulis haturkan kehadirat Allah SWT, yang berkat rahmat dan hidayah-Nya penulis dapat menyelesaikan tugas akhir beserta laporannya dengan baik. Laporan
Tugas
Akhir
ini
dibuat
sebagai
syarat
untuk
menyelesaikan studi di Program Diploma III Elektronika dan Instrumentasi (ELINS) Fakultas MIPA Universitas Gadjah Mada Jogyakarta. Penulis menyadari bahwa dalam penyusunan laporan hasil tugas akhir ini masih banyak kekurangan dan masih jauh dari kesempurnaan, baik isi materi maupun cara penyajiannya. Hal ini disebabkan keterbatasan pengetahuan, pengalaman, waktu dan kemampuan yang penulis miliki. Untuk itu masukan dan kritikan yang bersifat membangun sangat penulis harapkan. Penulis berharap laporan tugas akhir yang penulis buat ini dapat bermanfaat bagi kelangsungan pendidikan para Mahasiswa Universitas Gadjah Mada Jogjakarta, khususnya Mahasiswa Elektronika dan Instrumentasi, dan semoga dapat bermanfaat bagi para pembaca didalam menambah wawasan ilmu pengetahuan dan perkembangan teknologi di Indonesia pada umumnya. Laporan ini tersusun berkat dorongan, bimbingan, dan pengarahan dari berbagai pihak, maka dalam kesempatan ini penulis ingin mengucapkan terima kasih yang sebesar-besarnya kepada: 1. Bapak Dr. Ahmad Ashari M.Kom, selaku pembimbing tugas akhir yang telah membantu dan membimbing sehingga selesainya tugas akhir ini.
vi
2. Bapak Dr. Suharto., selaku Dosen Pembimbing yang telah memberikan bantuan dan bimbingannya dalam menempuh pendidikan pada Program Studi Diploma Elektronika dan Instrumentasi (ELINS) Universitas Gadjah Mada Jogjakarta. 3. Bapak Drs. Masiran M.Si., selaku Ketua Program Studi Diploma Elektronika dan Instrumentasi (ELINS) Universitas Gadjah Mada Jogjakarta. 4. Bapak Dr. Kamsul Abraha, selaku ketua jurusan Fisika Universitas Gadjah Mada Jogjakarta. 5. Bapak Prof. Subanar, selaku Dekan FMIPA UGM. 6. Ibunda dan Almarhum Ayahanda tercinta serta seluruh keluarga atas kasih sayang dan dorongan semangat. 7. Seluruh teman-teman di elins ’01 atas bantuan dan dukungannya dalam menyelesaikan studi dan tugas akhir ini. 8. Seluruh teman-teman di kost BRAHMANA atas bantuan, dorongan dan semangatnya. 9. Semua pihak yang telah membantu baik materiil maupun spiritual yang tidak dapat penulis sebutkan satu persatu. Akhir kata, penulis mengucapkan Terima Kasih atas segala bantuan dan partisipasinya dalam penyelesaian tugas akhir ini.
Jogjakarta, Juli - 2004
Penulis
vii
DAFTAR ISI
Halaman pengesahan
iii
Halaman Persembahan
iv
Halaman Motto
v
Kata Pengantar
vi
Daftar Isi
viii
Daftar Gambar
x
Daftar Tabel
xi
Daftar Lampiran
xii
Abstrak
xiii
BAB I Pendahuluan
1
1.1
Latar belakang Masalah
1
1.2
Maksud dan Tujuan
2
1.3
Batasan Masalah
3
1.4
Sistematika penulisan
3
BAB II Landasan Teori 2.1
2.2
2.3
5
Sistem Komputer dan Kanal Parallel
5
2.1.1 Sistem Komputer
5
2.1.2 Kanal Paralel Komputer
6
Jaringan TCP/IP
9
2.2.1 TCP(Transport Control Protocol)
11
2.2.2 UDP (User Datagram Protocol)
12
2.2.3 Port dan Socket
13
Bahasa Pemrograman Java
14
2.3.1 Java 2 Standard Development Kit (J2SDK)
15
2.3.1.1 Kompilator
16
2.3.1.2 Interpreter
17
viii
2.4
2.3.1.3 Applet Viewer
17
2.3.1.4 Java Debugger
18
2.3.1.5 Java Class File Disassembler
18
2.3.1.6 Java Header and Stub File Generator
19
2.3.1.7 Java Documentation Generator
19
Pemrograman Cleint Server dengan Java
20
2.4.1 Java Socket
20
2.4.2 Kelas Socket
21
2.4.3 Kelas ServerSocket
22
BAB III DESAIN DAN IMPLEMENTASI SISTEM
24
3.1
Desain Sistem
24
3.2
Implementasi Sistem
29
3.2.1 Implementasi Papan Pengendali Relay
29
3.2.2 Implementasi portParalel API
32
3.2.3 Implementasi Kelas Server
37
3.2.4 Implementasi Kelas Client
42
BAB IV PENGUJIAN DAN PEMBAHASAN
49
4.1
Pengujian
49
4.2
Pembahasan
56
BAB V PENUTUP
58
5.1
Kesimpulan
58
5.2
Saran
59
Daftar Pustaka
60
Halaman Lampiran
61
ix
DAFTAR GAMBAR Gambar 2.1 Struktur sistem komputer
6
Gambar 2.2 Posisi pin-pin kanal paralel pada konektor DB25 7 Gambar 2.3 Struktur layer TCP/IP
10
Gambar 2.4 Datagram TCP 12 Gambar 2.5 Datagram UDP 13 Gambar 3.1 Skema sistem Mars Rover
24
Gambar 3.2 Skema rancangan sistem pengendalian peralatan elektronik jarak jauh
25
Gambar 3.3 Diagram alir pertukaran data antara client, server dan papan pengendali relay
26
Gambar 3.4 Diagram alir kelas server
28
Gambar 3.5 Diagram alir kelas client
28
Gambar 3.6 Tampilan program Eagle 4.029r2
29
Gambar 3.7 Skema rangkaian yang dibuat melalui Eagle
31
Gambar 3.8 Layout PCB yang dihasilkan dari Eagle
31
Gambar 3.9 Papan pengendali Relay
32
Gambar 4.1 Penyambungan peralatan elektronik dengan relay 49 Gambar 4.2 Tampilan applet saat terhubung ke server 52 Gambar 4.3 Tampilan applet setelah mengirimkan perintah ke server 53 Gambar 4.4 Tampilan client pertama setelah ada client lain yang
x
terhubung ke server 55 Gambar 4.5 Tampilan client kedua yang telah mematikan semua line 55
DAFTAR TABEL Tabel 2.1 Alamat-alamat dasar kanal paralel
8
Tabel 2.2 Konfigurasi kanal paralel
9
Tabel 4.1 Hasil pengujian pada papan pengendali relay
51
xi
DAFTAR LAMPIRAN
Data Sheet LM78xx
62
Data Sheet ULN2803, ULN2804
68
File portParalel.java
74
Diagram UML portParalel.java
76
File portParalel.h
77
File parport.c
78
Dokumentasi API parport.portParalel
79
File server.java
82
Diagram UML server.java
87
File client.java
88
Diagram UML client.java
95
File tea.html
96
xii
ABSTRAK
Pada tugas akhir ini telah dibuat sebuah sistem pengendalian peralatan elektronik berbasis jaringan TCP/IP dengan bahasa Java. Sistem ini merupakan sistem pengendalian yang dapat diakses oleh komputer lain yang terhubung dengan server dengan hanya membutuhkan web browser yang mendukung plugin Java tanpa mensyaratkan platform tertentu. Terdapat beberapa perangkat yang dibuat dalam membangun sistem ini, yaitu papan pengendali relay, API portParalel, program server dan program applet client. Papan pengendali relay yang dibuat terdiri dari 8 buah relay yang dapat dikendalikan dengan mengirimkan nilai byte melalui kanal data dari LPT atau kanal paralel. API yang dibuat berfungsi untuk mengakses perangkat keras dengan menggunakan fungsi native java, yaitu dengan membuatkan header c dari kelas portParalel.java untuk kemudian dibuatkan library dengan bahasa c untuk mengakses kanal paralel yang dimuat oleh kelas portParalel. Pada program server dibuatkan dua buah kelas yaitu kelas controlServer yang akan dieksekusi oleh sebuah thread untuk melayani perintah-perintah dari setiap koneksi yang terbentuk dengan client secara terpisah dan kelas utama (main()) yang akan menunggu koneksi dari client yang masuk, ketika koneksi dengan client terbentuk kelas utama akan menjalankan thread dari kelas controlServer dengan memberikan socket koneksinya. Dalam program applet client dibuatkan metodemetode untuk membuat tampilan grafis berupa applet, melakukan koneksi soket ke server, mengirimkan perintah ke server dan menjalankan thread untuk menerima setiap informasi dari server, program applet ini ditanamkan pada sebuah file html. Selain itu digunakan progam httpd server agar file html yang
xiii
mengandung program applet client dapat didownload dan dijalankan dari web browser komputer client. Sistem pengendalian jarak jauh ini dapat diakses oleh beberapa komputer sekaligus yang terhubung dengan komputer server tanpa batasan jumlah client. Jika ada perintah dari salah satu client, maka client yang lain dan server akan dapat mengetahui aksi yang dilakukan oleh client tersebut.
xiv
LAPORAN TUGAS AKHIR PENGENDALIAN PERALATAN ELEKTRONIK PADA SERVER BERBASIS JARINGAN TCP/IP DAN JAVA™ 2
BAB I PENDAHULUAN
1.1 LATAR BELAKANG MASALAH Inovasi perkembangan dalam dunia teknologi dewasa ini berkembang dengan sangat cepat dan selaras sesuai dengan perkembangan karakteristik masyarakat modern yang memiliki mobilitas tinggi dan membutuhkan sarana yang fleksibel, mudah dan memuaskan serta mengedepankan prinsip efisiensi dari segala aspek. Disamping itu perkembangan teknologi informasi dan internet dari hari ke hari berkembang semakin cepat, hal ini juga didukung adanya bahasa pemrograman tingkat tinggi yang berorientasi objek, multiplatform, dan sangat canggih terutama dalam hal pemrograman jaringan dan internet, yaitu bahasa pemrograman Java, dan yang lebih penting lagi compiler bahasa pemrograman ini bisa didapatkan secara gratis secara legal. Perkembangan ini memicu juga berkembangnya teknologi-teknologi baru yang memanfaatkan teknologi tersebut sebagai media untuk mewujudkan impian untuk mewujudkan teknologi yang diinginkan. Salah satu teknologi yang diinginkan adalah suatu sistem yang dapat melakukan pengoperasian suatu peralatan elektronik dari tempat lain yang sangat jauh tanpa harus berada pada tempat tersebut dengan memanfaatkan teknologi internet, ide pembuatan sistem tersebut terinspirasi dari hasil tugas akhir Antonius
1
LAPORAN TUGAS AKHIR PENGENDALIAN PERALATAN ELEKTRONIK PADA SERVER BERBASIS JARINGAN TCP/IP DAN JAVA™ 2
2
Aditya Hartanto pada jurusan teknik elektro ITB tahun 1999 dengan judul “Pengendalian Robot Jarak Jauh Berbasis Ineternet Menggunakan Teknologi Java” (Hartanto, 2001). Dimana pada sistem ini, seseorang yang ingin mengendalikan suatu peralatan elektronik tidak harus berada pada tempat tersebut, orang tersebut cukup berada didepan komputer yang terhubung dengan jaringan internet dan membuka web-browser internetnya tanpa harus menginstall program untuk mengendalikan peralatan tersebut, lalu menuju kealamat website server tempat program client yang dapat mengakses server untuk mengendalikan alat terebut berada.
1.2 MAKSUD DAN TUJUAN Adapun maksud dan tujuan dari pembuatan tugas akhir dengan judul “PENGENDALIAN
PERALATAN
ELEKTRONIK
PADA
SERVER
BERBASIS JARINGAN TCP/IP DAN JAVA™ 2”ini adalah sebagai berikut : a) Membuat suatu perangkat keras untuk mengendalikan 8 buah relay yang dapat dioperasikan lewat komputer melalui kanal parallel. b) Memahami konsep pengendalian suatu peralatan yang dihubungkan melalui PC terutama melalui kanal paralel dengan menggunakan bahasa Java. c) Memahami konsep dan teknik-teknik bahasa perograman Java, terutama dalam pemrograman untuk mengakses perangkat keras yang dikendalikan dan permograman client server berbasis koneksi socket.
BAB I - PENDAHULUAN
LAPORAN TUGAS AKHIR PENGENDALIAN PERALATAN ELEKTRONIK PADA SERVER BERBASIS JARINGAN TCP/IP DAN JAVA™ 2
3
1.3 BATASAN MASALAH Pembuatan tugas akhir dan laporan tugas akhir ini dibatasi pada bagaimana cara membuat suatu sistem pengendalian perangkat elektronik melalui kanal paralel yang dapat diakses melalui sistem komputer lain yang terhubung dengan server melalui jaringan TCP/IP, dimana dalam tugas akhir ini penulis lebih memfokuskan pada bagaimana cara pembuatan perangkat lunaknya dengan menggunakan bahasa pemrograman Java.
1.4 SISTEMATIKA PENULISAN Dalam penyusunan laporan ini digunakan sistematika penulisan laporan yang dapat diuraikan sebagai berikut : BAB I : Pendahuluan. Berisi beberapa hal yang melatar belakangi pembuatan tugas akhir, juga berisi penjelasan mengenai maksud dan tujuan pembuatan tugas akhir ini Selain itu dijelaskan batasan permasalahan agar pembahasan menjadi lebih terarah dan tentang sistematika penulisan. BAB II : Landasan Teori. Berisi tentang landasan teori yang akan membahas mengenai aspek hardware dan software serta sarana pendukung lainnya yang dipakai dalam pembuatan tugas akhir. BAB III : Desain dan Implementasi Sistem. Berisi tentang rancangan sistem, baik itu perangkat keras maupun perangkat lunak yang dipergunakan untuk membentuk system pengendali jarak jauh serta implementasi dari sistem yang dirancang tersebut.
BAB I - PENDAHULUAN
LAPORAN TUGAS AKHIR PENGENDALIAN PERALATAN ELEKTRONIK PADA SERVER BERBASIS JARINGAN TCP/IP DAN JAVA™ 2
4
BAB IV : Pengujian dan Pembahasan. Berisi tentang cara pengoperasian sistem pada tugas akhir, hasil pengujian dari percobaan serta pembasannya. BAB V : Penutup. Berisi tentang kesimpulan dari percobaan yang telah dilaksanakan dan saran-saran untuk perbaikan dan pengembangan sistem yang telah dibuat pada tugas akhir ini.
BAB I - PENDAHULUAN
LAPORAN TUGAS AKHIR PENGENDALIAN PERALATAN ELEKTRONIK PADA SERVER BERBASIS JARINGAN TCP/IP DAN JAVA™ 2
BAB II LANDASAN TEORI
2.1 SISTEM KOMPUTER DAN KANAL PARALEL 2.1.1 Sistem Komputer Komputer berasal dari bahasa latin, yaitu computare yang mempunyai arti menghitung (Wahono, 2003). Karena luasnya bidang pekerjaan pada ilmu komputer, para pakar dan peneliti sedikit berbeda dalam mendefinisikan termininologi komputer. Menurut V. Carl Hamacher komputer adalah mesin penghitung elektronik yang cepat dan dapat menerima informasi masukan digital, kemudian memprosesnya sesuai dengan program yang tersimpan di memorinya, dan menghasilkan output berupa informasi (Hamacher dkk, 2001). Robert H. Blissmer menyatakan bahwa komputer adalah suatu perangkat elektonik yang memiliki kemampuan melakukan beberapa tugas sebagai berikut (Blissmer, 1985): a) Menerima input b) Memproses input tadi sesuai dengan programnya c) Menyimpan perintah-perintah dan hasil dari pengolahan d) Menyediakan output dalam bentuk informasi Sedangkan W. M. Fuori berpendapat bahwa komputer adalah suatu pemroses data yang dapat melakukan perhitungan besar secara cepat, termasuk
5
LAPORAN TUGAS AKHIR PENGENDALIAN PERALATAN ELEKTRONIK PADA SERVER BERBASIS JARINGAN TCP/IP DAN JAVA™ 2
6
perhitungan aritmetika dan operasi logika, tanpa campur tangan manusia (Fouri, 1981) Untuk mewujudkan konsepsi komputer sebagai pengolah data untuk menghasilkan suatu informasi, maka diperlukan sistem komputer (computer system) yang elemennya terdiri dari hardware dan software. Kedua elemen sistem komputer tersebut harus saling berhubungan dan membentuk kesatuan. Hardware tidak akan berfungsi apabila tanpa software, demikian juga sebaliknya. Struktur komputer didefinisikan sebagai cara-cara dari tiap komponen saling terkait. Struktur sebuah komputer secara sederhana, dapat digambarkan dalam diagram blok pada gambar 2.1. DATA BUS
INPUT DEVICE
CPU I/O PORTS
CONTROL BUS
OUTPUT DEVICE
MEMORY CONTROL
CU + ALU
BUS
RAM ROM
ADDRESS BUS
Gambar 2.1 Struktur sistem komputer (Sudirman, 2003)
2.1.2 Kanal Paralel Komputer Kanal paralel pada komputer merupakan sarana masukan/keluaran komputer untuk berhubungan dengan printer, sehingga kanal paralel sering juga disebut sebagai printer port. Kanal paralel terdiri dari 25 pin dengan 4 pin sebagai kanal status, 4 pin sebagai kanal kontrol, 8 pin sebagai kanal data dan sisanya adalah ground.
BAB II – LANDASAN TEORI
LAPORAN TUGAS AKHIR PENGENDALIAN PERALATAN ELEKTRONIK PADA SERVER BERBASIS JARINGAN TCP/IP DAN JAVA™ 2
7
Untuk melakukan pencetakan sebuah data oleh printer melalui kanal paralel, sebuah software yang digunakan harus dapat melakukan beberapa hal di bawah ini : a) Menuliskan byte-byte data yang akan dicetak ke port data. b) Memeriksa apakah printer sedang digunakan (bussy) atau tidak, jika printer dalam keadaan bussy maka kanal data tidak akan menerima data, sehingga data yang akan ditulis sebelumnya akan hilang. c) Pada saat strobe (pin-1) dalam keadaan 0 (low), berarti printer mendapat informasi bahwa di datalines (pin 2-9) ada data yang akan dicetak. d) Setelah 5 mikrodetik, strobe diset 1 (high). Umumnya saat ini kanal paralel telah mempunyai kemampuan bidirectional (2 arah), sehingga dapat mengirim dan menerima sinyal melalui kanal data. Kemampuan ini sangat berguna untuk melakukan hubungan atau komunikasi dengan perangkat lain, yang tentunya mempunyai antarmuka yang bersifat paralel. Gambar 2.2 menunjukan susunan pin-pin kanal paralel pada konektor DB25. 13 25 12 24 11 23 10 22 9 21 8 20 7 19 6 18 5 17 4 16 3 15 2 14 1
Gambar 2.2 Posisi pin-pin kanal paralel pada konektor DB25
BAB II – LANDASAN TEORI
LAPORAN TUGAS AKHIR PENGENDALIAN PERALATAN ELEKTRONIK PADA SERVER BERBASIS JARINGAN TCP/IP DAN JAVA™ 2
8
Kanal paralel umumnya memiliki tiga alamat dasar yang bisa digunakan, sebagaimana ditunjukkan pada tabel 2.1. Alamat dasar 3BCh pertama kali diperkenalkan sebagai alamat kanal paralel pada kartu-kartu video lama. Alamat ini kemudian sempat menghilang saat kanal paralel dicabut dari kartukartu video. Sekarang muncul kembali sebagai pilihan untuk kanal paralel yang terpadu dengan motherboard, yang mana konfigurasinya dapat diubah melalui BIOS (Peacock, 2001). Tabel 2.1. Alamat-alamat dasar kanal paralel (Peacock, 2001) Alamat
Keterangan Digunakan untuk Kanal Paralel yang terpadu
3BCh –3BFh
dengan kartu-kartu video, tidak mendukung alamat-alamat ECP.
378h –37Fh
Biasa digunakan untuk LPT1
278h –27Fh
Biasa digunakan untuk LPT2
LPT1 biasanya memiliki alamat dasar 378h, sedangkan LPT2 adalah 278h. Ini adalah alamat umum yang bisa dijumpai, namun alamat-alamat dasar ini bisa berlainan antara satu komputer dengan komputer lainnya. Saat pertama kali komputer dihidupkan, BIOS (Basic Input/Outsput System) akan menentukan jumlah kanal yang dimiliki dan diberi label LPT1, LPT2 dan LPT3. Tabel 2.2 menunjukan konfigurasi pin-pin kanal paralel beserta register dan arah dari masing-masing pin. Penggunaan “n” didepan nama sinyal artinya sinyal aktif rendah (active low), misalnya nError, jika pencetak memberikan sinyal kesalahan maka jalur ini akan rendah (logika 0), normalnya
BAB II – LANDASAN TEORI
LAPORAN TUGAS AKHIR PENGENDALIAN PERALATAN ELEKTRONIK PADA SERVER BERBASIS JARINGAN TCP/IP DAN JAVA™ 2
9
jalur ini dalam kondisi tinggi (logika 1), artinya pencetak berfungsi sebagaimana mestinya. Tabel 2.2 Konfigurasi kanal paralel (Peacock, 2001) Pin (DB- 25) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 - 25
SPP Signal nStrobe Data 0 Data 1 Data 2 Data 3 Data 4 Data 5 Data 6 Data 7 nAck Busy Paper-Out / Paper-End Select nAuto-Linefeed nError / nFault nInitialize nSelect-Printer / nSelect-In Ground
Arah In/out In/Out Out Out Out Out Out Out Out Out In In In In In/Out In In/Out In/Out
Register Control Data Data Data Data Data Data Data Data Status Status Status Status Control Status Control Control
Gnd
2.2 JARINGAN TCP/IP Protokol TCP/IP merupakan protokol yang paling banyak digunakan oleh para pengguna internet di seluruh dunia. Dengan menggunakan protokol yang sama, sistem apapun yang terhubung dengannya dapat saling berkomunikasi tanpa perlu memperhatikan bagaimana remote sistem tersebut bekerja. TCP/IP terdiri atas sekumpulan protokol yang masing-masing bartanggung jawab atas bagian-bagian tertentu dari komunikasi data. Berkat
BAB II – LANDASAN TEORI
LAPORAN TUGAS AKHIR PENGENDALIAN PERALATAN ELEKTRONIK PADA SERVER BERBASIS JARINGAN TCP/IP DAN JAVA™ 2
10
prinsip ini, tugas masing-masing protokol menjadi jelas dan sederhana. Protokol yang satu tidak perlu mengetahui cara kerja protokol yang lain, sepanjang ia masih bisa saling mengirim dan menerima data (Purbo dkk, 2002). Application Layer (SMTP, FTP, HTTP, dll) Transport Layer (TCP, UDP) Internet Layer (IP, ICMP, ARP)
TCP/IP STACK
Network Interface Layer (ethernet, X25, SLIP, PPP)
JARINGAN FISIK
Gambar 2.3 Struktur layer TCP/IP (Purbo dkk, 2002) Sekumpulan protokol TCP/IP ini dimodelkan dengan empat layer TCP/IP yang bertingkat, sebagaimana terlihat pada gambar 2.3. Kempat lapis/layer tersebut adalah (Purbo dkk, 2002): a) Network Interface Layer b) Internet Layer c) Transport Layer d) Application Layer Lapisan/Layer terbawah yaitu Network Interface layer, lapisan ini bertanggung jawab untuk mengirim dan menerima data ke dan dari media fisik, yang dapat berupa kabel, serat optik, atau gelombang radio. Karena tugasnya ini, protokol pada layer ini harus dapat menerjemahkan sinyal listrik menjadi data digital yang dapat dimengerti komputer ataupun sebaliknya.
BAB II – LANDASAN TEORI
LAPORAN TUGAS AKHIR PENGENDALIAN PERALATAN ELEKTRONIK PADA SERVER BERBASIS JARINGAN TCP/IP DAN JAVA™ 2
11
Lapisan berikutnya adalah Internet Layer. Protokol yang berada pada layer ini bertanggung jawab dalam proses pengiriman paket ke alamat yang tepat. Pada layer ini terdapat tiga macam protokol, yaitu IP. ARP, dan ICMP. IP (Internet Protokol) berfungsi untuk menyampaikan paket data ke alamat yang tepat. ARP (Address Resolution Protocol) ialah protokol yang digunakan untuk menemukan alamat hardware dari host/komputer yang terletak pada network yang sama. Sedangkan ICMP (Internet Control Message Protokol) ialah protokol yang digunakan untuk mengirimkan pesan dan melaporkan kegagalan pengiriman data. Layer berikutnya yaitu Transport Layer, layer ini berisi protokol yang bertanggung jawab untuk mengadakan komunikasi antara dua host/komputer. Kedua protokol tersebut ialah TCP (Transmission Control Protocol) dan UDP (User Datagram Protocol). Dan layer teratas ialah Application Layer. Pada layer inilah terletak semua aplikasi yang menggunakan protokol TCP/IP ini
2.2.1 TCP (Transport Control Protocol) Susunan protokol TCP digambarkan pada gambar 2.4, protokol ini memiliki mekanisme Positive Acknowledgement with Re-Transmission, yang akan memastikan tidak adanya segment-segment yang hilang, disamping mekanismemekanisme lainnya seperti flow control, error detection, dan error recovery. TCP akan memperoleh positive acknowledgement dari host penerima jika segment yang dikirimkannya telah diterima dengan baik. Sebaliknya, jika ada masalah
BAB II – LANDASAN TEORI
LAPORAN TUGAS AKHIR PENGENDALIAN PERALATAN ELEKTRONIK PADA SERVER BERBASIS JARINGAN TCP/IP DAN JAVA™ 2
12
dengan segment yang diterima (tidak diterima/error), maka TCP akan mendapatkan pesan error dari peer-nya, sehingga TCP dapat mengirimkan kembali segment yang bermasalah tersebut. 4
12
16
Source Port
1 words
8
20
24
Sequence Number
3
Acknowledgement Number
5
Offset
Reserved
Flags
Checksum
Window Urgent Pointer
Options
6
31
Destination Port
2 4
28
Header
0
Padding Data....
Gambar 2.4 Datagram TCP (Purbo dkk, 2000)
TCP juga disebut stream oriented protocol. Karena dari Application Layer, data yang dikirim dan diterima berbentuk stream, output stream dan input stream(Purbo dkk, 2000).
2.2.2 UDP (User Datagram Protocol) Susunan protokol UDP digambarkan pada gambar 2.5, berbeda dengan TCP, UDP merupakan protokol transport yang bersifat connectionless. Dalam UDP tidak ada sequencing (pengurutan kembali) paket yang datang, acknowledgement terhadap paket yang datang, atau retransmisi jika paket mengalami gangguan ditengah jalan, akibatnya protokol yang diatasnya tidak pernah mengetahui sampai tidaknya paket yang dikirimkannya ke tujuan. Namun terkadang ada aplikasi yang tidak membutuhkan keamanan data seketat TCP. Pada aplikasi yang lebih mementingkan pengantaran pesan
BAB II – LANDASAN TEORI
LAPORAN TUGAS AKHIR PENGENDALIAN PERALATAN ELEKTRONIK PADA SERVER BERBASIS JARINGAN TCP/IP DAN JAVA™ 2
13
sesegera mungkin daripada akurasi, akan lebih cocok menggunakan protokol UDP. 0
4
8
12
16
20
24
28
Source Port
Destination Port
Length
Checksum
31
Data....
Gambar 2.5 Datagram UDP (Purbo dkk, 2000)
2.2.3 Port dan Socket Pada paket yang dikirim melalui protokol transport, baik TCP maupun UDP terdapat field destination port (dan juga source port). Field destination port digunakan oleh transport layer (pada host penerima) untuk memutuskan ke aplikasi mana data itu harus dikirimkan. Nilai port bisa bernilai antara 1 hingga 65535. Nilai field destination address pada IP Datagram dimanfaatkan dalam pengantaraan data menuju suatu host. Kemudian data naik ke transport layer, diterima oleh TCP dalam bentuk TCP segment. Internet protokol mengetahui bahwa ia harus mengirim ke protokol TCP berdasarkan nilai field destination port. Dengan informasi destination port itu, TCP mengetahui bahwa ia harus meneruskan data ke suatu aplikasi yang mendengarkan di port tersebut. Kombinasi antara port dan IP address disebut socket. Socket dikatakan sebagai endpoint dari komunikasi dua arah antar aplikasi (Purbo dkk, 2000).
BAB II – LANDASAN TEORI
LAPORAN TUGAS AKHIR PENGENDALIAN PERALATAN ELEKTRONIK PADA SERVER BERBASIS JARINGAN TCP/IP DAN JAVA™ 2
14
2.3 BAHASA PEMROGRAMAN JAVA Bahasa Java merupakan salah satu bahasa pemrogaman akhir abad 20, diciptakan Sun Microsistem pada 1995-an. Bahasa Java adalah bahasa modern yang telah diterima masyarakat komputasi dunia. Hampir semua perusahaan perangkat lunak dan komputer besar bersatu mendukung dan mengembangkan sistem berbasis Java. Pemilihan bahasa Java karena aplikasi tidak mensyaratkan platform tertentu sehingga aplikasi akan dapat dijalankan di platform manapun yang sangat beragam. Bahasa
Java
dirancang
dengan
mengumpulkan
kemampuan-
kemampuan penting bahasa-bahasa pemrograman sebelumnya yang pernah ada didunia. Bahasa Java adalah kompilasi hampir seluruh kemampuan terbaik bahasa-bahasa pemrograman karya manusia, yaitu (Hariyanto, 2003): a)
Meminjam gagasan pemrograman berorientasi objek yang sebenarnya telah bermula di bahasa Simula tahun 1967-an. Pada bahasa Java, kelas menjadi bentukan terpenting dalam membangun dan mengembangkan kemampuan-kemampuan bahasa untuk membuat sangat beragam aplikasi mulai aplikasi mandiri, applet di web browser, multithreading, aplikasi jaringan, aplikasi tersebar, servlet di web server dan sebagainya. Seluruhnya dikemas sebagai kelas. Perluasan kemampuan dilakukan dengan pembuatan kelas baru secara spesifik.
b)
Meminjam struktur kendali ampuh bahasa C, yaitu paduan struktur teratur Pascal, Ada dan Algol ditambah kendali transfer eksekusi seperti break, continue, return, structure loop ampuh C/C++ dan sebagainya.
c)
Meminjam strongly-type bahasa Ada yang handal dalam aplikasi kritis.
BAB II – LANDASAN TEORI
LAPORAN TUGAS AKHIR PENGENDALIAN PERALATAN ELEKTRONIK PADA SERVER BERBASIS JARINGAN TCP/IP DAN JAVA™ 2
d)
15
Meminjam gagasan interface bahasa Objective-C untuk penanganan multiple inheritance dan pemisahan total implementasi dan antarmuka sehingga benar-benar meniadakan ketergantungan implementasi dan antarmuka secara total.
e)
Meminjam penanganan exception handling di C++ dan Ada.
f)
Meminjam sangat banyak sintaks dan semantiks C++, namun secara berarti menyederhanakannya
sehingga
mempermudah
pemrogram
serta
menghilangkan fasilitas-fasilitas yang redundan dan sering menimbulkan kesalahan pemakaian. g)
Meminjam penerapan gerbage collection di LISP yang meringankan beban pengelolaan aspek dinamis objek-objek sistem.
h)
Mengimplementasikan struktur modularitas moder pustaka bahasa yang dinyatakan kriterianya oleh Bertrand Meyer.
i)
Mengimplementasikan gagasan design-pattern dari Gang-of-Four (GoF) serta single-root object model di SmallTalk dalam pustaka kelas.
j)
Meminjam kemampuan-kemampuan dan gagasan-gagasan canggih di Simula, CLU, LISP, CLOS, SmallTalk, Pascal, Eiffel, C/C++, Objective-C dan bahasa-bahasa sebelumnya secara cerdas. Bahasa Java dapat menjadi bahasa untuk membuat aplikasi di
beragam komputer mulai dari di hand-held device seperti handphone menggunakan J2ME (Java 2 Micro Edition), menjadi aplikasi standard dengan J2SE (Java 2 Standard Edition), atau aplikasi dan back-end enterprise dengan J2EE (Java 2 Enterprise Edition).
BAB II – LANDASAN TEORI
LAPORAN TUGAS AKHIR PENGENDALIAN PERALATAN ELEKTRONIK PADA SERVER BERBASIS JARINGAN TCP/IP DAN JAVA™ 2
16
2.3.1 Java 2 Standard Development Kit (J2SDK) Java 2 Standard Development Kit (J2SDK) merupakan compiler standar yang berisi sekumpulan kakas baris perintah untuk membuat program berbasis
Java.
Rilis
terakhir
dari
J2SDK
dapat
di
download
dari
http://java.sun.com. Versi Java sendiri tersedia untuk berbagai platform, diantaranya Sun Solaris, Microsoft Windows, Linux, OS/2, Macintosh dan banyak lagi. J2SDK berisi sekumpulan tool, utilitas dan dokumentasi serta contoh kode applet untuk mengembangkan program Java. Berikut adalah daftar komponen utama J2SDK: 1. Kompilator (javac) 2. Interpreter program Java (java) 3. Penampil applet (appletviewer) 4. Debugger (jdb) 5. Class file disassembler (javap) 6. Header and stub file generator (javah) 7. Documentation generator (javadoc) 8. Applet demo 9. Kode sumber Java API
2.3.1.1 Kompilator Merupakan program javac untuk mengkompilasi file kode sumber Java menjadi kelas-kelas bytecode. File kode sumber mempunyai ekstensi .java. kompilator javac menghasilkan file bytecode kelas dengan ekstensi .class.
BAB II – LANDASAN TEORI
LAPORAN TUGAS AKHIR PENGENDALIAN PERALATAN ELEKTRONIK PADA SERVER BERBASIS JARINGAN TCP/IP DAN JAVA™ 2
17
Kompilator menciptakan suatu file .class untuk tiap kelas yang didefinisikan di file kode sumber. Dengan demikian dimungkinkan satu file kode sumber Java jika dikompilasi dapat menghasilkan banyak file .class. Sintaks untuk menggunakan kompilator adalah sebagai berikut : javac Option namaProgram.java
2.3.1.2 Interpreter Interpreter merupakan modul utama sistem Java yang digunakan aplikasi Java. Interpreter digunakan untuk menjalankan program bytecode Java. Interpreter bertindak sebagai peralatan baris perintah untuk menjalankan program Java non-grafis, program grafis memerlukan tampilan yang didukung oleh browser dan sistem operasi. Sintaks untu menggunakan interpreter adalah sebagai berikut : java options namaClass arguments
Argumen namaClass menspesifikasikan nama dari kelas yang ingin dieksekusi. Ketika interpreter mengeksekusi satu class, yang dilakukannya adalah mengeksekusi metode main() di kelas itu. Interpreter keluar ketika metode main() dan thread-thread yang diciptakan telah berakhir dieksekusi. Argumen options menspesifikasikan
options
yang
berhubungan
dengan
cara
interpreter
mengeksekusi program Java. 2.3.1.3 Applet Viewer Applet viewer adalah alat yang digunakan untuk pengujian Java applet secara minimal. Applet viewer dapat dijalankan dengan menggunakan baris perintah sebagai berikut :
BAB II – LANDASAN TEORI
LAPORAN TUGAS AKHIR PENGENDALIAN PERALATAN ELEKTRONIK PADA SERVER BERBASIS JARINGAN TCP/IP DAN JAVA™ 2
18
appletviewer options URL
Argumen options menspesifikasikan cara menjalankan Java applet. Hanya terdapat satu option yang didukung appletviewer – debug yang menyatakan menjalankan appletviewer di Java debugger yang memungkinkan debugging terhadap Java applet. Argumen URL menspesifikasikan dokumen URL berisi halaman HTML dengan menanamkan Java applet. 2.3.1.4 Java Debugger Java debugger (jdb) adalah sintaks baris perintah untuk melakukan debugging aplikasi Java. Sintaks untuk menjalankan Java debugger adalah sebagai berikut : jdb Options
Argumen option menspesifikasikan cara menjalankan jdb. 2.3.1.5 Java Class File Disassembler Java class disassembler (javap) digunakan untuk melakukan penguraian (disassemble) terhadap file .class. Keluaran default aktivitas disassemble adalah berisi daftar dari publik (public class) dan metode publik (public methode) di kelas. Class file disassembler berguna ketika kode sumber dari kelas tidak dimiliki. Dengan demikian data dan metode publik dapat diketahui sehingga kelas tersebut dapat digunakan. Sintaks untuk disassembler adalah sebagai berikut : javap options namaKelas
BAB II – LANDASAN TEORI
LAPORAN TUGAS AKHIR PENGENDALIAN PERALATAN ELEKTRONIK PADA SERVER BERBASIS JARINGAN TCP/IP DAN JAVA™ 2
19
Argumen options menspesifikasikan cara yang digunakan untuk disassemble. Argumen namaKelas menspesifikasikan nama satu kelas atau lebih yang akan didisassemble. 2.3.1.6 Java Header and Stub File Generator Java header and stub file generator (javah) adalah alat yang digunakan untuk menghasilkan C header dan file kode sumber untuk implementasi metode-metode Java dalam bahasa C. File-file yang dihasilkan dapat digunakan untuk mengakses variabel anggota objek yang ditulis dengan bahasa C. Java header and stub file generator menghasilkan struktur C dengan layout kelas Java. Sintaks untuk menggunakan Java header and stub file generator adalah sebagai berikut : javah options namaKelas
Argumen options menspesifikasikan cara file-file sumber dihasilkan. Argumen namaKelas adalah nama kelas yang perlu dihasilkan file-file sumber bahasa C. 2.3.1.7 Java Documentation Generator Java documentation generator (javadoc) adalah alat yang digunakan untuk menghasilkan dokumentasi API secara langsung dari kode sumber Java. Java documentation generator melakukan parsing file sumber Java dan menghasilkan halaman html berdasarkan deklarasi dan komentar. Sintaks untuk menggunakan Java documentation generator adalah sebagai berikut : javadoc option fileName
BAB II – LANDASAN TEORI
LAPORAN TUGAS AKHIR PENGENDALIAN PERALATAN ELEKTRONIK PADA SERVER BERBASIS JARINGAN TCP/IP DAN JAVA™ 2
20
2.4 PEMROGRAMAN CLIENT SERVER DENGAN JAVA Suatu model umum yang diterapkan pada pemrograman jaringan adalah model cleint/server. Sehingga secara umum jika mengembangkan suatu aplikasi yang berjalan pada jaringan, aplikasi tersebut dikenal dengan aplikasi client/server. Konsepnya sederhana, sebuah proses/aplikasi client melakukan permintaan untuk suatu informasi atau mengirim sebuah permintaan ke suatu aplikasi server. Aplikasi server akan menerima permintaan dari client, kemudian memproses berdasarkan permintaan tersebut, dan akan mengembalikan sesuatu ke client sebagai suatu hasil dari pemrosesan yang sudah dilakukan. Sehingga tugas dari server adalah melakukan listen untuk suatu koneksi, sedangkan client mencoba membuat koneksi ke server. Setelah koneksi terbentuk, hubungan pertukaran data antara client dan server diwakili dengan suatu stream input dan output (Susanto, 2003).
2.4.1 Java Socket Socket merupakan suatu abstraksi perangkat lunak yang digunakan sebagai suatu terminal dari suatu hubungan antara dua mesin atau proses yang saling
berinterkoneksi
(Susanto,
2003).
Di
setiap
mesin
yang
saling
berinterkoneksi, socket harus dipasang. Pada Java, socket dibutuhkan untuk membuat suatu hubungan ke mesin atau proses lain, baru kemudian didapatkan input stream dan output stream untuk pertukaran datanya. Terdapat dua buah kelas yang sudah tersedia pada Java
BAB II – LANDASAN TEORI
LAPORAN TUGAS AKHIR PENGENDALIAN PERALATAN ELEKTRONIK PADA SERVER BERBASIS JARINGAN TCP/IP DAN JAVA™ 2
yang
mendukung
java.net.ServerSocket
tipe
koneksi
Connectition-Oriented,
21
yaitu
yang digunakan server untuk mendengarkan koneksi
dan java.net.Socket yang digunakan oleh client untuk menginisialisasi koneksi. Setelah client membentuk suatu koneksi socket dengan server, serverSocket
akan mengembalikan status server ke client melalui koneksi yang
telah terbentuk sebelumnya. Java juga menyediakan suatu kelas yang mendukung tipe koneksi Connectionless, yaitu java.net.DatagramSocket. Selain itu dalam Java juga tersedia kelas yang berfungsi untuk mengambil informasi alamat IP suatu komputer. Kelas tersebut adalah java.net.InetAddress.
Kelas ini bersifat statis dan tidak memiliki constructor,
namun menyediakan beberapa fungsi yang dapat digunakan untuk mendapatkan alamat IP sesungguhnya, antara lain: a) Metode getByName(NamaHost), akan menerima sebuah string nama host dan mengembalikan alamat IP sesungguhnya. b) Metode getLocalHost(), akan mengembalikan informasi alamat IP dan nama host pada komputer lokal. Kedua method tersebut dapat dipanggil tanpa harus membuat instance objek dari kelas InetAddress.
2.4.2 Kelas Socket Kelas Socket adalah sebuah kelas yang dirancang sebagai wakil sebuah koneksi menggunakan protocol TCP. Ketika sebuah Socket dibuat, sebuah koneksi akan terbentuk kesuatu mesin atau proses yang dituju.
BAB II – LANDASAN TEORI
LAPORAN TUGAS AKHIR PENGENDALIAN PERALATAN ELEKTRONIK PADA SERVER BERBASIS JARINGAN TCP/IP DAN JAVA™ 2
22
Pada Java2, kelas Socket memiliki kurang lebih 8 buah constructor, empat diantaranya yang sering digunakan adalah : Socket(InetAddress address, int port);
Membuat sebuah stream socket
dan koneksi ke suatu nomor port pada sebuah komputer yang memiliki alamat IP. Socket(String host, int port);
Membuat sebuah stream socket dan juga
koneksi ke suatu port tertentu pada sebuah komputer berdasar namanya. Socket (InetAddress address, int port, InetAddress localaddr, int localPort); Socket
(String
host,
int
port,
InetAddress
localAddr,
int
lacalPort);
Membuat sebuah socket dan mengkoneksikannya ke port yang dituju pada alamat IP yang disebutkan pada parameter address atau nama host. Selain itu juga akan dilkakukan bind socket ke alamat local dan port lokal Selain constructor juga terdapat dua buah metode dari kelas Socket yang pasti akan digunakan, yaitu getInputStream() dan getOutputStream(), dimana keduanya mengembalikan suatu objek stream yang dapat digunkaan untuk berkomunikasi dengan socket. Metode close() disediakan untuk memberitahu protokol untuk menutup koneksi.
2.4.3 Kelas ServerSocket Kelas ServerSocket menyatakan suatu koneksi TCP yang berfungsi untuk listen yang siap menerima suatu permintaan dari proses lain. Kelas ServerSocket ini digunakan untuk membangun suatu aplikasi server yang
menerapkan tipe koneksi Connection Oriented.
BAB II – LANDASAN TEORI
LAPORAN TUGAS AKHIR PENGENDALIAN PERALATAN ELEKTRONIK PADA SERVER BERBASIS JARINGAN TCP/IP DAN JAVA™ 2
23
Ketika dibuat sebuah objek baru dari kelas ServerSocket, untuk dapat mengirim dan menerima melalui stream, tetap perlu dibuat InputStream dan OutputStream dari objek Socket yang dihasilkan ketika dari kelas ServerSocket menerima permintaan dari client melalui metode accept(). Kelas ServerSocket memiliki suatu konstruktor yang menerima sebuah nomor port yang akan digunakan sebagai nomor akses layanan yang disediakannya. Serupa dengan kelas Socket, pada kelas ServerSocket juga terdapat beberapa metode lain. Ada dua metode penting dari kelas ServerSocket, yaitu method accept()yang akan menghasilkan sebuah objek kelas Socket yang terkoneksi dengan client. Metode kedua yang penting adalah close() yang akan menutup sesi listen untuk permintaan yang datang dari socket.
BAB II – LANDASAN TEORI
LAPORAN TUGAS AKHIR PENGENDALIAN PERALATAN ELEKTRONIK PADA SERVER BERBASIS JARINGAN TCP/IP DAN JAVA™ 2
BAB III DESAIN DAN IMPLEMENTASI SISTEM
3.1 DESAIN SISTEM Skema dari sistem pengendali peralatan elektronik jarak jauh yang dikembangkan ditunjukan pada gambar 3.2, skema rancangan sistem tersebut merupakan adaptasi dari skema yang penulis dapatkan pada sistem Mars Rover yang dibuat oleh Schweller dari Buena Vista University (Schweller, 2000) yang ditunjukan pada gambar 3.1, sistem Mars Rover merupakan suatu sistem untuk mengendalikan dua buah motor stepper dan sebuah motor DC melalui jaringan internet.
gambar 3.1 Skema sistem Mars Rover (Schweller, 2000)
24
LAPORAN TUGAS AKHIR PENGENDALIAN PERALATAN ELEKTRONIK PADA SERVER BERBASIS JARINGAN TCP/IP DAN JAVA™ 2
PC SERVER
25
Parallel Port
portParalel API Parport.dll
File html Client Applet
Write
Port Data (8 bit)
JNI portParallel Read
Httpd Server
Control Server
Papan Pengendali Relay
beban
AC 220V
Kelas portParallel
Socket Connection
Http Internet/Intranet
Client Applet Client Applet
PC Web Browser PC Web Browser
Gambar 3.2 Skema rancangan sistem Pengendalian Peralatan Elektronik Jarak Jauh Pada sistem pengendalian jarak jauh yang dirancang oleh penulis, terdapat beberapa komponen atau perangkat yang dibutuhkan, baik berupa hardware maupun software. Untuk hardware, dibutuhkan komputer yang bertugas sebagai server yang terhubung ke suatu jaringan TCP/IP agar dapat diakses oleh komputer lain yang terhubung dengannya, sebuah perangkat pengendali relay untuk mengendalikan relay sebagai saklar pada peralatan elektronik yang dapat dikendalikan melalui komputer. Untuk software dibutuhkan program server untuk mengakses perangkat pengendali relay melalui kanal paralel dan menerima perintah dari program client untuk mengendalikan perangkat pengendali relay tersebut serta memberikan informasi ke client perubahan-perubahan atau kejadian-kejadian yang sedang terjadi pada server, program applet client untuk
BAB III – DESAIN DAN IMPLEMENTASI SISTEM
LAPORAN TUGAS AKHIR PENGENDALIAN PERALATAN ELEKTRONIK PADA SERVER BERBASIS JARINGAN TCP/IP DAN JAVA™ 2
26
mengendalikan perangkat pengendali relay melalui program server yang ditanamkan pada sebuah file html, dan httpd server untuk menempatkan file html yang mengandung program applet client agar dapat didownload dan dijalankan dari komputer client. h
a Handshake
Client
Server
Intra/internet
f
d c
portParalel API
e Kanal Paralel
g
b Papan Pengendali Relay
Gambar 3.3 Diagram alir pertukaran data antara client, server dan papan pengendali relay.
Diagram alir dari proses pertukaran data antara pengendali dengan sistem yang dikendalikan ditunjukan pada gambar 3.3. Dari gambar tersebut dapat jelaskan urutan aliran data dari sistem sebagai berikut: a)
Client melakukan proses handshaking dengan server.
b)
Server membaca nilai dari memori port data.
c)
Server mengolah nilai yang terbaca dari kanal data LPT1 kemudian mengirimkan
nilai
dan
pesan
tersebut
ke
client
melalui
media
internet/intranet dalam format string. d)
Cilent menerima pesan dari server dan mengolahnya untuk dapat ditampilkan pada applet.
BAB III – DESAIN DAN IMPLEMENTASI SISTEM
LAPORAN TUGAS AKHIR PENGENDALIAN PERALATAN ELEKTRONIK PADA SERVER BERBASIS JARINGAN TCP/IP DAN JAVA™ 2
e)
27
Client mengirimkan perintah untuk menghidupkan atau mematikan line relay ke server dalam bentuk string malalui media internet/intranet.
f)
Server menerima perintah dari client berupa nilai, kemudian nilai tersebut diproses agar dapat menghidupkan atau mematikan bit tertentu dari port data LPT1.
g)
Server mengirimkan nilai yang telah diproses ke mamori port data LPT1 yang dihubungkan ke rangkaian pengendali relay.
h)
Server membaca nilai dari port data LPT1 dan mengolah nilai tersebut serta menuliskan pesan tentang perubahan yang terjadi, waktu perubahan dan yang melakukan pengendalian tersebut kemudian mengirimkan nilai dan pesan tersebut ke client. Oleh client pesan tersebut diolah kembali agar dapat ditampilkan pada applet. Pada sisi server, program didesain agar server dapat menghandling
beberapa client sekaligus, yaitu dengan menjalankan thread baru setiap ada koneksi dari client dan juga dibuatkan sebuah metode agar server dapat mengirimkan informasi ke semua client secara broadcast dengan transmisi unicast yaitu dengan mengirimkan paket-paket satu-persatu ke semua client yang terhubung. Gambar 3.4 menunjukan diagram dari urutan kerja kelas server.
BAB III – DESAIN DAN IMPLEMENTASI SISTEM
LAPORAN TUGAS AKHIR PENGENDALIAN PERALATAN ELEKTRONIK PADA SERVER BERBASIS JARINGAN TCP/IP DAN JAVA™ 2
Sambungan baru
28
server server class main()
Client 1 run() Client 2
controlServer controlServer
run() Client 3
run() controlServer run() controlServer
run()
run()
brodkes (pesan) Internet/intranet
Gambar 3.4 Diagram alir kelas server
Program pada sisi client yang didesain juga harus siap menerima berita dari server setiap saat, yaitu dengan membuat sebuah thread yang dijalakan pada saat program mulai dijalankan untuk menerima setiap informasi dari server, kemudian setelah informasi didapatkan thread tersebut memperbaharui tampilan program client sesuai dengan informasi yang didapatkannya dengan memanggil metode paint(). Gambar 3.5 menunjukan diagram dari urutan kerja kelas client.
Client() init() penerima start()
Run()
Informasi dari server
paint()
actionPerformed()
Perintah ke server
Internet/intranet
Gambar 3.5 Diagram alir kelas client
BAB III – DESAIN DAN IMPLEMENTASI SISTEM
Server
LAPORAN TUGAS AKHIR PENGENDALIAN PERALATAN ELEKTRONIK PADA SERVER BERBASIS JARINGAN TCP/IP DAN JAVA™ 2
29
3.2 IMPLEMENTASI SISTEM 3.2.1 Implementasi Papan Pengendali Relay Tahap pertama dalam mengimplementasikan papan pengendali relay adalah membuat skema rangkaian dan layout PCB dengan menggunakan program PCB designer, dalam hal ini penulis menggunakan Eagle versi 4.09r2, tampilan dari progam eagle ini ditunujukan pada gambar 3.6. Untuk membuat desain PCB yang diinginkan terlebih dahulu membuatkan skema rangkaian dengan memilih menu file –new schematic.
Gambar 3.6 Tampilan program Eagle 4.029r2
Papan pengendali relay yang dibuat terdiri dari dua rangkaian utama, yaitu rangkaian pengendali relay dan rangkaian catu daya untuk menyuplai daya ke relay dan IC ULN2803. Rangkaian pengendali relay yang dibuat memanfaatkan kanal paralel pada komputer agar dapat dikendalikan oleh software pada komputer yang
BAB III – DESAIN DAN IMPLEMENTASI SISTEM
LAPORAN TUGAS AKHIR PENGENDALIAN PERALATAN ELEKTRONIK PADA SERVER BERBASIS JARINGAN TCP/IP DAN JAVA™ 2
30
dihubungkan. Alat ini terdiri dari 8 buah relay yang dapat dinyalakan atau dimatikan dengan byte yang dikirimkan melalui kanal data dari LPT atau kanal paralel. Komponen-komponen yang dibutuhkan untuk membuat rangkian ini adalah: a) 8 buah relay 12 volt b) 8 buah LED c) 8 buah resistor 1 kilo ohm d) 8 buah konektor PTR 3 kaki e) IC ULN2803 f) Konektor DB25 betina Rangkaian
catu
daya
yang
digunakan
pada
rangkaian
ini
menghasilkan tegangan keluaran +12volt yang yang digunakan untuk mensuplai daya yang dibutuhkan untuk Vcc pada IC ULN2803 dan untuk menggerakkan relay. Pada rangkaian catu daya ini terdapat transformator stepdown yang berfungsi untuk menurunkan tegangan AC 220 volt menjadi AC 12 volt. Tegangan keluaran dari transformator disearahkan oleh dua buah diode silikon, diode ini akan menyearahkan tegangan AC menjadi tegangan DC yang dibutuhkan. Keluaran dari penyearah dihubungkan dengan filter kapasitor untuk meratakan tegangan keluarannya. Untuk membatasi tegangan yang diinginkan digunakan IC regulator tipe LM7812 yang menghasilkan tegangan keluaran sebesar 12 volt yang lebih stabil. Agar mendapatkan hasil tegangan searah yang lebih rata, keluaran dari IC tersebut dihubungkan dengan filter kapasitor sehingga hasilnya mendekati tegangan rata yang ideal.
BAB III – DESAIN DAN IMPLEMENTASI SISTEM
LAPORAN TUGAS AKHIR PENGENDALIAN PERALATAN ELEKTRONIK PADA SERVER BERBASIS JARINGAN TCP/IP DAN JAVA™ 2
31
Skema rangkaian papan pengendali relay secara keseluruhan yang dibuat dengan Eagle ditunjukan pada gambar 3.7.
Gambar 3.7 Skema rangkaian yang dibuat melalui Eagle Dari hasil skema tersebut dibuatkan layout PCB dengan memilih menu file >> switch to board sehingga didaptakan tampilan komponen-komponen dalam layout PCB, setelah tampilan tersebut diedit didapatkan layout PCB seperti yang ditunjukan pada gambar 3.8 berikut.
Gambar 3.8 Layout PCB yang dihasilkan dari Eagle
BAB III – DESAIN DAN IMPLEMENTASI SISTEM
LAPORAN TUGAS AKHIR PENGENDALIAN PERALATAN ELEKTRONIK PADA SERVER BERBASIS JARINGAN TCP/IP DAN JAVA™ 2
32
Kemudian layout PCB yang dihasilkan pada gambar 3.6 diatas dicetak pada kertas transparansi dan dipanaskan diatas papan PCB kemudian setelah terbentuk layout rangkaian pada papan PCB, papan PCB tersebut dilarutkan. Setelah papan PCB terbentuk, komonen-komponen yang digunakan dipasangkan pada papan PCB tersebut sesuai dengan posisi yang telah digambarkan pada skema, sehingga menjadi sebuah papan pengendali relay yang dapat dikendalikan melalui kanal paralel komputer seperti pada gambar 3.9. Untuk menghubungkan perangkat ini dengan komputer, digunakan kabel dengan kedua ujungnya berupa jack DB-25 jantan atau yang lebih dikenal dengan istilah kabel serial.
Gambar 3.9 Papan pengendali Relay
3.2.2 Implementasi portParalel API Untuk kepentingan platform yang independen, bahasa pemrograman Java tidak mendukung pemanggilan alamat perangkat keras secara langsung, hal ini karena pemanggilan tersebut akan sangat tergantung dari jenis sistem operasi yang digunakan serta spesifikasi perangkat kerasnya. Untuk aplikasi yang memerlukan integrasi antara perangkat keras dengan perangkat lunak, dapat diatasi dengan membuat API (Application Programming Interface) dengan memanfaatkan fungsi native yang sengaja disediakan oleh pembuat compiler Java
BAB III – DESAIN DAN IMPLEMENTASI SISTEM
LAPORAN TUGAS AKHIR PENGENDALIAN PERALATAN ELEKTRONIK PADA SERVER BERBASIS JARINGAN TCP/IP DAN JAVA™ 2
33
yang dinamakan Java Native Interface (JNI) melalui Java header and stub file generator (javah). Sebenarnya saat ini Sun Microsystem telah menyediakan Javax communications API (javax.comm API) yang mendukung pengantarmukaan port serial RS232 dan port paralel IEEE 1284 dengan fungsioanalitas yang komplek dan agak rumit, yang tersedia untuk beberapa sistem operasi. Namun dalam tugas akhir ini, penulis mencoba membuat API sendiri yang dikhususkan untuk pengantarmukaan secara paralel, baik melalui LPT maupun slot ISA dan PCI, dengan fungsi yang lebih sederhana dan mudah dipahami. Hasil dari sebuah aplikasi JNI terdiri atas tiga bagian, yaitu sebuah class Java yang mampu memanggil sebuah pustaka berekstensi *.dll yang dibuat dalam C/C++ atau assembly, pustaka berekstensi *.dll itu sendiri, dan sebuah header berekstensi *.h yang telah ditambahkan dalam pustaka tadi dan berfungsi sebagai antarmuka antara class Java dengan pustaka yang dibuat dengan menggunakan C/C++ atau assembly. Langkah awal dalam pembuatan API ini adalah dengan membuat class Java yang dapat memanggil sebuah pustaka, class yang dibuat ini diberi nama portParalel.class yang disimpan dalam paket parport. Kode program dari class ini bernama portParalel.java, dalam kode program ini terdapat sebuah variabel global yaitu alamatPort yang bertipe integer untuk mengakses port pada alamat tersebut, selain itu terdapat lima buah metode, yiatu: public portParalel(int alamatPort) { this.alamatPort = alamatPort; }
BAB III – DESAIN DAN IMPLEMENTASI SISTEM
LAPORAN TUGAS AKHIR PENGENDALIAN PERALATAN ELEKTRONIK PADA SERVER BERBASIS JARINGAN TCP/IP DAN JAVA™ 2
34
Metode diatas digunakan untuk memanggil variabel alamatPort yang digunakan sebagai alamat port yang akan diakses. public int read() { return portParalel.readOneByte (this.alamatPort); } public void write(int oneByte) { portParalel.writeOneByte (this.alamatPort, oneByte); }
Kedua metode diatas berfungsi untuk membaca satu byte dari metode readOneByte alamatPort
dan mengirimkan satu byte ke metode writeOneByte pada
yang ditentukan.
public static native int readOneByte(int address); public static native void writeOneByte(int address, int oneByte);
Kedua metode diatas berfungsi untuk membaca satu byte dan mengirimkan satu byte pada memory I/O komputer pada alamat yang ditentukan melalui library paport.dll
yang dimuat oleh metode:
static { System.loadLibrary("parport"); }
Agar class portParalel.class dapat mengakses library yang dibuat dengan bahasa C, perlu dibuat sebuah jembatan penghubung yang dapat mengimplementasikan
metode-metode
Java
dalam
bahasa
C
Jembatannya merupakan file portParalel.h yang dibangkitkan dari
tersebut. class
portParalel.class dengan javah. Sintaks untuk menghasilkan file header tersebut adalah: javah –classpath <path> –jni portParalel
BAB III – DESAIN DAN IMPLEMENTASI SISTEM
LAPORAN TUGAS AKHIR PENGENDALIAN PERALATAN ELEKTRONIK PADA SERVER BERBASIS JARINGAN TCP/IP DAN JAVA™ 2
35
Dari perintah diatas, dihasilkan sebuah file header, yaitu parallelPort.h sebagai berikut: /* DO NOT EDIT THIS FILE - it is machine generated */ #include <jni.h> /* Header for class portParallel */ #ifndef _Included_portParalel #define _Included_portParalel #ifdef __cplusplus extern "C" { #endif /* * Class: portParalel * Method: readOneByte * Signature: (I)I */ JNIEXPORT jint JNICALL Java_portParalel_readOneByte (JNIEnv *, jclass, jint); /* * Class: portParalel * Method: writeOneByte * Signature: (II)V */ JNIEXPORT void JNICALL Java_portParalel_writeOneByte (JNIEnv *, jclass, jint, jint); #ifdef __cplusplus } #endif #endif
Dari file header diatas, dibuatkan file dll yang digunakan untuk mengakses memory I/O dengan menggunakan bahasa C. Pada sistem komputer berbasis windows 9x/Me, digunakan perintah _inp untuk membaca atau menerima masukan byte dari memori dan _outp untuk mengirim atau menuliskan nilai byte ke memory, seperti pada file parport.c berikut: #include
#include "portParalel.h" JNIEXPORT jint JNICALL Java_portParalel_readOneByte (JNIEnv * algo, jclass otro, jint portBaca) { unsigned short baca;
BAB III – DESAIN DAN IMPLEMENTASI SISTEM
LAPORAN TUGAS AKHIR PENGENDALIAN PERALATAN ELEKTRONIK PADA SERVER BERBASIS JARINGAN TCP/IP DAN JAVA™ 2
36
baca = (unsigned short)portBaca; return _inp(baca); } JNIEXPORT void JNICALL Java_portParalel_writeOneByte (JNIEnv * algo, jclass otro, jint portTulis, jint oneByte) { unsigned short data; int aByte; data = (unsigned short)portTulis; aByte = (int)oneByte; _outp(data,aByte); }
File C diatas di-compile untuk menghasilkan pustaka atau dll, yaitu dapat menggunakan Borland C++ Builder, Microsoft Visual C++ atau kompiler lainnya. Sedangkan untuk sistem komputer berbasis Linux, file parport.c yang digunakan adalah sebagai berikut: #include #include #include "portParalel.h" JNIEXPORT jint JNICALL Java_portParalel_readOneByte (JNIEnv * algo, jclass otro, jint portBaca) { int ret; if (ioperm(portBaca, 3, 1)){perror("ioperm error");} ret = inb(portBaca); if (ioperm(portBaca, 3, 0)){perror("ioperm error");} return ret; } JNIEXPORT void JNICALL Java_portParalel_writeOneByte (JNIEnv * algo, jclass otro, jint portTulis, jint oneByte) { if (ioperm(portTulis, 3, 1)){perror("ioperm error");} outb(oneByte,portTulis); if (ioperm(portTulis, 3, 0)){perror("ioperm error");} }
Untuk menghasilkan pustaka pada Linux atau file *.so, digunakan perintah berikut: gcc -c -fPIC -I<path ke JDK directory>/include -I<path ke JDK directory>/include/linux portParalel.c gcc -shared -Wl,-soname,parport.so -o libparport.so portParalel.o
BAB III – DESAIN DAN IMPLEMENTASI SISTEM
LAPORAN TUGAS AKHIR PENGENDALIAN PERALATAN ELEKTRONIK PADA SERVER BERBASIS JARINGAN TCP/IP DAN JAVA™ 2
37
Setelah kompilasi program sukses, library yang dihasilkan ditempatkan di directory bin pada J2SDK, sedangkan paket atau direktori parport yang berisi file portParalel.class ditambahkan ke classpath.
3.2.3 Implementasi Kelas Server Kelas selanjutnya yang dibuat adalah server.class, kelas ini berjalan dalam mode konsol yang bertugas untuk menulis dan membaca byte memory pada kanal paralel melalui kelas portParalel, dan menerima perintah dari client untuk mengendalikan pengendali relay melalui port paralel serta memberikan pesan atau informasi ke client. Didalam kelas ini terdapat sebuah kelas yang diturunkan dari kelas java.lang.Thread controlServer,
yang akan dieksekusi oleh thread, kelas ini diberi nama
kelas ini akan dieksekusi oleh sebuah thread untuk melayani
setiap koneksi yang terbentuk dengan client secara terpisah apabila ada client yang terkoneksi. Thread yang dijalankan berfungsi untuk mendengarkan (listening) perintah dari client, membaca dan menulis memory pada port data di LPT1 melalui kelas portParalel, dan memberikan informasi hasil pembacaan memory dari port data di LPT1 ke client yang terkoneksi hingga client mengirimkan pesan “QUIT”. Untuk menginisialisasi alamat port data, dibuatkan objek portParallel dengan nama datalpt1. portParallel datalpt1 = new portParallel(0x378);
BAB III – DESAIN DAN IMPLEMENTASI SISTEM
LAPORAN TUGAS AKHIR PENGENDALIAN PERALATAN ELEKTRONIK PADA SERVER BERBASIS JARINGAN TCP/IP DAN JAVA™ 2
38
Untuk membaca nilai atau isi pada alamat memori 378heksa atau port data LPT1 digunakan baris seperti dibawah ini, dan akan dihasilkan nilai bertipe integer. int = datalpt1.read();
Sedangkan untuk menuliskan suatu nilai ke memori 378heksa atau port data LPT1 digunakan baris seperti dibawah ini, dan nilai yang diberikan harus bertipe integer. datalpt1.write(int);
Pada saat thread mulai dijalankan, element thread ditambahkan ke vektor users, kemudian dibaca isi memory di port data LPT1, dan nilai tersebut dikirimkan ke client berserta informasi ke semua client bahwa ada client yang telah bergabung dengan server dengan kode program berikut: users.addElement(this); baca = datalpt1.read(); String kirim = Integer.toString(baca); brodkes(kirim + "\n"); brodkes(new Date().toString() + " : " + clientSocket.getInetAddress() +" terkoneksi dengan server!" + "\n");
Kemudian variabel isQUIT diberi nilai false, selama variabel isQUIT bernilai false dilakukan perulangan untuk menerima nilai masukan dari client (perintah dari client), nilai tersebut kemudian dituliskan ke memory port data LPT1 dan diterjemahkan untuk menuliskan informasi sehubungan perintah dari client tersebut untuk dituliskan pada server dan untuk dikirimkan ke client, jika nilai yang diterima adalah diantara nilai-nilai berukut : 255, 1, 2, 4, 8, 16, 32, 64, atau 128 maka nilai tersebut di-OR-kan dengan nilai yang dibaca dari memory
BAB III – DESAIN DAN IMPLEMENTASI SISTEM
LAPORAN TUGAS AKHIR PENGENDALIAN PERALATAN ELEKTRONIK PADA SERVER BERBASIS JARINGAN TCP/IP DAN JAVA™ 2
39
port data LPT1 untuk menghidupkan Line sesuai nilai yang bersangkutan, tetapi jika nilai yang diterima bukan nilai-nilai tersebut, maka nilai yang diterima akan di-AND-kan dengan nilai yang dibaca dari memory port data LPT1 untuk mematikan Line sesuai nilai yang bersangkutan. Apabila perintah atau string yang diterima dari client adalah “QUIT”, maka variabel isQUIT diberi nilai true sehingga perulangan dihentikan. boolean isQUIT = false; while (!isQUIT) { dariClient = fromClient.readLine(); if (dariClient.startsWith("QUIT")) isQUIT = true; else { int terima = Integer.parseInt(dariClient) ; int maca = datalpt1.read(); if (terima == 1 || terima == 254) { jalur = ("Line 1"); } if (terima == 2 || terima == 253) { jalur = ("Line 2"); } if (terima == 4 || terima == 251) { jalur = ("Line 3"); } if (terima == 8 || terima == 247) { jalur = ("Line 4"); } if (terima == 16 || terima == 239) { jalur = ("Line 5"); } if (terima == 32 || terima == 223) { jalur = ("Line 6"); } if (terima == 64 || terima == 191) { jalur = ("Line 7"); } if (terima == 128 || terima == 127) { jalur = ("Line 8"); } if (terima == 0 || terima == 255) { jalur = ("Semua Line"); } if (terima == 255 || terima == 1 || terima == 2 || terima == 4 || terima == 8 || terima == 16 || terima == 32 || terima == 64 || terima == 128) { tulis = maca | terima; control = ("Menghidupkan "); } else {
BAB III – DESAIN DAN IMPLEMENTASI SISTEM
LAPORAN TUGAS AKHIR PENGENDALIAN PERALATAN ELEKTRONIK PADA SERVER BERBASIS JARINGAN TCP/IP DAN JAVA™ 2
40
tulis = maca & terima; control = ("Mematikan "); } datalpt1.write(tulis); System.out.println(new Date().toString() + " : clientSocket.getInetAddress() + " telah control + jalur); baca = datalpt1.read(); String kirim2 = Integer.toString(baca); brodkes(kirim2 + "\n"); brodkes(new Date().toString() + " : client dari clientSocket.getInetAddress() + " telah control + jalur + "\n");
" "
+ +
" + " +
} }
Jika perulangan telah dihentikan, maka dikirimkan informasi ke client bahwa ada satu client yang telah keluar dari server, kemudian elemen pada thread ini dihapuskan dari vektor users, dan input stream, output stream serta socket yang dibuat pada thread ini dihapus dengan kode berikut: baca = datalpt1.read(); String kirim3 = Integer.toString(baca); brodkes(kirim3 + "\n"); brodkes(new Date().toString() + " : " + clientSocket.getInetAddress() +" keluar dari server!" + "\n"); users.removeElement(this); toClient.close(); fromClient.close(); clientSocket.close(); System.out.println(new Date().toString() + " : Koneksi dengan " + clientSocket.getInetAddress() + " telah tertutup..");
Informasi yang dikirimkan ke client dikirimkan secara unicast, melalui metode brodkes yang dapat mengirimkan pesan ke semua alamat client yang terhubung dengan server melalui port yang disediakan, yaitu dengan malakukan perulangan pengiriman untuk semua element thread pada vector users. protected static void brodkes (String pesan) { synchronized (users) { Enumeration e = users.elements(); while (e.hasMoreElements()) { controlServer c =(controlServer)e.nextElement();
BAB III – DESAIN DAN IMPLEMENTASI SISTEM
LAPORAN TUGAS AKHIR PENGENDALIAN PERALATAN ELEKTRONIK PADA SERVER BERBASIS JARINGAN TCP/IP DAN JAVA™ 2
41
try { synchronized (c.toClient) { c.toClient.writeBytes(pesan); } c.toClient.flush(); } catch (Exception ioe) { c.stop(); } } } }
Metode diatas akan mengirimkan string ke client yang sedang dikendalikan oleh thread yang dihubungkan oleh element dari vektor user. Sedangkan pada program utama (dalam metode main()), dibukakan sebuah port, misalnya port 50005, yang akan digunakan sebagai jalur komunikasi dengan cara melakukan bind alamat lokal ke port tersebut, kemudian dilakukan perulangan secara terus menerus untuk memanggil metode accept(), ketika koneksi dengan client terbentuk, program akan menjalankan thread dari kelas controlServer
dengan memberikan socket koneksinya. Dengan demikian, setiap
ada koneksi client baru, sebuah thread baru akan dijalankan.
// Kelas utama dari program public class server { public static void main(String[] args) { try { // bind port 50005 ke alamat lokal ServerSocket serverSocket = new ServerSocket50005); System.out.println("Server telah siap..."); System.out.println("Menunggu Perintah dari client..."); while (true) { Socket clientSocket = serverSocket.accept(); System.out.println (clientSocket.getInetAddress () + " terkoneksi dengan server!"); new kelasServerTea(clientSocket).start(); }
BAB III – DESAIN DAN IMPLEMENTASI SISTEM
LAPORAN TUGAS AKHIR PENGENDALIAN PERALATAN ELEKTRONIK PADA SERVER BERBASIS JARINGAN TCP/IP DAN JAVA™ 2
42
} catch(IOException ex) { System.err.println(ex); } } }
3.2.4 Implementasi Kelas Client Program yang digunakan client untuk mengontrol penggerak relay melalui server adalah berupa applet yang ditanamkan pada file html yang diakses melalui server web. Untuk membuat applet, tentunya hal yang paling utama agar applet dapat ditampilkan adalah menempatkan obje-objek grafis dari kelas java.awt maupun javax.swing yang akan digunakan pada applet, objek-objek tersebut antara lain JButton untuk membuat tombol, JLabel untuk membuat label, dan TextArea.
Objek tersebut diatur dan ditempatkan didalam metode init yang akan
dipanggil pada saat applet pertama kali dijalankan. public void init() { panel1 = new Panel(new GridLayout (2, 1, 4, 5)); JLabel judul = new JLabel("Tugas Akhir D3 ELINS 2001"); judul.setHorizontalAlignment(JLabel.CENTER); Label merek = new Label("\"Pengendali Relay Melalui Jaringan TCP/IP dengan socket Java\""); merek.setAlignment(Label.CENTER); panel1.add(judul); panel1.add(merek); panel2 = new Panel(new GridLayout (8, 0, 1, 7)); JButton tombolMati = new JButton("Matikan Semua"); JButton tombolNyala = new JButton("Nyalakan Semua"); JButton tombol1 = new JButton("Line 1"); JButton tombol2 = new JButton("Line 2"); JButton tombol3 = new JButton("Line 3"); JButton tombol4 = new JButton("Line 4"); JButton tombol5 = new JButton("Line 5"); JButton tombol6 = new JButton("Line 6"); JButton tombol7 = new JButton("Line 7");
BAB III – DESAIN DAN IMPLEMENTASI SISTEM
LAPORAN TUGAS AKHIR PENGENDALIAN PERALATAN ELEKTRONIK PADA SERVER BERBASIS JARINGAN TCP/IP DAN JAVA™ 2
43
JButton tombol8 = new JButton("Line 8"); panel2.add(tombol1); panel2.add(tombol2); panel2.add(tombol3); panel2.add(tombol4); panel2.add(tombol5); panel2.add(tombol6); panel2.add(tombol7); panel2.add(tombol8); panel3 = new Panel(); Label master = new Label("MASTER CONTROL"); master.setAlignment(Label.CENTER); panel3.add(master); panel4 = new Panel(); panel4.add(tombolMati); panel4.add(tombolNyala); tombol1.addActionListener(this); tombol2.addActionListener(this); tombol3.addActionListener(this); tombol4.addActionListener(this); tombol5.addActionListener(this); tombol6.addActionListener(this); tombol7.addActionListener(this); tombol8.addActionListener(this); tombolMati.addActionListener(this); tombolNyala.addActionListener(this); panel5 = new Panel(); panel5.add("Center", berita = new TextArea ()); berita.setEditable (false); panel6 = new Panel(new GridLayout (3, 2, 10, 10)); panel6.setBackground(Color.lightGray); panel7 = new Panel(); add(panel1); panel6.add(panel3); panel6.add(panel4); panel7.add(panel2); panel7.add(panel6); add(panel7); add(panel5); validate(); }
Pada saat applet mulai dijalankan, atau pada saat applet dimulai ulang, dibuatkan dan dijalankan sebuah thread dengan nama penerima didalam metode start yang akan dipanggil pada saat applet mulai berjalan dan pada saat applet dimulai ulang. public void start () {
BAB III – DESAIN DAN IMPLEMENTASI SISTEM
LAPORAN TUGAS AKHIR PENGENDALIAN PERALATAN ELEKTRONIK PADA SERVER BERBASIS JARINGAN TCP/IP DAN JAVA™ 2
44
// Buat thread penerima dan jalankan penerima = new Thread (this); penerima.start(); }
Thread yang dijalankan oleh program berada dalam metode run(). Didalam metode ini dibuatkan koneksi socket ke server dan port yang akan dituju (sesuai dengan port pada server) untuk mengakses kelas server. try { String server = getParameter("server"); if (server == null) server = getCodeBase().getHost(); berita.append("Sedang melakukan koneksi ke " + server + "........ "); socket = new Socket(server,8765);
} catch (UnknownHostException e) { berita.append ("Unknown host"); } catch (IOException e) { berita.append ("koneksi gagal !!! server sedang tidak aktif"); return; }
Selain itu, didalam thread ini juga dibuatkan input stream dari socket untuk menerima masukan dari server dan mengkonversikan input stream dari byte stream ke character stream. Setelah input stream dibuatkan, dilakukan perulangan dengan perulangan while, untuk menunggu masukan dari server. Masukan yang diterima dari server ada dua jenis, yaitu nilai pembacaan dari port data dan sebuah informasi atau berita. Jika ada masukan dari input stream, maka program akan menuliskan variabel Berita pada TextArea dan memanggil atau memanggil ulang metode paint untuk meng-update tampilannya. try { fromServer
=
new BufferedReader(new (socket.getInputStream()));
while (true) { numbStr = fromServer.readLine(); Berita = fromServer.readLine();
BAB III – DESAIN DAN IMPLEMENTASI SISTEM
inputStreamReader
LAPORAN TUGAS AKHIR PENGENDALIAN PERALATAN ELEKTRONIK PADA SERVER BERBASIS JARINGAN TCP/IP DAN JAVA™ 2
45
num = Integer.parseInt(numbStr); berita.append(Berita + "\n"); repaint(); } } catch (IOException ex) { berita.append("Penerimaan dilakukan"); }
pesan
tidak
dapat
}
Pada saat applet berhenti, dikirimkan sebuah string yaitu “QUIT” ke server yang akan memberitahu server bahwa client telah berhenti dengan terlebih dahulu membuat output stream ke socket. public void stop() { PrintWriter toServer = null; Try { toServer = new PrintWriter (socket.getOutputStream(), true); } catch (IOException ex){ berita.append ("IO Exception"); } toServer.println("QUIT"); }
Ketika window applet ditampilkan dan ditampilkan ulang, dipanggil metode paint, metode ini berfungsi untuk menggambarkan delapan buah lingkaran yang befungsi sebagai indikator status dari port data LPT1 di server. public void paint (Graphics g) { super.paint(g); res = num & 1; if (res == 1) g.setColor(Color.red); else g.setColor(Color.black); g.fillOval(70,70,20,20); res = num & 2; if (res == 2) g.setColor(Color.red); else g.setColor(Color.black); g.fillOval(70,102,20,20); res = num & 4; if (res == 4)
BAB III – DESAIN DAN IMPLEMENTASI SISTEM
LAPORAN TUGAS AKHIR PENGENDALIAN PERALATAN ELEKTRONIK PADA SERVER BERBASIS JARINGAN TCP/IP DAN JAVA™ 2
46
g.setColor(Color.red); else g.setColor(Color.black); g.fillOval(70,134,20,20); res = num & 8; if (res == 8) g.setColor(Color.red); else g.setColor(Color.black); g.fillOval(70,168,20,20); res = num & 16; if (res == 16) g.setColor(Color.red); else g.setColor(Color.black); g.fillOval(70,200,20,20); res = num & 32; if (res == 32) g.setColor(Color.red); else g.setColor(Color.black); g.fillOval(70,232,20,20); res = num & 64; if (res == 64) g.setColor(Color.red); else g.setColor(Color.black); g.fillOval(70,264,20,20); res = num & 128; if (res == 128) g.setColor(Color.red); else g.setColor(Color.black); g.fillOval(70,298,20,20); }
Metode
actionPerformed
digunakan apabila ada aksi dari pengguna,
yaitu apabila tombol ditekan. Apabila salah satu tombol “Line”ditekan maka akan diperiksa apakah line tersebut ada pada kondisi menyala atau mati, jika line tersebut dalam kondisi menyala maka diberikan nilai untuk mematikan line tersebut, namun jika line tersebut dalam kondisi mati maka diberikan nilai untuk menghidupkan line tersebut. Jika yang ditekan adalah tombol “Matikan Semua“ diberikan nilai 0 dan jika yang ditekan adalah “Nyalakan Semua” nilai yang diberikan adalah 255. Setelah itu dikirimkan sebuah pesan ke server yang berisi nilai untuk mematikan atau menghidupkan Line yang bersangkutan. public void actionPerformed(ActionEvent e){ int numb = 0; String numbStr = null; String Berita = null;
BAB III – DESAIN DAN IMPLEMENTASI SISTEM
LAPORAN TUGAS AKHIR PENGENDALIAN PERALATAN ELEKTRONIK PADA SERVER BERBASIS JARINGAN TCP/IP DAN JAVA™ 2
BufferedReader fromServer = null; PrintWriter toServer = null; String actionCommand = e.getActionCommand(); if (e.getSource() instanceof JButton) { if (actionCommand.equals("Matikan Semua")) { numb =0; } if (actionCommand.equals("Nyalakan Semua")) { numb = 255; } if (actionCommand.equals("Line 1")) { res = num & 1; if (res == 1) numb = 254; else numb = 1; } if (actionCommand.equals("Line 2")) { res = num & 2; if (res == 2) numb = 253; else numb = 2; } if (actionCommand.equals("Line 3")) { res = num & 4; if (res == 4) numb = 251; else numb = 4; } if (actionCommand.equals("Line 4")) { res = num & 8; if (res == 8) numb = 247; else numb = 8; } if (actionCommand.equals("Line 5")) { res = num & 16; if (res == 16) numb = 239; else numb = 16; } if (actionCommand.equals("Line 6")) { res = num & 32; if (res == 32) numb = 223; else numb = 32; } if (actionCommand.equals("Line 7")) { res = num & 64; if (res == 64) numb = 191; else numb = 64; } if (actionCommand.equals("Line 8")) { res = num & 128; if (res == 128) numb = 127;
BAB III – DESAIN DAN IMPLEMENTASI SISTEM
47
LAPORAN TUGAS AKHIR PENGENDALIAN PERALATAN ELEKTRONIK PADA SERVER BERBASIS JARINGAN TCP/IP DAN JAVA™ 2
48
else numb = 128; } try
{ toServer = new PrintWriter(socket.getOutputStream(), true);
} catch (IOException ex) { berita.append ("IO Exception"); } toServer.println(numb); } }
Untuk menampilkan applet tersebut di browser, dibuatkan file html yang akan memanggil file cliyent.class tersebut dengan menambahkan baris berikut pada tag body:
File yang diakses berada di webserver dengan alamat http://sabix/tea/tea.html. Ukuran layar yang digunakan untuk menamplikan applet adalah 550x518. File html dan applet ini ditempatkan pada mesin yang berfungsi sebagai server, agar file html ini dapat diakses melalui internet maka digunakan software yang berfungsi sebagai Httpd server atau web-server, misalnya apache atau yang lainnya.
BAB III – DESAIN DAN IMPLEMENTASI SISTEM
LAPORAN TUGAS AKHIR PENGENDALIAN PERALATAN ELEKTRONIK PADA SERVER BERBASIS JARINGAN TCP/IP DAN JAVA™ 2
BAB IV PENGUJIAN DAN PEMBAHASAN
4.1 PENGUJIAN Pada sistem pengendalian jarak jauh berbasis jaringan TCP/IP yang dibuat oleh penulis, dibutuhkan sebuah komputer sebagai server yang sudah terhubung ke dalam jaringan TCP/IP baik berupa sambungan intranet maupun internet. Komputer inilah yang dihubungkan dengan peralatan elektronik yang akan dikendalikan dengan melalui papan pengendali relay yang dihubungkan dengan komputer server melalui kanal paralel. Papan pengendali relay ini dapat dihubungkan ke kanal Paralel komputer dengan menggunakan kabel yang memiliki jack DB-25 male di kedua ujungnya. Prinsip kerja dari rangkaian ini adalah pengaturan tegangan 220 volt dari PLN melalui 8 buah relay dengan menggunakan 8 buah sinyal dari jalur data port paralel komputer. Normally Clossed
relay common
AC 220 volt Normally Open
BEBAN
Gambar 4.1 Penyambungan peralatan elektronik dengan relay
Masing-masing dari relay sendiri pada rangkaian ini memiliki 3 buah kaki keluaran seperti yang ditunjukan pada gambar 4.1, yaitu common (C), Normally Open (NO), dan Normally Clossed (NC). Diimana salah satu ujung dari
49
LAPORAN TUGAS AKHIR PENGENDALIAN PERALATAN ELEKTRONIK PADA SERVER BERBASIS JARINGAN TCP/IP DAN JAVA™ 2
50
jalur yang digunakan penyaklaran dihubungkan ke common, dan jika ujung yang lainnya dihubungkan ke NO maka saat relay diaktifkan atau diberikan logika 1 (high) dari komputer peralatan elektronik tersebut akan menyala sebaliknya saat relay dinonaktifkan atau diberikan logika 0 (low) dari komputer peralatan elektronik tersebut akan mati, sedangkan jika ujung lainnya dihubungkan dengan kaki NC maka ketika diberikan logika 1 (high) dari komputer atau relay diaktifkan peralatan elektronik tersebut akan mati, sebaliknya saat relay dinonaktifkan atau diberikan logika 0 (low) dari komputer peralatan elektronik tersebut akan menyala. Untuk menguji papan pengendali relay tersebut, digunakan catu daya +5 volt yang dihubungkan antara kaki 2 sampai 9 pada konektor DB25 sebagai masukan pada rangkaian pengendali relay dan antara kaki 18 sampai 25 dihubungkan pada ground. Jika daya 5 volt diaktifkan berarti diberikan logika 1 pada kaki yang dihubungkan, sedangkan jika daya 5 volt dimatikan berarti diberikan logika 0. Hasil pengujian pada papan pengendali relay tersebut ditunjukan pada tabel 4.1 berikut.
BAB IV – PENGUJIAN DAN PEMBAHASAN
LAPORAN TUGAS AKHIR PENGENDALIAN PERALATAN ELEKTRONIK PADA SERVER BERBASIS JARINGAN TCP/IP DAN JAVA™ 2
51
Tabel 4.1 Hasil pengujian pada papan pengendali relay
Kaki DB25
2
3
4
5
6
7
8
9
Logika yang diberikan
LED pada papan pengendali relay ke - n
0
Mati
Peralatan Elektronik dihubngkan ke Normally open Mati
Peralatan Elektronik dihubngkan ke Normally close Menyala
1
Menyala
Menyala
Mati
0
Mati
Mati
Menyala
1
Menyala
Menyala
Mati
0
Mati
Mati
Menyala
1
Menyala
Menyala
Mati
0
Mati
Mati
Menyala
1
Menyala
Menyala
Mati
0
Mati
Mati
Menyala
1
Menyala
Menyala
Mati
0
Mati
Mati
Menyala
1
Menyala
Menyala
Mati
0
Mati
Mati
Menyala
1
Menyala
Menyala
Mati
0
Mati
Mati
Menyala
1
Menyala
Menyala
Mati
Sebelum program dijalankan, pastikan terlebih dahulu bahwa rangkaian pengendali relay telah terpasang pada komputer server melalui LPT1, setelah itu program server.class dijalankan dengan menggunakan perintah berikut pada konsol atau prompt: ~> java server
Saat program mulai dijalankan akan keluar pesan berikut pada program:
BAB IV – PENGUJIAN DAN PEMBAHASAN
LAPORAN TUGAS AKHIR PENGENDALIAN PERALATAN ELEKTRONIK PADA SERVER BERBASIS JARINGAN TCP/IP DAN JAVA™ 2
52
Server telah siap... Menunggu Perintah dari client...
Untuk melakukan pengendalian, buka web browser ke alamat website server tempat file html yang berisi applet untuk mengendalikan tersebut berada. Pada tugas akhir ini komputer atau host yang digunakan penulis sebagai server adalah sabix, dan file html tersebut ada pada direktori tea, maka alamat yang dituju pada web-browser adalah http://sabix/tea/tea.html. Ketika client terhubung dengan server tersebut, maka pada server akan muncul pesan berikut: Thu Jun 24 07:31:44 ICT 2004 : /192.168.0.13 terkoneksi dengan server!
Pada saat sebuah client terkoneksi, server akan membaca isi memori kanal data pada LPT1 untuk dan memberikan hasil pembacaan tersebut ke client untuk memberitahukan Line berapa saja pada papan pengendali relay yang sedang menyala dan sedang mati. Sehingga client dapat langsung mengetahui Line berapa saja yang hidup dan yang mati, seperti yang ditunjukan pada gambar 4.2.
Gambar 4.2 Tampilan applet saat terhubung ke server
BAB IV – PENGUJIAN DAN PEMBAHASAN
LAPORAN TUGAS AKHIR PENGENDALIAN PERALATAN ELEKTRONIK PADA SERVER BERBASIS JARINGAN TCP/IP DAN JAVA™ 2
53
Jika client menghidupkan atau mematikan salah satu Line, misalnya client menekan tombol “Line 4”, maka indikator LED keempat pada papan pengendali relay akan menyala dan relay akan menyaklar sehingga peralatan yang terhubung dengannya akan menyala juga. Dan pada server akan muncul sebuah pesan berikut: Thu Jun 24 07:32:18 ICT 2004 : /192.168.0.13 telah Menghidupkan Line 4
Selain menampilkan pesan diatas pada server, server juga mengirimkan pesan tersebut ke client beserta nilai untuk meng-update tampilan indikator pada client, sehingga tampilan applet setelah tombol “Line 4” ditekan adalah seperti pada gambar 4.3. berikut:
Gambar 4.3 Tampilan applet setelah mengirimkan perintah ke server
Program server yang dibuat oleh penulis dirancang agar dapat diakses oleh beberapa client secara bersamaan, sehingga pada saat ada sebuah client yang sedang mengakses atau mengendalikan peralatan, suatu user dari client yang lain
BAB IV – PENGUJIAN DAN PEMBAHASAN
LAPORAN TUGAS AKHIR PENGENDALIAN PERALATAN ELEKTRONIK PADA SERVER BERBASIS JARINGAN TCP/IP DAN JAVA™ 2
54
juga dapat masuk ke sistem pengendalian ini dan mengakses peralatan yang dikendalikan. Apabila client lain masuk ke server sistem pengendalian ini, maka pada server dan client yang terkoneksi akan keluar sebuah pesan bahwa ada client yang telah masuk ke server sebagai berikut: Thu Jun 24 07:34:19 ICT 2004 : /192.168.0.2 terkoneksi dengan server!
Client yang kedua ini juga dapat melakukan pengendalian seperti pada client yang pertama. Jika salah satu client menghidupkan atau mematikan salah satu Line maka pada server dan kedua client akan ditampilkan pesan yang sama, serta tampilan pada semua client yang sedang mengakses sistem pengendalian ini akan mengetahui bahwa salah satu atau semua Line telah dihidupkan atau dimatikan. Misalnya client kedua mematikan semua Line, maka pada server akan keluar pesan berikut: Thu Jun 24 07:35:20 ICT 2004 : /192.168.0.2 telah Mematikan Semua Line
Pada kedua client juga akan tampil pesan seperti pada pesan yang ada pada server, dan indikator lampu pada semua Line di semua client yang terhubung akan berubah sesuai kondisi pada saat itu, yaitu menjadi mati semua, seperti yang ditunjukan pada gambar 4.4 dan gambar 4.5.
BAB IV – PENGUJIAN DAN PEMBAHASAN
LAPORAN TUGAS AKHIR PENGENDALIAN PERALATAN ELEKTRONIK PADA SERVER BERBASIS JARINGAN TCP/IP DAN JAVA™ 2
55
Gambar 4.4 Tampilan client pertama setelah ada client lain yang terhubung ke server
Gambar 4.5 Tampilan client kedua yang telah mematikan semua line
Jika sebuah client keluar dari server, yaitu dengan menutup webbrowsernya atau keluar dari alamat server, maka pada server akan keluar pesan bahwa salah satu client telah keluar. Thu Jun 24 07:39:41 ICT 2004 : Koneksi dengan /192.168.0.13 terputus...
BAB IV – PENGUJIAN DAN PEMBAHASAN
LAPORAN TUGAS AKHIR PENGENDALIAN PERALATAN ELEKTRONIK PADA SERVER BERBASIS JARINGAN TCP/IP DAN JAVA™ 2
56
Begitu juga pada client lain yang sedang mengakses server, pada client akan diberitahu server bahwa salah satu client telah keluar dari server, sehingga pada textArea akan keluar pesan bahwa sebuah client telah keluar. Thu Jun 24 07:39:41 ICT 2004 : /192.168.0.13 keluar dari server!
4.2 PEMBAHASAN Sistem pengendali jarak jauh berbasis jaringan TCP/IP yang dibuat oleh penulis merupakan sistem kendali yang multi platform dan mudah digunakan, hal ini karena program yang digunakan menggunakan bahasa pemrograman Java yang tidak mensyaratkan platform tertentu. Hanya saja untuk digunakan pada server dengan sistem yang berbeda, API yang digunakan untuk mengakses port Paralel juga harus berbeda, hal ini karena pengaksesan tersebut akan sangat tergantung dari jenis sistem operasi yang digunakan serta spesifikasi dari implementasi perangkat kerasnya. Disini penulis telah membuat portParalel API untuk sistem operasi Windows 9x/Me dan Linux. Sistem yang dibuat ini juga dapat diakses oleh beberapa pengguna atau client sekaligus, dimana setiap ada client yang masuk, server dan client yang telah bergabung akan dapat mengetahui client dari mana yang masuk ke sistem pengendalian. Jika ada aksi atau perintah dari salah satu client maka client yang lain akan dapat mengeetahui aksi yang dilakukan oleh client tersebut. Hal ini karena server akan mengirimkan informasi ke semua client jika ada perubahan yang terjadi, informasi tersebut berisi nilai yang akan merubah indikator lampu
BAB IV – PENGUJIAN DAN PEMBAHASAN
LAPORAN TUGAS AKHIR PENGENDALIAN PERALATAN ELEKTRONIK PADA SERVER BERBASIS JARINGAN TCP/IP DAN JAVA™ 2
57
pada client dan sebuah pesan tentang perubahan yang terjadi, waktu perubahan dan yang melakukan pengendalian tersebut. Begitu juga ketika ada client yang keluar dari sistem pengendalian, server dan client lain yang masih mengakses akan mengetahui ada client yang telah keluar dari sistem. Sistem ini hanya sebatas sistem pengedalian jarak jauh, dimana dalam sistem ini tidak terdapat sistem pengamanan, baik untuk program pada sistem ini maupun untuk jaringan yang digunakan. Sehingga sistem pengendalian yang dikembangkan ini dapat diakses oleh siapa saja yang terhubung dengan jaringan ini tanpa batasan pengguna.
BAB IV – PENGUJIAN DAN PEMBAHASAN
LAPORAN TUGAS AKHIR PENGENDALIAN PERALATAN ELEKTRONIK PADA SERVER BERBASIS JARINGAN TCP/IP DAN JAVA™ 2
BAB V PENUTUP
5.1 KESIMPULAN a.
Untuk membangun sistem pengendalian jarak jauh berbasis Java dibutuhkan beberapa perangkat, yaitu: i.
Komputer sebagai server,
ii.
Perangkat pengendali relay sebagai saklar.
iii.
Program server untuk mengakses perangkat pengendali relay melalui port paralel dan menerima perintah dari client.
iv.
Program applet client yang ditanamkan pada sebuah file html untuk mengirimkan perintah ke server.
v. b.
Program Httpd server.
Aplikasi pengendalian jarak jauh yang telah dibuat ini dapat melakukan pengendalian peralatan elektronik dari komputer lain yang terhubung dengan komputer server melalui jaringan TCP/IP hanya dengan membuka alamat website ke tempat program client applet berada.
c.
Sistem pengendalian jarak jauh ini dapat diakses oleh beberapa client sekaligus dan dapat diakses oleh semua yang terhubung dengan jaringan yang digunakan tanpa batasan. Jika ada perintah dari salah satu client, client yang lain dan server akan dapat mengetahui aksi yang dilakukan oleh client tersebut.
58
LAPORAN TUGAS AKHIR PENGENDALIAN PERALATAN ELEKTRONIK PADA SERVER BERBASIS JARINGAN TCP/IP DAN JAVA™ 2
59
5.2 SARAN a. Untuk memudahkan pengaturan pada sisi server, sebaiknya program pada server menggunakan aplikasi berbasis window. b. Untuk keamanan dari sistem ini, sebaiknya untuk masuk ke sistem ini diberikan password dan pengamanan jaringan yang ketat agar tidak terjadi penyalahgunaan oleh pihak lain terhadap sistem ini. c. Digunakan database agar dapat menyimpan beberapa informasi tentang pengoperasian, waktu dan penggunanya dari pengendalian yang dilakukan. d. Sebaiknya sistem ini dibangun pada server yang berbasis Linux, sehingga menjadi sebuah sistem yang cukup handal dengan biaya yang murah dan seratus persen legal. e. Dengan pesatnya perkembangan hand-held device atau perangkat mobile, sebaiknya dibuatkan aplikasi client yang mendukung perangkat tersebut, yaitu dengan membuat apliaksi client menggunakan J2ME (Java 2 Micro Edition) yang dapat dipasang pada perangkat mobile tersebut.
BAB V – PENUTUP
LAPORAN TUGAS AKHIR PENGENDALIAN PERALATAN ELEKTRONIK PADA SERVER BERBASIS JARINGAN TCP/IP DAN JAVA™ 2
DAFTAR PUSTAKA Blissmer, R. H., 1985, Computer Annual, An Introduction to Information Systems 1985-1986 (2nd Edition), John Wiley & Sons. Fouri, M. W., 1981, Introduction to the Computer: The Tool of Business (3rd Edition), Prentice Hall. Hamacher, V.C. dkk., 2001, Computer Organization (5th Edition), McGraw-Hill. Hariyanto, B., 2003, Esensi-Esensi Bahasa Pemrograman Java, Bandung, Informatika. Hartanto, A. A. dan Purbo, O. W., 2001, Teleoperasi Menggunakan Internet, Jakarta, PT Elex Media Komputindo. Peacock,
C., 2001, “Interfacing the Standard Parallel Port”, http://www.beyondlogic.org/spp/parallel.htm, 20 desember 2003.
Portillo, J. G. D. C., 2003, “Parallel Printer Port Access through Java”, http://www.geocities.com/Juanga69/index.html, 7 april 2004. Purbo, O.W. dkk, 2002, TCP/IP (cetakan kedelapan), Jakarta, PT Elex Media Komputindo. Purbo, O. W. dkk, 2000, Trik Pemrograman Java untuk Jaringan dan Internet, Jakarta, PT Elex Media Komputindo. Schweller,
2000, “Mars Rover Interfacing Schematic”, http://web.bvu.edu/faculty/schweller/marsRover/overview.htm, 7 april 2004.
Sudirman,
I., 2003, “Perkembangan Hardware http://ilmukomputer.com:81/pengantar/ivansudirmanhardwarekomputer.zip, 20 februari 2004.
Komputer”,
Sun Microsystems, Inc., 2002, Java Programming Language Workshop, California, U.S.A. Susanto, B., 2003, Belajar Sendiri Pemrograman Client/Server dengan Java 2, Jakarta, PT Elex Media Komputindo. Wahono,
R S., 2003, “Apa Itu Komputer”, http://ilmukomputer.com/pengantar/romi-apaitukomputer.php, 20 februari 2004.
60