Mudahnya Mengontrol Driver LPT-RELAY Menggunakan Python dan INPOUT32.DLL


lpt4rel_python

Python memang mudah! 😀

Setelah pada tulisan-tulisan sebelumnya dibahas tentang bagaimana mudahnya mengontrol 1 unit USB-2REL bahkan 5 unit USB-2REL menggunakan Python + PyUSB, dan juga bagaimana mudahnya mengontrol modul SER-2REL menggunakan Python + PySerial, maka kali ini kita akan membahas tentang bagaimana mudahnya mengontrol modul LPT-RELAY menggunakan Python + InpOut32.DLL.

Jika Anda belum memiliki library InpOut32.dll pada komputer Anda, Anda dapat mengunduhnya melalui link berikut ini:

Download InpOut32.dll
( ~80KB )

Setelah download, letakkan file InpOut32.dll pada direktori c:\windows\system32 untuk memastikan library tersebut dapat diakses oleh program.

Selanjutnya kita bisa langsung bereksperimen dengan Python. Perhatikan screenshot Python Shell berikut ini.

image

Untuk dapat mengakses file .dll, terlebih dahulu kita import modul ctypes. Modul ini tidak tersedia pada paket Python versi di bawah 2.4. Oleh karenanya jika Anda menggunakan Python versi 2.3 ke bawah, Anda harus melakukan instalasi modul ctypes terlebih dahulu. Akan tetapi rasanya saat ini sudah jarang sekali yang menggunakan Python dengan versi dibawah 2.5. 🙂

Python yang saya gunakan pada eksperimen ini adalah Python 2.5.4 oleh karenanya tidak diperlukan lagi instalasi modul ctypes.

Sekarang mari kita bahas masing-masing perintah di atas.

Setelah perintah:

>>> import ctypes

kita dapat langsung menulis data ke atau membaca data dari port LPT. Pada contoh di atas, nilai 255 ditulis ke port data LPT dengan alamat 378H. Adapun baris perintahnya adalah:

>>> ctypes.windll.inpout32.Out32(0x378, 255)

Setelah baris perintah tersebut dieksekusi, maka D0-D7 dari port LPT 378H akan berlogika tinggi (HIGH). Dan untuk mengeset D0-D7 dari port data LPT 378H dengan logika rendah (LOW), maka perintahnya adalah sebagai berikut:

>>> ctypes.windll.inpout32.Out32(0x378, 0)

Untuk sekedar meyakinkan, kita lakukan lagi beberapa eksperimen penulisan data ke port data LPT 378H sebagai berikut:

>>> ctypes.windll.inpout32.Out32(0x378, 2)
>>> ctypes.windll.inpout32.Out32(0x378, 0)

Sangat mudah, bukan? 😀

Library InpOut32.dll memiliki fungsi untuk membaca port yakni Inp32(). Berikut adalah contoh penggunaannya seperti screenshot di atas.

>>> ctypes.windll.inpout32.Out32(0x378, 2)
>>> i = ctypes.windll.inpout32.Inp32(0x378)
>>> print i
2

Hasil pembacaan port data LPT 378H setelah port data tersebut ditulis dengan data 2 adalah 2. Hal ini membuktikan bahwa fungsi Inp32() berfungsi dengan baik.

Masih kurang percaya? Kita lakukan sekali lagi dengan data yang berbeda. Kali ini kita tulis data 0x55 atau 85 desimal, dan membaca kembali port data dan menampilkan hasilnya.

>>> ctypes.windll.inpout32.Out32(0x378, 0x55)
>>> i = ctypes.windll.inpout32.Inp32(0x378)
>>> print i
85

Bagaimana? Memang sangat mudah, kan? 😀

Sebelum mengakhiri eksperimen ini, marilah kita buat sebuah program sederhana untuk menyalakan bit D0-D7 secara bergantian dengan delay-on dan delay-off = 1 detikan. Anda bisa memasang 8 buah LED ke port data LPT (D0 – D7) untuk menghasilkan efek lampu yang menyala bergantian.

Berikut adalah listing programnya.

#——————————————————————————-
# Name:        Test-InpOut32.py
# Purpose:
# Author:      Chandra MDE
# Created:     19/04/2013
# Copyright:   (c) Chandra MDE 2013
# http://teknikelektrolinks.com
#——————————————————————————-

import ctypes, time

def SetBit(port, bit):
    dataread = ctypes.windll.inpout32.Inp32(port)
    datawrite = dataread | (1 << bit)
    ctypes.windll.inpout32.Out32(port, datawrite)

def ResetBit(port, bit):
    dataread = ctypes.windll.inpout32.Inp32(port)
    datawrite = dataread & ~(1 << bit)
    ctypes.windll.inpout32.Out32(port, datawrite)

