paralel vb 2.0

Download Paralel Vb 2.0

If you can't read please download the document

Upload: ilham-alfajri

Post on 25-Jul-2015

136 views

Category:

Documents


0 download

TRANSCRIPT

Akses Port Paralel (Menggunakan Visual Basic 6.0)

Akses Port Paralel (Menggunakan Visual BASIC 6.0) (Drs. Agfianto Eko Putra, M.Si 2008) http://agfi.staff.ugm.ac.idTENTANG IO.DLLDibutuhkan suatu cara agar VB bisa melakukan akses perangkat keras. Salah satunya dengan pustaka io.dll, yang bisa didownload dari http://www.geekhideout.com/iodll.shtml (juga dengan dokumentasi lengkap, bagi programmer Delphi silahkan jenguk website tersebut) secara gratis, yang harus disimpan atau ditempatkan pada folder :/windows/system32 pada komputer Anda. Cara penggunaannya sangat mudah, pertama definisikan terlebih dahulu fungsi dan prosedur untuk akses masukan maupun keluaran perangkat keras pada bagian modul khusus VB sebagai berikut:Public Declare Sub PortOut Lib "io.dll" _ (ByVal Port As Integer, ByVal Data As Byte) Public Declare Sub PortWordOut Lib "io.dll" _ (ByVal Port As Integer, ByVal Data As Integer) Public Declare Sub PortDWordOut Lib "io.dll" _ (ByVal Port As Integer, ByVal Data As Long) Public Declare Function PortIn Lib "io.dll" _ (ByVal Port As Integer) As Byte Public Declare Function PortWordIn Lib "io.dll" _ (ByVal Port As Integer) As Integer Public Declare Function PortDWordIn Lib "io.dll" _ (ByVal Port As Integer) As Long Public Declare Sub SetPortBit Lib "io.dll" _ (ByVal Port As Integer, ByVal Bit As Byte) Public Declare Sub ClrPortBit Lib "io.dll" _ (ByVal Port As Integer, ByVal Bit As Byte) Public Declare Sub NotPortBit Lib "io.dll" _ (ByVal Port As Integer, ByVal Bit As Byte) Public Declare Function GetPortBit Lib "io.dll" _ (ByVal Port As Integer, ByVal Bit As Byte) As Boolean Public Declare Function RightPortShift Lib "io.dll" _ (ByVal Port As Integer, ByVal Val As Boolean) As Boolean Public Declare Function LeftPortShift Lib "io.dll" _ (ByVal Port As Integer, ByVal Val As Boolean) As Boolean Public Declare Function IsDriverInstalled Lib "io.dll" () As Boolean

Kedua tinggal penggunaan fungsi dan prosedur tersebut secara biasa, fungsi PortIn membutuhkan dua parameter yaitu alamat perangkat keras dan variabel hasil pembacaan data dari perangkat keras dengan tipe data byte. Sedangkan prosedur PortOut membutuhkan dua parameter juga, yaitu

Agfianto Eko Putra (dokumen versi 2.0) 2008 - 1

Akses Port Paralel (Menggunakan Visual Basic 6.0) alamat perangkat keras dan nilai atau variabel yang menyimpan nilai yang akan dikirimkan ke perangkat keras yang bersangkutan. PortOut PortWordOut PortDWordOut PortIn PortWordIn PortDWordIn GetPortBit SetPortBit ClrPortBit NotPortBit RightPortShift LeftPortShift IsDriverInstalled Mengirim data dalam format byte (8-bit) ke port tertentu. Mengirim data dalam format word (16-bit) ke port tertentu. Mengirim data dalam format double word (32-bit) ke port tertentu. Membaca data falam format byte (8-bit) dari port tertentu. Membaca data falam format word (16-bit) dari port tertentu. Membaca data falam format double word (32-bit) dari port tertentu. Membaca status dari bit tertentu. Set bit (=1) pada port tertentu. Reset bit (=0) pada port tertentu. Lakukan inversi (NOT) bit pada port tertentu Geser bit dari port tertentu ke kanan, LSB MSB. Geser bit dari port tertentu ke kiri, MSB LSB. Akan memberikan nilai bukan-NOL jika io.dll sudah terinstal dan berfungsi. Tujuan utama dari fungsi ini adalah untuk memastikan bahwa penggerak mode kernel pada NT/2000/XP telah diinstal dan dapat diakses.

PENDAHULUAN PORT PARALELPort Paralel adalah sarana port yang sederhana dan murah untuk membuat projek-projek atau alat-alat yang dikendalikan menggunakan komputer. Sederhana karena, sebagaimana akan dilihat nanti, hanya melibatkan 3 macam register saja, murah karena hampir semua komputer, desktop maupun portable, selalu dilengkapi dengan Port Paralel atau yang dikenal juga dengan Port Printer. Kesederhanaan dan kemudahan pemrograman menggunakan Port Paralel membuat Port ini semakin populer di kalangan para hobis. Port Paralel ini sering digunakan untuk, misalnya, robot yang dikendalikan komputer, pemrogram mikrokontroler Atmel atau PIC, otomasi rumah, akuisisi data praktis dan lain sebagainya.

EKSPERIMEN AKSES PORT PARALELStandar IEEE 1284 yang dipublikasikan pada tahun 1994 mendefinisikan 5 (lima) macam mode transfer data Port Paralel: 1. Mode Kompatbel; 2. Mode Nibel; 3. Mode Byte; 4. EPP, dan 5. ECP Port Paralel ini terhubungkan dengan dunia luar melalui konektor DB25, yang terbagi atas tiga kelompok register, yaitu:

Agfianto Eko Putra (dokumen versi 2.0) 2008 - 2

Akses Port Paralel (Menggunakan Visual Basic 6.0)

1. Register Data; 2. Register Control, dan 3. Register Status Seperti namanya, masing-masing register tersebut digunakan untuk mentransfer data, melakukan pengontrolan periferal serta memeriksa atau mendapatkan status periferal eksternal. Masing-masing register terhubungkan ke konektor DB25 tetapi tidak semua bit yang terhubungkan ke masing-masing pin. Ada beberapa pin (selain pin-pin pada register data) yang bersifat sungsang atau inverse, jika pin tersebut sebagai masukan, maka jika terbaca 0 artinya mendapatkan logika 1 (demikian juga sebaliknya). Jika pin tersebut adalah keluaran, jika dikirimkan logika 1, maka yang terkirim sesungguhnya adalah logika 0 (demikian juga sebaliknya). Selain itu sifatnya normal, terbaca 1 ya 1, terkirim 1 ya 1, demikian seterusnya. Lebih lengkapnya ditunjukkan pada Tabel 1. Tabel 1 No.Pin (DB25) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18-25 Nama Sinyal nStrobe Data0 Data1 Data2 Data3 Data4 Data5 Data6 Data7 nAck Busy Paper-Out Select Linefeed nError nInitialize nSelect-Printer Ground Arah Out In/Out In/Out In/Out In/Out In/Out In/Out In/Out In/Out In In In In Out In Out Out Register bit Control-0 Data-0 Data-1 Data-2 Data-3 Data-4 Data-5 Data-6 Data-7 Status-6 Status-7 Status-5 Status-4 Control-1 Status-3 Control-2 Control-3 Sungsang? Ya Tidak Tidak Tidak Tidak Tidak Tidak Tidak Tidak Tidak Ya Tidak Tidak Ya Tidak Tidak Ya -

Daftar pin pada DB25 Port Paralel ditunjukkan pada Gambar 1, sedangkan rangkaian yang digunakan untuk eksperimen ditunjukkan pada Gambar 2. Perlu mendapat perhatian bahwa penggunaan DIP Siwtch hanya sebagian saja, menyesuaikan dengan bit-bit pada Register Status yang terhubungkan dengan DB25 (ada 4). Pada Tabel 2 ditunjukkan koneksi antara LED, DIP Switch dan konektor DB25 Port Paralel. Mohon bisa diperhatikan sepenuhnya.

Agfianto Eko Putra (dokumen versi 2.0) 2008 - 3

Akses Port Paralel (Menggunakan Visual Basic 6.0)

Gambar 1

Gambar 2 (semua R nilainya 100 ohm) Tabel 2 Rangkaian LED1 LED2 LED3 LED4 LED5 LED6 LED7 LED8 DB25 2 D0 3 D1 4 D2 5 D3 6 D4 7 D5 8 D6 9 D7 Rangkaian LED9 LED10 LED11 LED12 DIP1 DIP2 DIP3 DIP4 DIP5 Gnd DB25 1 14 16 PC2 17 15 - PS3 13 - PS4 12 - PS5 10 - PS6 11 18 s/d 25

Agfianto Eko Putra (dokumen versi 2.0) 2008 - 4

Akses Port Paralel (Menggunakan Visual Basic 6.0)

Contoh program 01Contoh program pertama ini digunakan untuk mematikan dan menghidupkan LED-LED yang terpasang pada pin-pin data. Menggunakan bantuan komponen CheckBox, Anda bisa mengganti dengan komponen lainnya selama bisa digunakan untuk proses Toggle (ON-OFF secara bergantian). Status dari LED langsung ditunjukkan pada komponen tersebut.

Gambar 3 Komponen CheckBox CommandButton Form Properti Name: Check1 Caption: ON/OFF Name: Command1 Caption: Selesai! Name: Form1 Caption: Par_port_01 SubrutinPrivate Sub Check1_Click() Private Sub Command1_Click() Private Sub Form_Load()

Private Sub Check1_Click() If Check1.Value = 1 Then PortOut &H378, &HFF Check1.Caption = "Lampu ON semua" Else PortOut &H378, &H0 Check1.Caption = "Lampu OFF semua" End If End Sub Private Sub Command1_Click() Unload Me End Sub Private Sub Form_Load() If Not IsDriverInstalled Then MsgBox "error", vbOKOnly Unload Me End If End Sub

Agfianto Eko Putra (dokumen versi 2.0) 2008 - 5

Akses Port Paralel (Menggunakan Visual Basic 6.0)

Contoh program 02Contoh program yang kedua ini lebih spesifik, karena menghidupkan LED baik di pin-pin data maupun kontrol dilakukan satu persatu. Dengan cara memeriksa status komponen CheckBox saat dilakukan event pencetangan. Perhatikan adanya keanehan hasil pada saat melakukan pencentangan pada CheckBox untuk Kontrol-0 s/d Kontrol-3. Ingat adanya pin-pin yang sungsang sebagaimana dijelaskan sebelumnya (Tabel 2).

Gambar 4 Komponen Frame CheckBox CheckBox CheckBox CheckBox CheckBox CheckBox CheckBox CheckBox Frame CheckBox CheckBox Properti Name: Frame1 Caption: Register Data Name: Data0 Caption: Data-0 Name: Data1 Caption: Data-1 Name: Data2 Caption: Data-2 Name: Data3 Caption: Data-3 Name: Data4 Caption: Data-4 Name: Data5 Caption: Data-5 Name: Data6 Caption: Data-6 Name: Data7 Caption: Data-7 Name: Frame2 Caption: Register Kontrol Name: Kontrol0 Caption: Kontrol-0 Name: Kontrol1 Caption: Kontrol-1 Prosedur/FungsiPrivate Sub Data0_Click() Private Sub Data1_Click() Private Sub Data2_Click() Private Sub Data3_Click() Private Sub Data4_Click() Private Sub Data5_Click() Private Sub Data6_Click() Private Sub Data7_Click() Private Sub Kontrol0_Click() Private Sub Kontrol1_Click()

Agfianto Eko Putra (dokumen versi 2.0) 2008 - 6

Akses Port Paralel (Menggunakan Visual Basic 6.0) Komponen CheckBox CheckBox CommandButton Properti Name: Kontrol2 Caption: Kontrol-2 Name: Kontrol3 Caption: Kontrol-3 Name: Command1 Caption: Exit! Prosedur/FungsiPrivate Sub Kontrol2_Click() Private Sub Kontrol3_Click() Private Sub Command1_Click()

Listing selengkapnya sebagai berikut:Private Sub Data0_Click() If Data0.Value = 1 Then SetPortBit &H378, 0 Else ClrPortBit &H378, 0 End If End Sub Private Sub Data1_Click() If Data1.Value = 1 Then SetPortBit &H378, 1 Else ClrPortBit &H378, 1 End If End Sub Private Sub Data2_Click() If Data2.Value = 1 Then SetPortBit &H378, 2 Else ClrPortBit &H378, 2 End If End Sub Private Sub Data3_Click() If Data3.Value = 1 Then SetPortBit &H378, 3 Else ClrPortBit &H378, 3 End If End Sub Private Sub Data4_Click() If Data4.Value = 1 Then SetPortBit &H378, 4 Else ClrPortBit &H378, 4 End If End Sub

Agfianto Eko Putra (dokumen versi 2.0) 2008 - 7

Akses Port Paralel (Menggunakan Visual Basic 6.0)Private Sub Data5_Click() If Data5.Value = 1 Then SetPortBit &H378, 5 Else ClrPortBit &H378, 5 End If End Sub Private Sub Data6_Click() If Data6.Value = 1 Then SetPortBit &H378, 6 Else ClrPortBit &H378, 6 End If End Sub Private Sub Data7_Click() If Data7.Value = 1 Then SetPortBit &H378, 7 Else ClrPortBit &H378, 7 End If End Sub Private Sub Command1_Click() Unload Me End Sub Private Sub Kontrol0_Click() If Kontrol0.Value = 1 Then SetPortBit &H37A, 0 Else ClrPortBit &H37A, 0 End If End Sub Private Sub Kontrol1_Click() If Kontrol1.Value = 1 Then SetPortBit &H37A, 1 Else ClrPortBit &H37A, 1 End If End Sub Private Sub Kontrol2_Click() If Kontrol2.Value = 1 Then SetPortBit &H37A, 2 Else ClrPortBit &H37A, 2 End If End Sub

Agfianto Eko Putra (dokumen versi 2.0) 2008 - 8

Akses Port Paralel (Menggunakan Visual Basic 6.0)Private Sub Kontrol3_Click() If Kontrol3.Value = 1 Then SetPortBit &H37A, 3 Else ClrPortBit &H37A, 3 End If End Sub Saat dijalankan pertama kali, program akan mengirimkan data &H00 ke port Data dan &H0B (0000 1011) ke port Kontrol untuk mematikan semua LED: Private Sub Form_Load() PortOut &H378, &H0 PortOut &H37A, &HB End Sub

Contoh program 03Contoh program ketiga ini digunakan untuk memperbaiki adanya pin-pin yang sungsang, perhatikan perubahannya pada beberapa subrutin Visual Basic yang bersangkutan, yaitu pada Kontrol-0, Kontrol-1 dan Kontrol-3 (sesuai dengan tabel 2), artinya jika kita kirim Logika 1, maka yang terjadi sesungguhnya pada pin kontrol yang bersangkutan adalah Logika 0 bukan Logika 1, demikian juga sebeliknya. Sehingga dalam program perlu dilakukan modifikasi sebagai berikut:Private Sub Kontrol0_Click() If Kontrol0.Value = 1 Then ClrPortBit &H37A, 0 Else SetPortBit &H37A, 0 End If End Sub Private Sub Kontrol1_Click() If Kontrol1.Value = 1 Then ClrPortBit &H37A, 1 Else SetPortBit &H37A, 1 End If End Sub Private Sub Kontrol2_Click() If Kontrol2.Value = 1 Then SetPortBit &H37A, 2 Else ClrPortBit &H37A, 2 End If End Sub '