Berkenalan Dengan pdScript, Interpreter Pascal Buatan Precision Software And Consulting – Membuat Program Kontroler Modul Relay LPT-8REL


pdScript_About

pdScript (Precision Delphi Script) adalah sebuah program interpreter bahasa skrip Delphi/Pascal yang didukung dengan fasilitas pemrograman GUI yang cukup lengkap. Interpreter pdScript bersifat freeware untuk keperluan pribadi, pendidikan, ataupun korporasi.

Interpreter pdScript dapat mengeksekusi skrip Delphi/Pascal langsung dari lingkungan Windows, dari command-line, atau dari interpreter dynamic-library yang dijalankan dari dalam suatu program aplikasi (embedded script).

Dengan pdScript, kita juga dapat menghasilkan file executable dengan pilihan enkripsi untuk keperluan proteksi program. Untuk program-program aplikasi sederhana kita bisa menggunakan pdScript, sehingga dapat menjadi alternatif dari Delphi. Mantab, bukan? πŸ™‚

Berikut adalah aplikasi pdScript (simply copy-pasted from pdScript website):

  • Tasks automation – easy to use, yet powerful way to solve the current and/or recurring tasks
  • Externally used scripts – can be used as an independent (external) extension for your own applications
  • Integrated scripting – can serve as a scripting engine for your application’s plug-in mechanism
  • Development – can be used to design and run a simple, but ready to use, applications
  • At school – possibility of learning the Object Pascal language in simplified Delphi like environment

Untuk mendukung interpreter pdScript, Precision Software & Consulting juga menyediakan produk pdScript IDE. Lisensi pdScript IDE versi Lite dapat dibeli seharga 11 euro. Kalau dirupiahkan sekitar 140an ribu. Sangat terjangkau bukan? πŸ™‚

Memang tidak semua fitur Delphi ada pada pdScript karena memang pdScript tidak ditujukan untuk menggantikan Delphi. Yang sangat menarik adalah, pdScript IDE memiliki visual designer seperti layaknya Delphi. Komponen bawaannya juga banyak, sangat memadai untuk aplikasi desktop. Dan komponen penting yang jarang ditemukan pada IDE yang lain adalah komponen TStringGrid dan TSpeedButton. Keduanya adalah komponen favorit saya. πŸ™‚

pdScript_GUI

Untuk membuktikan sedikit kemampuan dari pdScript, marilah kita mencoba membuat program sederhana yakni program kontrol modul relay LPT-8REL.

image

Desain user-interface dari program kontrol modul relay LPT-8REL ditunjukkan oleh gambar di samping. Sangat sederhana, hanya terdiri dari 8 pasang button ON/OFF untuk masing-masing relay (RELAY-1 s/d RELAY-8) dan beberapa label, image, dan timer.

Untuk menyederhanakan skrip, maka kita berikan nomor tag pada setiap button. Untuk button RELAY-1: ON dan RELAY-1: OFF, kita berikan nilai properti Tag=1. Untuk button RELAY-2: ON dan RELAY-2: OFF, kita berikan nilai properti Tag=2. Dan seterusnya hingga button RELAY-8.

Nomor Tag ini nantinya akan digunakan untuk mengidentifikasi button manakah yang di-klik oleh user. Dengan teknik ini, skrip akan jauh lebih sederhana. Perhatikan listing program selengkapnya berikut ini.

//Controller LPT-8RELAY – Chandra MDE – http://teknikelektrolinks.com
program LPT8Relay;

var
  LPTAddress: Word;
  LPTValue: Byte;
  RelayOn: array[1..8] of Byte;
  RelayOff: array[1..8] of Byte;
function Inp32(PortAdr: word): byte; external ‘Inp32@inpout32.dll stdcall’;
function Out32(PortAdr: word; Data: byte): byte; external ‘Out32@inpout32.dll stdcall’;

procedure Relay(n: Byte; s: Byte);
begin
  LPTValue:= Inp32(LPTAddress);
  if s=0 then
    LPTValue:= LPTValue AND RelayOff[n]
  else
    LPTValue:= LPTValue OR RelayOn[n];
  Out32(LPTAddress, LPTValue);
end;

procedure ButtonClick(Sender: TObject);
begin
  if TButton(Sender).Caption=’ON’ then
  begin
    Relay(TButton(Sender).Tag, 1);
  end else if TButton(Sender).Caption=’OFF’ then
  begin
    Relay(TButton(Sender).Tag, 0);
  end;
end;

procedure Timer1_OnTimer(Sender: TObject);
begin
  Label3.Caption:= ‘Today: ‘ + FormatDateTime(‘dd/mm/yyyy – hh:mm:ss’, Now);
end;

procedure AssignEvents;
begin
  Button1.OnClick := @ButtonClick;
  Button2.OnClick := @ButtonClick;
  Button3.OnClick := @ButtonClick;
  Button4.OnClick := @ButtonClick;
  Button5.OnClick := @ButtonClick;
  Button6.OnClick := @ButtonClick;
  Button7.OnClick := @ButtonClick;
  Button8.OnClick := @ButtonClick;
  Button9.OnClick := @ButtonClick;
  Button10.OnClick := @ButtonClick;
  Button11.OnClick := @ButtonClick;
  Button12.OnClick := @ButtonClick;
  Button13.OnClick := @ButtonClick;
  Button14.OnClick := @ButtonClick;
  Button15.OnClick := @ButtonClick;
  Button16.OnClick := @ButtonClick;
  Timer1.OnTimer := @Timer1_OnTimer;
end;

var
  n: Byte;
begin
  RelayOn[1]:= 1;
  RelayOn[2]:= 2;
  RelayOn[3]:= 4;
  RelayOn[4]:= 8;
  RelayOn[5]:= 16;
  RelayOn[6]:= 32;
  RelayOn[7]:= 64;
  RelayOn[8]:= 128;
  for n:= 1 to 8 do RelayOff[n]:= 255-RelayOn[n];
  LPTValue:= 0;
  LPTAddress:= $378;
  AssignEvents;
end.

Jika Anda perhatikan, pada prosedur AssignEvents, Button1 s/d Button16 memiliki prosedur event-handler yang sama yakni ButtonClick. Dan pada prosedur ButtonClick dilakukanlah seleksi/identifikasi button manakah yang di-klik oleh user. Bandingkan jika masing-masing button memiliki prosedur event-handler sendiri-sendiri, pasti skripnya jauh lebih panjang.

Satu lagi yang perlu diketahui adalah pada pdScript kita tidak bisa menginisialisasi nilai variabel pada saat pendeklarasian seperti layaknya Delphi. Itulah sebabnya nilai array RelayOn dan RelayOff diisi secara manual menggunakan baris-baris perintah program.

Skrip di atas menggunakan library InpOut32.dll untuk mengakses port paralel LPT. Untuk itu perlu adanya pendeklarasian fungsi eksternal sebagai berikut:

function Inp32(PortAdr: word): byte; external ‘Inp32@inpout32.dll stdcall’;
function Out32(PortAdr: word; Data: byte): byte; external ‘Out32@inpout32.dll stdcall’;

Deklarasi tersebut sedikit berbeda dengan pendeklarasian pada Delphi/Lazarus.

Nah, bagaimanakah hasilnya jika skrip di atas kita running? Berikut adalah screenshot hasil interpretasi skrip di atas oleh pdScript.

image

Sederhana tapi mantab, bukan? πŸ˜€

Semoga bermanfaat!

πŸ™‚

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, Gratisan, Industrial Control and Automation, Lazarus/FreePascal, pdScript, 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: