Anda di halaman 1dari 17

MAKALAH

PEMROGRAMAN PORT PARALEL MENGGUNAKAN


SOFTWARE VISUAL BASIC
Dosen Pengampu : Yunifa Miftachul Arif, M.T.

Disusun Oleh :
Irvan Ariyanto (13650104)
M. Rizal Maftukhin (13650122)
Weni Rizki A.(13650017)

JURUSAN TEKNIK INFORMATIKA


FAKULTAS SAINS DAN TEKNOLOGI
UNIVERSITAS ISLAM NEGERI MAULANA MALIK IBRAHIM
MALANG
2015

BAB I
PENDAHULUAN
A. Latar Belakang
Perkembangan teknologi semakin pesat dan merata di seluruh
aspek kehidupan. Pekerjaan-pekerjaan di industri, kantor, dan rumah
sekarang dimudahkan dengan adanya komputer yang mampu
meringankan sebagian pekerjaan. Komputer dapat dimanfaatkan
sebagai pengendali peralatan, karena komputer mempunyai
kemampuan yang besar antar lain: komputer mampu untuk
mengintegrasikan antara peralatan yang satu dengan peralatan yang
lain, komputer mampu menyediakan sistem keamanan yang multi
level, mampu untuk diseting supaya dapat berjalan manual atau
otomatis, dapat menampilkan laporan dari hasil kerja alat terkendali
bila diperlukan, dapat diprogram dengan pilihan menu yang banyak
karena mempunyai kapasitas penyimpanan yang besar.
Dengan begitu besar kemampuan komputer yang telah
disebutkan di atas dan kemampuan-kemampuan tersebut, computer
membutuhkan bermacam macam peripheral pendukung untuk
mengeksplor kinerjanya. Salah satunya adalah port parallel. Pada
makalah ini kami akan memaparkan bagaimana cara untuk
mengetahui kinerja port parallel DB 25 dengan aplikasi visual basic,
sehingga nantinya bisa kita dapatkan mekanisme penyaluran data
dalam DB 25.
B. Rumusan Masalah
Dari latar belakang di atas, dapat dirumuskan beberapa masalah
sebagai berikut :
1. Apakah port parallel itu?
2. Bagaimanakah pemrograman port parallel menggunakan software
visual basic 6?
C. Tujuan
1. Mengetahui port parallel
2. Mengetahui cara memprogram port parallel menggunakan visual
basic 6

BAB II
PEMBAHASAN
1. Port Paralel
Ada dua macam konektor parallel port, yaitu 36 pin dan 25 pin.
Konektor 36 pin dikenal dengan nama Centronics dan konektor 25 pin
dikenal dengan DB25. Centronics lebih dahulu ada dan digunakan dari
pada konektor DB-25. DB-25 diperkenalkan oleh IBM (bersamaan
dengan DB-9, untuk serial port), yang bertujuan untuk menghemat
tempat. Karena DB-25 lebih praktis, maka untuk koneksitor parallel
port pada komputer sekarang hanya digunakan DB-25. Berikut
gambarannya.

Gambar 1. Port Paralel


Keterangan gambar dapat dilihat pada tabel di bawah ini:
Nomor
Nama sinyal Tugas
Register Kompleme
pin
n
1
-Strobe
In/Out
Control bit 0 Ya
2
+Data Bit 0
Out
Data bit 0
3
+Data Bit 1
Out
Data bit 1
4
+Data Bit 2
Out
Data bit 2
5
+Data Bit 3
Out
Data bit 3
6
+Data Bit 4
Out
Data bit 4
7
+Data Bit 5
Out
Data bit 5
8
+Data Bit 6
Out
Data bit 6
9
+Data Bit 7
Out
Data bit 7 Ya
10
-Acknowledge In
Status bit 6
11
+Busy
In
Status bit 7
12
+Paper End In
Status bit 5
13
+Select In
In
Status bit 4
14
-Auto Feed
In/Out
Control bit 1 Ya
15
-Error
In/
Status bit 5
16
-Initialize
In/Out
Control bit 2
17
-Select
In/Out
Control bit 3 Ya
18-25
Ground
Ground

Fungsi dari paralel port dengan membuat program aplikasi


komputer beserta peralatan yang nantinya dapat digunakan dalam hal
pengendalian perangkat listrik..
Di komputer, konektor parallel port yang terpasang adalah DB25 betina , sehingga kabel penghubung keluar adalah DB-25 jantan.
Susunan/bentuk DB-25 tampak seperti gambar.

Gambar 2. Susunan Bentuk DB-25


Dari 25 pin konektor DB-25 tersebut, hanya 17 pin yang
digunakan untuk saluran pembawa informasi dan yang berfungsi
sebagai ground 8 pin. Ketujuh belas saluran informasi itu terdiri dari
tiga bagian, yakni data 8 bit; status 5 bit; dan control 4 bit. Bit control
dan status berfungsi dalam jabat tangan dalam proses penulisan
data ke paralel port. Berikut ini tabel fungsi dari pin konektor DB-25.

Gambar 3. Komunikasi Data Komputer dan


Parallel Port
Parallel Port atau port printer pada umumnya terdiri atas tiga
bagian yang masing-masing diberi nama sesuai dengan tugasnya dalam
melaksanakan pencetakan pada printer. Ketiga bagian tersebut adalah
Data Port (DP), Port Control (PC), dan Port Status (PS). Data Port (DP)
adalah port yang dapat digunakan untuk mengirimkan data 8 bit ke
perangkat keras.
Paralel port dapat mengirimkan 8 bit data sekaligus/serentak
dalam satu waktu, lebih cepat dibanding serial port. Paralel port ini
menggunakan konektor DB25. Panjang kabel maksimum yang
diperlukan / diperbolehkan adalah 15 feet. Contoh peralatan yang
menggunakan parallel port adalah: printer, scanner, external driver dsb.
Standar port paralel yang baru ialah IEEE 1284 dimana dikeluarkan
tahun 1994.
Standar ini mendefinisikan 5 mode operasi sebagai berikut :
1.
Mode kompatibilitas
2.
Mode nibble
3.
Mode byte
4.
Mode EPP (enhanced parallel port)

5.
Mode ECP (Extended capability port)
Tujuan dari standar yang baru tersebut ialah untuk mendesain
driver dan peralatan yang baru yang kompatibel dengan peralatan
lainnya serta standar paralel port sebelumnya (SPP) yangn diluncurkan
tahun 1981. Mode Compatibilitas, nibble dan byte digunakan sebagai
standar perangkat keras yang tersedia di port paralel orisinal dimana
EPP dan ECP membutuhkan tambahan hardware dimana dapat berjalan
dengan kecepatan yang lebih tinggi. Mode kompatibilitas atau (Mode
Centronics ) hanya dapat mengirimkan data pada arah maju pada
kecepatan 50 KBytes per detik hingga 150 KBytes per detik. Untuk
menerima data, anda harus mengubah mode menjadi mode nibble atau
byte. Mode nibble dapat menerima 4 bit (nibble) pada arah yang
mundur, misalnya dari alat ke computer. Mode byte menggunakan fitur
bi-directional parallel untuk menerima 1 byte (8 bit) data pada arah
mundur. IRQ (Interrupt Request ) pada port paralel biasanya pada IRQ5
atau IRQ7.
6. Cara Memprogram DB25 dengan Visual Basic
Dalam mengakses port parallel DB25 VB tidak bisa mengakses hardware
secara langsung dalam system operasi windows, maka semua permintaan
pengaksesan hardware harus melalui windows.Oleh karena itu harus
menggunakan program eksternal untuk melakukan pengaksesan hardware
secara langsung pada program. Program tersebut berupa file DLL (Dynamic
Link Library).
Langkah-langkah
1. File DLL ini harus diletakkan (di copy-kan) ke direktori / folder
//windows/system atau diikutkan dalam satu folder program yang kita buat.
2. File DLL yang akan digunakan nanti adalah "inpout32.dll Sebelum kita
menggunakan fungsi fungsi yang ada dalam file DLL ini terlebih dahulu
harus di deklarasikan di VB kedalam module.
Public Declare Function PortIn Lib "inpout32.dll" Alias "Inp32" _
(ByVal PortAddress As Integer) _
As Integer
Public Declare Sub PortOut Lib "inpout32.dll" Alias "Out32" _
(ByVal PortAddress As Integer, _
ByVal Value As Integer)
3. Jika file DLL tersebut telah dideklarasikan seperti diatas, maka fungsi PortOut
(untuk mengeluarkan data) dan PortIn (untuk membaca data) siap digunakan
pada VB. Untuk emengirim data pada port parallel, digunakan fungsi Out.
4. Sintak penulisannya sebagai berikut
PortOut [Alamat Port], [Nilai]
Perintah diatas membutuhkan dua parameter, yaitu alamat port dan nilai
data yang dikirimkan pada port tersebut.Karena tiap port hanya 8 jalur data,

maka hanya bisa mengirim nilai maksimum = 255 (FFh/11111111b) ke port


yang diinginkan.

5. Buat project baru kemudian tambahkan 8 shape untuk simulasi lednya,


1 label untuk judul kemudian 28 commandbutton dan 8 buah timer.
6. Kemudian desain lah menjadi seperti gambar berikut :

7. Atur properties masing-masing komponen seperti untuk shape


backstyle ubah menjadi 1-opaque kemudian backcolornya pilih warna
putih kemudian unutk timer semua interval beri nilai 100 dan dalam
keadaan false.
8. Atur properties command dengan caption on ubah namanya menjadi
Cmd1on sampai Cmd8on, begitu juga command dengan caption
off ubah namanya menjadi Cmd1off sampai Cmd8ff
9. Atur nama tiap komponen sesuai code program dibawah
10.
Save project dan Form di folder yang sama lalu copykan
inpout32.dll pada folder tempat penyimpanan tersebut.
11.
Masukkan kode program seperti dibawah ini :
Private Sub Cmd1off_Click(Index As Integer)
Nil_Bit 888, 0 'mengganti warna shape menjadi hitam
SL1(0).BackColor = vbBlack
End Sub
Private Sub Cmd1on_Click(Index As Integer)
Send_Bit 888, 0 'mengganti warna shape menjadi merah
SL1(0).BackColor = vbBlue

End Sub
Private Sub Cmd2off_Click(Index As Integer)
Nil_Bit 888, 1 'mengganti warna shape menjadi hitam
SL1(1).BackColor = vbBlack
End Sub
Private Sub Cmd2on_Click(Index As Integer)
Send_Bit 888, 1 'mengganti warna shape menjadi merah
SL1(1).BackColor = vbBlue
End Sub
Private Sub Cmd3off_Click(Index As Integer)
Nil_Bit 888, 2 'mengganti warna shape menjadi hitam
SL1(2).BackColor = vbBlack
End Sub
Private Sub Cmd3on_Click(Index As Integer)
Send_Bit 888, 2 'mengganti warna shape menjadi merah
SL1(2).BackColor = vbBlue
End Sub
Private Sub Cmd4off_Click(Index As Integer)
Nil_Bit 888, 3 'mengganti warna shape menjadi hitam
SL1(3).BackColor = vbBlack
End Sub
Private Sub Cmd4on_Click(Index As Integer)
Send_Bit 888, 3 'mengganti warna shape menjadi merah
SL1(3).BackColor = vbBlue
End Sub
Private Sub Cmd5off_Click(Index As Integer)
Nil_Bit 888, 4 'mengganti warna shape menjadi hitam
SL1(4).BackColor = vbBlack
End Sub
Private Sub Cmd5on_Click(Index As Integer)
Send_Bit 888, 4 'mengganti warna shape menjadi merah
SL1(4).BackColor = vbBlue
End Sub
Private Sub Cmd6off_Click(Index As Integer)
Nil_Bit 888, 5 'mengganti warna shape menjadi hitam
SL1(5).BackColor = vbBlack
End Sub

Private Sub Cmd6on_Click(Index As Integer)


Send_Bit 888, 5 'mengganti warna shape menjadi merah
SL1(5).BackColor = vbBlue
End Sub
Private Sub Cmd7off_Click(Index As Integer)
Nil_Bit 888, 6 'mengganti warna shape menjadi hitam
SL1(6).BackColor = vbBlack
End Sub
Private Sub Cmd7on_Click(Index As Integer)
Send_Bit 888, 6 'mengganti warna shape menjadi merah
SL1(6).BackColor = vbBlue
End Sub
Private Sub Cmd8off_Click(Index As Integer)
Nil_Bit 888, 7 'mengganti warna shape menjadi hitam
SL1(7).BackColor = vbBlack
End Sub
Private Sub Cmd8on_Click(Index As Integer)
Send_Bit 888, 7 'mengganti warna shape menjadi merah
SL1(7).BackColor = vbBlue
End Sub
Private Sub Command1_Click()
Send_Bit 888, 8
SL1(0).BackColor = vbBlue
SL1(1).BackColor = vbBlue
SL1(2).BackColor = vbBlue
SL1(3).BackColor = vbBlue
SL1(4).BackColor = vbBlue
SL1(5).BackColor = vbBlue
SL1(6).BackColor = vbBlue
SL1(7).BackColor = vbBlue
Command3.Enabled = False
Command4.Enabled = False
Command5.Enabled = False
Command6.Enabled = False
Command7.Enabled = False
End Sub
Private Sub Command2_Click()
Nil_Bit 888, 8
SL1(0).BackColor = vbBlack
SL1(1).BackColor = vbBlack
SL1(2).BackColor = vbBlack

SL1(3).BackColor = vbBlack
SL1(4).BackColor = vbBlack
SL1(5).BackColor = vbBlack
SL1(6).BackColor = vbBlack
SL1(7).BackColor = vbBlack
Command1.Enabled = True
Command2.Enabled = True
Command3.Enabled = True
Command4.Enabled = True
Command5.Enabled = True
Command6.Enabled = True
Command7.Enabled = True
End Sub
Private Sub Command3_Click()
Timer1.Enabled = True
Timer2.Enabled = True
Command1.Enabled = False
Command2.Enabled = False
Command4.Enabled = False
Command6.Enabled = False
Command7.Enabled = False
Command5.Enabled = True
End Sub
Private Sub Command4_Click()
Timer4.Enabled = True
Timer3.Enabled = True
Command1.Enabled = False
Command2.Enabled = False
Command3.Enabled = False
Command6.Enabled = False
Command7.Enabled = False
Command5.Enabled = True
End Sub
Private Sub Command5_Click()
Timer1.Enabled = False
Timer2.Enabled = False
Timer3.Enabled = False
Timer4.Enabled = False
Timer5.Enabled = False
Timer6.Enabled = False
Timer7.Enabled = False
Timer8.Enabled = False
Timer1.Interval = 100
Timer2.Interval = 100
Timer3.Interval = 100

Timer4.Interval = 100
Timer5.Interval = 100
Timer6.Interval = 100
Timer7.Interval = 100
Timer8.Interval = 100
Nil_Bit 888, 8
SL1(0).BackColor = vbBlack
SL1(1).BackColor = vbBlack
SL1(2).BackColor = vbBlack
SL1(3).BackColor = vbBlack
SL1(4).BackColor = vbBlack
SL1(5).BackColor = vbBlack
SL1(6).BackColor = vbBlack
SL1(7).BackColor = vbBlack
Command1.Enabled = True
Command2.Enabled = True
Command3.Enabled = True
Command4.Enabled = True
Command5.Enabled = True
Command6.Enabled = True
Command7.Enabled = True
End Sub
Private Sub Command6_Click()
Timer6.Enabled = True
Timer5.Enabled = True
Command1.Enabled = False
Command2.Enabled = False
Command3.Enabled = False
Command4.Enabled = False
Command7.Enabled = False
Command5.Enabled = True
End Sub
Private Sub Command7_Click()
Timer8.Enabled = True
Timer7.Enabled = True
Command1.Enabled = False
Command2.Enabled = False
Command3.Enabled = False
Command4.Enabled = False
Command6.Enabled = False
Command5.Enabled = True
End Sub
Private Sub Exit_Click()

End
End Sub
Private Sub Form_Activate()
SL1(0).BackColor = vbBlack
SL1(1).BackColor = vbBlack
SL1(2).BackColor = vbBlack
SL1(3).BackColor = vbBlack
SL1(4).BackColor = vbBlack
SL1(5).BackColor = vbBlack
SL1(6).BackColor = vbBlack
SL1(7).BackColor = vbBlack
End Sub
Sub Send_Bit(Alamat_Port, Nomor_Bit)
Dim Nilai, Status_Port, Nilai_Baru As Byte
Select Case Nomor_Bit
Case 0: Nilai = 1
Case 1: Nilai = 2
Case 2: Nilai = 4
Case 3: Nilai = 8
Case 4: Nilai = 16
Case 5: Nilai = 32
Case 6: Nilai = 64
Case 7: Nilai = 128
Case 8: Nilai = 255
Case Else
GoTo out_range
End Select
Status_Port = PortIn(Alamat_Port)
Nilai_Baru = Status_Port Or Nilai
PortOut Alamat_Port, Nilai_Baru
out_range:
End Sub
Sub Nil_Bit(Alamat_Port, Nomor_Bit)
Dim Nilai, Status_Port, Nilai_Baru As Byte
Select Case Nomor_Bit
Case 0: Nilai = 254
Case 1: Nilai = 253
Case 2: Nilai = 11 '251
Case 3: Nilai = 247
Case 4: Nilai = 239
Case 5: Nilai = 223
Case 6: Nilai = 191
Case 7: Nilai = 127
Case 8: Nilai = 0
Case Else

