Contoh Program Interface USB-2R3I Menggunakan Bahasa Python


USB-2R3I (www.usbinov.com/usb-2r3io) adalah modul interface USB yang memiliki 2 buah output relay dan 3 buah input digital. Modul ini banyak digunakan sebagai interface pada sistem otomasi palang pintu parkir. Relay digunakan untuk mengontrol barrier-gate atau palang-pintu dan input digunakan untuk membaca tombol, sensor kendaraan (vehicle loop detektor). Berikut adalah foto dari modul USB-2R3IO.

Kami menyediakan berbagai contoh program untuk memudahkan Anda dalam mempelajari dan mengembangkan software untuk aplikasi Anda. Beberapa contoh program yang tersedia antara lain program versi bahasa C, Lazarus/FreePascal dan VB6. Berikut adalah screenshot contoh program C dan VB6.

Pada tulisan ini akan saya berikan source code untuk contoh program USB-2R3IO versi Python. Silakan simak listing program di bawah ini.

#-------------------------------------------------------------------------------
# Name: usb2r3i.py
# Purpose: TESTING USB2R3IO
# Author: Chandra MDE
#-------------------------------------------------------------------------------

import usb.core, time

def main():
  ec = 0
  usbrel = usb.core.find(idVendor=5824, idProduct=1500)
  if usbrel == None:
    print "USB-2R3IO tidak ditemukan!"
    exit
  else:
    ID = usbrel.ctrl_transfer(0xc0, 0, 0, 0, 100, 1000)
    print ID.tostring()
    dd = 0.5
    for i in range(1,1000):
      print "Perulangan ke-", i

      #baca input
      try:
        inputs = usbrel.ctrl_transfer(0xC0, 2, 0, 0, 100, 1000)
        print inputs.tostring()
      except:
        ec = ec + 1
        print "E: Read inputs", ec
        for j in range(1,10):
          time.sleep(1)
          usbrel.usb.core.find(idVendor=5824, idProduct=1500)
          if usbrel != None:
            break

#relay1
      try:
        usbrel.ctrl_transfer(0xC0, 1, 1, 1, 100, 1000) #ON
      except:
        ec = ec + 1
        print "E: Relay1ON", ec
        for j in range(1,10):
          time.sleep(1)
          usbrel = usb.core.find(idVendor=5824, idProduct=1500)
          if usbrel != None:
            break
        usbrel.ctrl_transfer(0xC0, 1, 1, 1, 100, 1000)

      time.sleep(dd)

      try:
        usbrel.ctrl_transfer(0xC0, 1, 0, 1, 100, 1000) #OFF
      except:
        ec = ec + 1
        print "E: Relay1OFF", ec
        for j in range(1,10):
          time.sleep(1)
          usbrel = usb.core.find(idVendor=5824, idProduct=1500)
          if usbrel != None:
            break
        usbrel.ctrl_transfer(0xC0, 1, 0, 1, 100, 1000)
      time.sleep(dd)

#relay2
      try:
        usbrel.ctrl_transfer(0xC0, 1, 1, 2, 100, 1000) #ON
      except:
        ec = ec + 1
        print "E: Relay2ON", ec
        for j in range(1,10):
          time.sleep(1)
          usbrel = usb.core.find(idVendor=5824, idProduct=1500)
          if usbrel != None:
            break
        usbrel.ctrl_transfer(0xC0, 1, 1, 2, 100, 1000)

      time.sleep(dd)

      try:
        usbrel.ctrl_transfer(0xC0, 1, 0, 2, 100, 1000) #OFF
      except:
        ec = ec + 1
        print "E: Relay2OFF", ec
        for j in range(1,10):
          time.sleep(1)
          usbrel = usb.core.find(idVendor=5824, idProduct=1500)
          if usbrel != None:
            break
        usbrel.ctrl_transfer(0xC0, 1, 0, 2, 100, 1000)
      time.sleep(dd)

if __name__ == '__main__':
main()

Semoga bermanfaat.

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 )

Foto Google+

You are commenting using your Google+ 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 )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.