Sunday - May 18, 2008

Home | Site Map | Channels | Profile | Press Room | Services | Contact 

currently 8 user(s) online

search 

   Latest News

»

sony-ak.com Luncurkan Kamus Teknologi Informasi (May 27, 2006)

»

sony-ak.com Luncurkan IT Event Calendar (May 20, 2006)

»

Web Chat Berbasis AJAX dari sony-ak.com (May 09, 2006)

»

sony-ak.com Advertising Program (May 01, 2006)

»

Sony AK di Tabloid PCplus (April 18, 2006)

news archives » 


   Random Article

»

Beberapa Alasan Mengapa Perusahaan Melakukan Outsourcing dalam Teknologi Informasi (2868)

»

Membuat Gateway NAT (Network Address Translator) Sederhana dengan Linux Disket (floppyfw) (4811)

»

Tips PHP: Seputar Penggunaan Single dan Double Quotes (1885)

»

Security dalam Reporting Service SQL Server 2000 (1913)

»

Tips MySQL: Case Sensivity pada Database MySQL (1330)

   Newsletter

Join our newsletter, you will get alert about content updates

powered by Yahoo! Groups















Nedstat Basic - Free web site statistics

 
 
Contoh Aplikasi Interfacing Pada Borland Delphi Menggunakan Parallel Port

Author: Ratih Kusumawati
Published: June 28, 2004
Visits: 11078 - Category: Borland Delphi
 
     
 

Jika Anda penggemar rangkaian elektronik analog dan ingin memproses data dari ragkaian tersebut dalam PC maka Anda akan membutuhkan konektor penghubung antara rangkaian analog Anda dengan PC Anda yang merupakan peralatan digital. Konektor tersebut itulah yang disebut dengan interface. Interface dapat dilakukan dalam beberapa cara antara lain yang sering digunakan adalah melalui parallel port (printer) dan IC PPI 8255.

Kali ini penulis akan membahas mengenai interface dengan menggunakan parallel port (printer) sebab dengan parallel port anda tidak membutuhkan PPI card lagi. Untuk program pengambilan data dari interface diperlukan fungsi atau prosedur yang mampu membaca input dan output dari port. Kali ini kita akan menggunakan io.dll untuk interfacingnya. File io.dll ini dapat anda download pada akhir tulisan ini.

Misalnya kita akan membuat program sederhana membaca keluaran tegangan dari rangkaian analog. Pertama kali kita harus tahu fungsi pin-pin parallel port:

Kita juga harus tahu alamat dari parallel port dengan melihatnya lewat my computer - view system information - hardware - device manager - view - resource by type - Input/Output(I/O). Cari Printer Port maka akan tertulis alamat (00000378 - 0000037F) Kita dapat menggunakan alamat dengan:

Data (output) :$378 
Status (input) :$379 
Control (input) :$37A

Dengan D7 sebagai MSB dan D0 menjadi LSB. Data masukan dari ADC ke PC diletakkan pada status port yang hanya terdiri dari 5 pin (pin busy, ACK, PE, Select, Error) maka masukan 8 byte dibagi menjadi 2, 4 byte - 4 byte, maka masuknya data bergantian dengan mengatur pergantian strobe pada control port. Pada pengambilan data, data yang masuk pada pin busy akan di-invers, jika Anda memasukkan data 0 maka yang terbaca adalah 1. Maka dari itu untuk D7 pada status port harus di-invers balik, dalam program digunakan fungsi XOR $80.

Anda harus memasukkan function dan procedure untuk memanggil io.dll terlebih dahulu sebelum anda memakai komponen ini. Pemanggilan itu dapat dituliskan seperti berikut:

function PortIn(Port:Word):Byte;stdcall;external'io.dll';

procedure PortOut(Port:Word;Data:Byte); stdcall; external'io.dll';

Contoh Program:

var
  Form1: TForm1;
  x :integer;

implementation

{$R *.dfm}

function PortIn(Port:Word):Byte;stdcall;external'io.dll';

procedure PortOut(Port:Word;Data:Byte); stdcall; external'io.dll';

procedure TForm1.Button1Click(Sender: TObject);
begin
  timer1.Enabled:=true;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
var
  input1,input2,data:integer;

begin
  inc(x);
  label2.Caption :=floattostr(x);
  PortOut($37A,$01);  //$37A adalah alamat untuk
                      //mengatur masuknya data (strobe 1)
                      //diambil data 4 byte yang
                      //dibelakang dahulu
  input1:= PortIn($379) xor $80;  //$379 alamat input
                                  //dari ADC ke PC
                                  //dengan XOR $80 karena
                                  //pin ke 10 invers
  input1:= (input1 shr 4) and $0F; //4 byte digeser dan
                                   //di AND $0F agar
                                   //data XXXX yang kita
                                   //tidak tahu isinya
                                   //dapat dihilangkan
  PortOut($37A,$00); //strobe 0 sehingga data 4 byte
                     //pertama dapat masuk
  input2:=(PortIn($379) xor $80);
  input2:= input2 and $F0;
  data:= input1 or input2;
  label1.Caption :=floattostr((data/255)*5)+' Volt';
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  timer1.Enabled:=false;
end;

end.

Untuk gambaran jalannya program dapat penulis gambarkan seperti dibawah ini:


ket : xxxx adalah data yang tidak diketahui

Ketika dirun label1 tertulis 2.25 Volt. Variable "data" tidak mengambil nilai biner tetapi langsung desimal. Dibagi 255 karena jika byte penuh maka desimalnya adalah 255 (decimal dari $FF) dan pengali 5 bergantung pada span yang ada pada rangkaian analog.

Untuk menggunakan function atau procedure io.dll lainnya Anda dapat melihatnya di www.geekhideout.com/iodll.shtml.

Dengan mentransfer data ke PC kita akan lebih mudah untuk mengolahnya. Anda bisa lebih mengembangkan program diatas. Jika anda menginginkan output dari PC maka kita dapat menggunakan outputan alamat $378 (data output).

Demikian pembahasan tentang interface menggunakan parallel port (printer). Semoga berguna bagi Anda semua. Untuk komentar tulisan dapat Anda kirimkan ke ratih@sony-ak.com. Untuk melihat tulisan menarik lainnya anda dapat melihat di www.sony-ak.com.

Source code aplikasi di atas (termasuk io.dll) bisa di download di delphiinterface1.zip.

Ditulis kembali dari berbagai sumber 
thx to 'Nurdin' Larins ITS
For a great mind.

Terimakasih.




 Recommended articles
 

»

Perbandingan Beberapa Metode Pengembangan Perangkat Lunak (12418)

»

Komponen Terbilang Dengan Borland Delphi (4911)

»

Keamanan Jaringan Untuk Pemula (6208)

»

Perkembangan Teknologi Java di Indonesia (7789)

»

Sejarah Intel dan Intel 4004 (4485)

 Send your comments or suggestions
Full Name :
E-mail :
Comments :
 
 

  Privacy | Site Map | Advertise

  Copyright © 2003 - 2006 Sony AK Knowledge Center - all rights reserved

  info@sony-ak.com