GoTo out_range
End Select
Status_Port = PortIn(Alamat_Port)
Nilai_Baru = Status_Port And Nilai
PortOut Alamat_Port, Nilai_Baru
out_range:
End Sub
Private Sub Timer2_Timer()
Dim a As Integer
a = Timer1.Interval
Timer1.Interval = a + 100
Select Case a
Case 100
Send_Bit 888, 0
SL1(0).BackColor = vbBlue
Case 200
Nil_Bit 888, 0
Send_Bit 888, 1
SL1(0).BackColor = vbBlack
SL1(1).BackColor = vbBlue
Case 300
Nil_Bit 888, 1
Send_Bit 888, 2
SL1(1).BackColor = vbBlack
SL1(2).BackColor = vbBlue
Case 400
Nil_Bit 888, 2
Send_Bit 888, 3
SL1(2).BackColor = vbBlack
SL1(3).BackColor = vbBlue
Case 500
Nil_Bit 888, 3
Send_Bit 888, 4
SL1(3).BackColor = vbBlack
SL1(4).BackColor = vbBlue
Case 600
Nil_Bit 888, 4
Send_Bit 888, 5
SL1(4).BackColor = vbBlack
SL1(5).BackColor = vbBlue
Case 700
Nil_Bit 888, 5
Send_Bit 888, 6
SL1(5).BackColor = vbBlack
SL1(6).BackColor = vbBlue

Case 800
Nil_Bit 888, 6
Send_Bit 888, 7
SL1(6).BackColor = vbBlack
SL1(7).BackColor = vbBlue
Case 900
Nil_Bit 888, 7
SL1(7).BackColor = vbBlack
Timer1.Interval = 100
End Select
End Sub
Private Sub Timer3_Timer()
Dim b As Integer
b = Timer4.Interval
Timer4.Interval = b + 100
Select Case b
Case 100
Send_Bit 888, 3
Send_Bit 888, 4
SL1(4).BackColor = vbBlue
SL1(5).BackColor = vbBlue
Case 200
Send_Bit 888, 2
Nil_Bit 888, 3
Send_Bit 888, 5
Nil_Bit 888, 4
SL1(2).BackColor = vbBlue
SL1(3).BackColor = vbBlack
SL1(5).BackColor = vbBlue
SL1(4).BackColor = vbBlack
Case 300
Send_Bit 888, 1
Nil_Bit 888, 2
Send_Bit 888, 6
Nil_Bit 888, 5
SL1(1).BackColor = vbBlue
SL1(2).BackColor = vbBlack
SL1(6).BackColor = vbBlue
SL1(5).BackColor = vbBlack
Case 400
Send_Bit 888, 0
Nil_Bit 888, 1
Send_Bit 888, 7
Nil_Bit 888, 6
SL1(0).BackColor = vbBlue
SL1(1).BackColor = vbBlack

SL1(7).BackColor = vbBlue
SL1(6).BackColor = vbBlack
Case 500
Nil_Bit 888, 0
Nil_Bit 888, 7
SL1(0).BackColor = vbBlack
SL1(7).BackColor = vbBlack
Timer4.Interval = 100
End Select
End Sub
Private Sub Timer5_Timer()
Dim c As Integer
c = Timer6.Interval
Timer6.Interval = c + 100
Select Case c
Case 100
Send_Bit 888, 0
SL1(0).BackColor = vbBlue
Case 200
Nil_Bit 888, 0
Send_Bit 888, 4
SL1(0).BackColor = vbBlack
SL1(4).BackColor = vbBlue
Case 300
Nil_Bit 888, 4
Send_Bit 888, 1
SL1(4).BackColor = vbBlack
SL1(1).BackColor = vbBlue
Case 400
Nil_Bit 888, 1
Send_Bit 888, 5
SL1(1).BackColor = vbBlack
SL1(5).BackColor = vbBlue
Case 500
Nil_Bit 888, 5
Send_Bit 888, 2
SL1(5).BackColor = vbBlack
SL1(2).BackColor = vbBlue
Case 600
Nil_Bit 888, 2
Send_Bit 888, 6
SL1(2).BackColor = vbBlack
SL1(6).BackColor = vbBlue
Case 700
Nil_Bit 888, 6

Send_Bit 888, 3
SL1(6).BackColor = vbBlack
SL1(3).BackColor = vbBlue
Case 800
Nil_Bit 888, 3
Send_Bit 888, 7
SL1(3).BackColor = vbBlack
SL1(7).BackColor = vbBlue
Case 900
Nil_Bit 888, 7
SL1(7).BackColor = vbBlack
Timer6.Interval = 100
End Select
End Sub
Private Sub Timer7_Timer()
Dim d As Integer
d = Timer8.Interval
Timer8.Interval = d + 100
Select Case d
Case 100
Send_Bit 888, 7
SL1(7).BackColor = vbBlue
Case 200
Send_Bit 888, 6
Nil_Bit 888, 7
SL1(7).BackColor = vbBlack
SL1(6).BackColor = vbBlue
Case 300
Send_Bit 888, 5
Nil_Bit 888, 6
SL1(6).BackColor = vbBlack
SL1(5).BackColor = vbBlue
Case 400
Send_Bit 888, 4
Nil_Bit 888, 5
SL1(5).BackColor = vbBlack
SL1(4).BackColor = vbBlue
Case 500
Send_Bit 888, 3
Nil_Bit 888, 4
SL1(4).BackColor = vbBlack
SL1(3).BackColor = vbBlue
Case 600
Send_Bit 888, 2
Nil_Bit 888, 3

SL1(3).BackColor = vbBlack
SL1(2).BackColor = vbBlue
Case 700
Send_Bit 888, 1
Nil_Bit 888, 2
SL1(2).BackColor = vbBlack
SL1(1).BackColor = vbBlue
Case 800
Send_Bit 888, 0
Nil_Bit 888, 1
SL1(1).BackColor = vbBlack
SL1(0).BackColor = vbBlue
Case 900
Nil_Bit 888, 0
SL1(0).BackColor = vbBlack
Timer8.Interval = 100
End Select
End Sub
7. Sekarang run programnya.
BAB III
PENUTUP
Kesimpulan
Dari materi yang kita pelajari diatas kami dapatkan bahwa cikal
bakal tranfer data antar komputer bisa kita lihat dengan menggunakan
port DB 25, menggunakan ISE Visual Basic kita bisa membuat simulasi
bagaimana cara kerja port DB 25, yang dahulunya kita hanya tahu
tranfer data dengan hanya copy paste pada komputer, sekarang kita
bisa mengetahui bagaimana mekanisme tranfer data secara nyata yang
sangat sederhana.
Saran
Setelah mengetahui mekanisme pembuatan alikasi visual basic
yang mengimplementasikan port DB 25, kedepannya diharapkan kita
bisa mengembangkan penelitian yang bisa membuat tranfer data lebih
cepat dan efisien.

DAFTAR PUSTAKA
Marzuki, Much. 2010. Mengakses Parallel Port Menggunakan Visual Basic
6.0.
http://much-marzuki.blogspot.com/2010/08/mengaksesparallel-port-menggunakan.html. Diakses tanggal 22 April 2015.
Fitriana, Noor. 2009. Contoh Rangkaian Dan Program Aplikasi Dengan
Konektor
Db9,
Db25,
Dan
Usb.
http://terminaltechno.blog.uns.ac.id/2009/11/07/contoh-rangkaiandan-program-aplikasi-dengan-konektor-db9-db25-dan-usb/. Diakses
tanggal 22 April 2015.
Sutrisno, Andi. 2012. Visual Basic for Electrical Engineering.
https://www.academia.edu/8261420/Visual_Basic_for_Electrical_Engi
neering. Diakses tanggal 22 April 2015.

Anda mungkin juga menyukai