Program Kontrol Modul USB-2REL Versi Python GUI (Tkinter)


usb2rel_python_tkinter

Sudah semingguan saya "tergila-gila" dengan Python. Betul-betul terpesona karena telah membuktikan sendiri bagaimana mudahnya membuat program dengan Python. Program yang terasa rumit ketika saya kerjakan menggunakan bahasa pemrograman yang lain seperti VB.NET, Delphi/Lazarus, FreeBASIC, XBLite, dan C, terasa sangat mudah ketika saya kerjakan dengan Python.

Python itu cespleng.😀

Hampir setiap tutorial dan buku pemrograman Python yang saya baca, selalu menyatakan bahwa Python adalah bahasa pemrograman yang gamblang, mudah dipelajari dan mudah digunakan. Dinyatakan juga bahwa dengan Python kita dapat berkonsentrasi pada bagaimana menyelesaikan masalah pemrograman dan bukannya berkonsentrasi pada pemrograman.

Python mempunyai julukan: "Programming at the speed of thought". Mungkin karena saking mudahnya mengimplementasikan ide/pemikiran menjadi sebuah program, makanya Python mendapat julukan tersebut.

Nah, jika Anda tertarik dengan Python, maka saya sarankan untuk banyak membaca pengantar pemrograman Python dari berbagai sumber agar semakin termotivasi untuk segera mempelajari dan menggunakannya.🙂

Satu hal lagi yang membuat saya semakin tergila-gila adalah karena Python juga handal digunakan untuk pemrograman CGI, bahkan dengan kekayaan library yang dimiliki Python, interpreter ini memiliki kelebihan dibanding pemrograman CGI lain seperti PHP, Lua, atau Ruby. Setidaknya, begitulah menurut kebutuhan saya.🙂

Satu-satunya hal yang cukup menghambat laju pengembangan program aplikasi python adalah GUI. Pemrograman GUI pada Python cukup mengasikkan (baca=mengerikan).😀

Tapi lantaran ingin sekali membuat program GUI untuk antarmuka kontrol modul RELAY USB, RELAY SERIAL, dan RELAY LPT, akhirnya kemarin saya luangkan waktu hampir seharian untuk belajar pemrograman GUI pada Python. Screenshot di atas adalah aplikasi Python GUI pertama yang pernah saya buat menggunakan Tkinter.

Sebelumnya, saya sudah bereksperimen dengan Python dan PyUSB 1.0 untuk mengontrol modul USB-2REL (baca di sini dan di sini). Dan alhamdulillaah kemarin sudah berhasil membuat versi GUI-nya.😀

Nah, berikut adalah source code program kontrol modul USB-2REL menggunakan bahasa Python yang didukung library PyUSB 1.0 dan library GUI Tkinter. Selamat menikmati😀

#——————————————————————————-
# Name:         USB-2REL_GUI.py
# Purpose:     Demo program kontrol modul USB-2REL
# Author:       Chandra MDE
# Created:     19/04/2013
# Copyright:   (c) Chandra MDE 2013
#——————————————————————————-

import Tkinter
import tkMessageBox
import usb.core

def main():
    Form1 = Tkinter.Tk()
    Form1.title(‘Python USB-2REL by Chandra MDE’)
    Form1.resizable(0, 0)

    ws = Form1.winfo_screenwidth()
    hs = Form1.winfo_screenheight()
    x = (ws/2) – (340/2)
    y = (hs/2) – (220/2)
    Form1.geometry(‘340×220+%d+%d’ % (x, y))

    label1 = Tkinter.Label(Form1, fg=’blue’, font=’Arial 12 bold’, text=’Demo Program Kontrol Modul USB-2REL’).place(x=10, y=10)

    btnRelay1On = Tkinter.Button(Form1, command=Relay1On, fg=’darkblue’, font=’Tahoma 9 bold’, width=10, height=1, text=’RELAY-1 ON’, padx=15, pady=4).place(x=40, y=50)
    btnRelay1Off = Tkinter.Button(Form1, command=Relay1Off, fg=’darkblue’, font=’Tahoma 9 bold’, width=10, height=1, text=’RELAY-1 OFF’, padx=15, pady=4).place(x=40, y=85)

    btnRelay2On = Tkinter.Button(Form1, command=Relay2On, fg=’darkgreen’, font=’Tahoma 9 bold’, width=10, height=1, text=’RELAY-2 ON’, padx=15, pady=4).place(x=180, y=50)
    btnRelay2Off = Tkinter.Button(Form1, command=Relay2Off, fg=’darkgreen’, font=’Tahoma 9 bold’, width=10, height=1, text=’RELAY-2 OFF’, padx=15, pady=4).place(x=180, y=85)

    btnRelay2On = Tkinter.Button(Form1, command=Relay12On, fg=’red’, font=’Tahoma 9 bold’, width=10, height=1, text=’ALL RELAY ON’, padx=15, pady=4).place(x=40, y=130)
    btnRelay2Off = Tkinter.Button(Form1, command=Relay12Off, fg=’red’, font=’Tahoma 9 bold’, width=10, height=1, text=’ALL RELAY OFF’, padx=15, pady=4).place(x=180, y=130)

    label2 = Tkinter.Label(Form1, font=’Tahoma 8′, text=’TEKNIK ELEKTRO LINKS’).place(x=10, y=180)
    label3 = Tkinter.Label(Form1, font=’Tahoma 8′, text=’Website: http://teknikelektrolinks.com’).place(x=10, y=195)

    label4 = Tkinter.Label(Form1, fg=’yellow’, bg=’red’, font=’Tahoma 10 bold’, text=’ (PyUSB, Tkinter) ‘).place(x=207, y=185)

    #dapatkan handle dari USB-2REL
    global usb2rel
    usb2rel = usb.core.find(idVendor=5824, idProduct=1500)
    if usb2rel == None:
        tkMessageBox.showinfo(‘Error!’, "USB-2REL tidak ditemukan!")
        Form1.destroy()

    Form1.mainloop()

def Relay1On():
    print "Relay 1 on"
    usb2rel.ctrl_transfer(0x40, 1, 1, 1, None)

def Relay1Off():
    print "Relay 1 off"
    usb2rel.ctrl_transfer(0x40, 1, 0, 1, None)

def Relay2On():
    print "Relay 2 on"
    usb2rel.ctrl_transfer(0x40, 1, 1, 2, None)

def Relay2Off():
    print "Relay 2 off"
    usb2rel.ctrl_transfer(0x40, 1, 0, 2, None)

def Relay12On():
    print "Relay 1, 2 on"
    usb2rel.ctrl_transfer(0x40, 2, 0, 0, None)

def Relay12Off():
    print "Relay 1, 2 off"
    usb2rel.ctrl_transfer(0x40, 3, 0, 0, None)

if __name__ == ‘__main__’:
    main()

Program berfungsi dengan baik sekali sesuai dengan yang saya harapkan. Berikut adalah tampilan program Python GUI untuk modul USB-2REL pada platform Windows XP.

usb2rel_python_gui

Modul USB-2REL dapat Anda dapatkan di: http://teknikelektrolinks.com.

Selamat belajar dan selamat berkarya!

🙂

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