def main():
    print "Testing library InpOut32.dll"
    print "Output = Lampu Berjalan dari D0-D7"
    print "——————————————–"

    for i in range(8):
        SetBit(0x378, i)
        x = ctypes.windll.inpout32.Inp32(0x378)
        print "Port data LPT setelah bit ke", i, " set = ", x
        time.sleep(1)
        ResetBit(0x378, i)
        x = ctypes.windll.inpout32.Inp32(0x378)
        print "Port data LPT setelah bit ke", i, " reset = ", x
        time.sleep(1)

if __name__ == ‘__main__’:
    main()

Jika dieksekusi, program akan menghasilkan display LED yang menyala bergantian mulai dari LED D0 sampai LED D7 dan tampilan pada monitor sebagai berikut:

Testing library InpOut32.dll
Output = Lampu Berjalan dari D0-D7
——————————————–
Port data LPT setelah bit ke 0  set =  1
Port data LPT setelah bit ke 0  reset =  0
Port data LPT setelah bit ke 1  set =  2
Port data LPT setelah bit ke 1  reset =  0
Port data LPT setelah bit ke 2  set =  4
Port data LPT setelah bit ke 2  reset =  0
Port data LPT setelah bit ke 3  set =  8
Port data LPT setelah bit ke 3  reset =  0
Port data LPT setelah bit ke 4  set =  16
Port data LPT setelah bit ke 4  reset =  0
Port data LPT setelah bit ke 5  set =  32
Port data LPT setelah bit ke 5  reset =  0
Port data LPT setelah bit ke 6  set =  64
Port data LPT setelah bit ke 6  reset =  0
Port data LPT setelah bit ke 7  set =  128
Port data LPT setelah bit ke 7  reset =  0
>>>

Nah, berkaitan dengan modul LPT-4REL seperti pada foto di atas, berikut adalah perintah untuk mengaktifkan RELAY-1, mematikan RELAY-1, mengaktifkan RELAY-2, mematikan RELAY-2, dan seterusnya sampai RELAY-4.

SetBit(0x378, 1)  #RELAY-1 ON
ResetBit(0x378, 1)  #RELAY-1 OFF
SetBit(0x378, 2)  #RELAY-2 ON
ResetBit(0x378, 2)  #RELAY-2 OFF
SetBit(0x378, 3)  #RELAY-3 ON
ResetBit(0x378, 3)  #RELAY-3 ON
SetBit(0x378, 4)  #RELAY-4 ON
ResetBit(0x378, 4)  #RELAY-4 OFF

Semoga bermanfaat.

Selamat belajar dan selamat berkarya!

🙂

Iklan
Perihal

Cek situs kami di http://teknikelektrolinks.com. Blog Raspberry Pi: http://raspi.teknikelektrolinks.com

Tagged with: , , ,
Ditulis dalam Antarmuka Komputer, Driver Relay, Elektronika, Gratisan, Industrial Control and Automation, Python, Software/Programming

Tinggalkan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s

Kategori

Bergabunglah dengan 2.503 pengikut lainnya

Hot Links




Display Counter 3-Digit Dengan Koneksi Wi-Fi
Display Nomor Antrian WiFi Android
Mengontrol Relay Via USB/Serial dan Wi-Fi
USB Relay USB-2REL
USB Relay USB-4REL
Water Level Control WLC-02
Serial Relay SER-4REL
NEO STARDUINO SMS ALARM

Alarm SMS Berbasis NEO STARDUINO

1 PC – 6 Unit USB-2REL

Testing 6 USB-2REL Pada 1 Komputer

Standard Pengujian USB-2REL

Pengujian USB-2REL Sebelum Dikirim

LPT-4REL on Knoppix 7.0.5

Testing LPT-4REL on Knoppix Linux

T101 Inkubator Telur

T101 Inkubator Penetas Telur

KONTROL PERALATAN LISTRIK VIA PORT LPT KOMPUTER

Demo Kontrol Kontaktor via Port LPT

STARDUINO meets ANDROID

Demo Kontrol Bluetooth Relay Android

STARDUINO SMS RELAY

Kontrol Relay Via SMS Dengan Starduino

STARDUINO WEB RELAY

Demo Kontrol Relay Via Web/Internet

JustBASIC USB-2REL Control

Demo Kontrol USB-2REL + JustBASIC

STARDUINO + GPS + LCD

Demo Starduino GPS Dengan LCD

USB-2REL EXTREME TEST

Demo Kontrol On/Off Lampu USB-2REL

THERMOSTAT T101 IN ACTION

Demo Thermostat T101 Pada SV=37.5°C

WATER LEVEL CONTROL WLC-02

Demo Kontrol Level Air Tandon WLC-02

HUMIDITY CONTROLLER H103

Demo Kontrol Kelembaban H103 (DHT11)

%d blogger menyukai ini: