Program Kontrol Modul USB-2REL Menggunakan Lazarus/Free Pascal Dengan LibUSB.Pas


usb2rel_lazarus_libusb

Pada tulisan terdahulu, program kontrol modul USB-2REL versi Lazarus/Free Pascal masih menggunakan fungsi ShellExecute untuk mengeksekusi program USB2R.EXE. Tapi (alhamdulillaah) tidak demikian dengan program yang akan kita bahas pada tulisan ini.

Program kita kali ini akan langsung mengakses port USB menggunakan library libusb0.dll yang merupakan bawaan paket driver libusb-win32.

Special thanks to Stephan Meyer, Johannes Erdfelt, and Yvo Nelemans for providing the special unit LibUSB.Pas.

File LibUSB.Pas yang saya dapat dari sebuah forum berbahasa Jerman ini dibuat menggunakan Delphi, oleh karenanya perlu dilakukan sedikit modifikasi agar sesuai dengan aturan kompiler Free Pascal. Untuk versi Delphi, silakan baca di sini. πŸ˜€

File libusb.pas untuk Lazarus/Free Pascal lengkap dengan project Lazarus USB-2REL dapat Anda miliki dengan memberikan komentar pada tulisan ini. Cantumkan nama dan alamat email yang benar dan secepatnya akan saya emailkan link untuk mengunduh file project Lazarus yang dimaksud. πŸ™‚

Agar program dapat berkomunikasi dengan modul USB-2REL, maka program harus memiliki handle (pointer) dari modul USB-2REL. Untuk keperluan itu, kita buat sebuah fungsi untuk mencari dan mendapatkan handle suatu piranti USB sebagai berikut:

function USBFindDevice(VID, PID: word): pUSB_Device;
var
  bus: PUSB_BUS;
  dev: PUSB_device;
begin
  result := nil;
  usb_init();
  usb_find_busses();
  usb_find_devices();
  bus:=USB_get_Busses;
  while (bus<>nil) do
  begin
    dev:= bus^.devices;
    while (dev<>nil) do begin
      if (dev^.descriptor.idVendor=VID) and (dev^.descriptor.idProduct=PID) then
        result:=dev;
      dev:=dev^.next;
    end;
    bus:=bus^.next;
  end;
end;

Dengan menggunakan fungsi USBFindDevice(), program mencari dan mendapatkan handle dari modul USB-2REL ketika form diciptakan. Berikut adalah rutin dari event FormCreate:

procedure TForm1.FormCreate(Sender: TObject);
begin
  USB2REL_Device:= USBFindDevice(5824, 1500);
  USB2REL_Handle:= usb_open(USB2REL_Device);
end;

Jika rutin di atas berhasil, maka handle dari modul USB-2REL akan tersimpan pada variabel USB2REL_Handle.

Catatan: Pada contoh program ini tidak dilakukan proses validasi apakah fungsi berhasil mendapatkan handle ataukah tidak. Silakan ditambahkan sendiri ya. πŸ˜€

Untuk mengontrol relay-relay modul USB-2REL, digunakan fungsi usb_control_msg() sebagai berikut:

procedure TForm1.btnRelay1OnClick(Sender: TObject);
begin
  usb_control_msg(USB2REL_Handle, $40, 1, 1, 1, buffer, sizeof(buffer), 5000);
  grpRelay1.Caption:= ‘ RELAY-1 = ON ‘;
end;

procedure TForm1.btnRelay1OffClick(Sender: TObject);
begin
  usb_control_msg(USB2REL_Handle, $40, 1, 0, 1, buffer, sizeof(buffer), 5000);
  grpRelay1.Caption:= ‘ RELAY-1 = OFF ‘;
end;

procedure TForm1.btnRelay2OnClick(Sender: TObject);
begin
  usb_control_msg(USB2REL_Handle, $40, 1, 1, 2, buffer, sizeof(buffer), 5000);
  grpRelay2.Caption:= ‘ RELAY-2 = ON ‘;
end;

procedure TForm1.btnRelay2OffClick(Sender: TObject);
begin
  usb_control_msg(USB2REL_Handle, $40, 1, 0, 2, buffer, sizeof(buffer), 5000);
  grpRelay2.Caption:= ‘ RELAY-2 = OFF ‘;
end;

procedure TForm1.btnAllRelayOnClick(Sender: TObject);
begin
  usb_control_msg(USB2REL_Handle, $40, 2, 0, 0, buffer, sizeof(buffer), 5000);
  grpRelay1.Caption:= ‘ RELAY-1 = ON ‘;
  grpRelay2.Caption:= ‘ RELAY-2 = ON ‘;
end;

procedure TForm1.btnAllRelayOffClick(Sender: TObject);
begin
  usb_control_msg(USB2REL_Handle, $40, 3, 0, 0, buffer, sizeof(buffer), 5000);
  grpRelay1.Caption:= ‘ RELAY-1 = OFF ‘;
  grpRelay2.Caption:= ‘ RELAY-2 = OFF ‘;
end;

Project selengkapnya dapat Anda miliki dengan memberikan komentar Anda pada tulisan ini. Cantumkan nama dan alamat email yang benar dan secepatnya akan kami kirimkan download link untuk mengunduh file project Lazarus yang dimaksud.

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

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, Delphi, Driver Relay, Elektronika, Gratisan, Industrial Control and Automation, Lazarus/FreePascal, 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.501 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: