Senin, 27 September 2010

Mengakses Perangkat Luar Melalui Serial Port Menggunakan Borland Delphi

Mengenal Port di Komputer
Serial port merupakan standar interface untuk komputer, selain serial port ada juga paralel port yang dapat digunakan untuk mengakses hardware. Perbedaan antara serial dan paralel port tersebut yaitu cara port tersebut untuk mengirim dan menerima data. Serial port pada komputer sering digunakan untuk mouse (model lama), modem dan lain-lain sedangkan paralel port sering digunakan untuk printer, scanner dan lain sebagainya.
Perbedaan serial dan paralel port

Metode Pengaksesan Perangkat Luar
Disini saya akan menggolongkan metode akses perangkat luar dengan 2 (dua) golongan yaitu Aktif dan Pasif ditinjau dari komputer yang mengaksesnya.
- Aktif
Metode ini mengharuskan komputer untuk mengirim data ke perangkat luar terlebih dahulu sebelum perangkat luar mengirimkan datanya ke komputer.Data yang dikirimkan komputer dapat berupa kata atau huruf. Kata atau huruf yang akan dikirim ke perangkat luar ini tidak memiliki standar baku karena tiap perangkat luar memiliki susunan masing, untuk dapat mengetahui kata atau huruf yang akan dikirimkan dapat dilihat dalam buku manual yang telah disertakan oleh tiap perangkat. Contohnya PH meter digital, beberapa model barcode, instrumen pengendalian dan lain-lain.
- Pasif
Metode ini perangkat luarlah yang aktif mengirimkan data sedangkan komputer hanya menerima data. Contohnya mouse.
Konfigurasi
Untuk dapat mengakses perangkat lunak kita harus mengetahui terlebih dahulu konfigurasi dari perangkat luar tersebut antara lain:
- Port yang akan digunakan, komputer yang sekarang terdapat 2 port serial
- Baud rate, kecepatan data yang akan digunakan
- Data bit, bit data
- Stop bit, bit untuk memisahkan data
- Parity, bit untuk validasi data yang telah dikirim
- Flow control
Konfigurasi tiap perangkat berbeda-beda sehingga kita harus memiliki buku manual untuk dapat mengaksesnya.
Studi Kasus
Disini studi kasus yang dihadapi yaitu mengakses DO (Dissolved Oxygen) meter yaitu alat yang digunakan untuk mengetahui kadar oksigen di dalam larutan dengan konfigurasi sebagai berikut.
- Port: COM 1
- Baud Rate: 9600
- Data Bit: 8
- Stop Bit: 1
- Parity: odd
- Flow Control: software
Perangkat ini menggunakan metode aktif dengan pengaktifan data dengan huruf D (perangkat akan mengirimkan data jika komputer mengirimkan huruf D). Perangkat DO ini akan menampilkan struktur data sebagai berikut:
Data ke + spasi + nilai DO + % +'DO' + suhu + C + tanggal perangkat
Contohnya: 218 30%DO25%C08/11/04
Software yang diinginkan dapat menampilkan data pada sebuah grid dan grafik dengan interval waktu 1 detik.
Software yang akan digunakan untuk mengakses perangkat luar yaitu:
- Borland Delphi 7
- Comport, component ini bersifat freeware dan dapat Anda download pada situs www.sourceforge.net/projects/comport (besarnya sekitar 224 KB). Thank's to Dejan Crnila
Pembuatan Software
Setelah kita install Component Comport, akan terlihat seperti dibawah ini:

Design Tampilan

Langkah petama kita akan membuat procedure untuk setting konfigurasi.
procedure TForm1.Button_SettingsClick(Sender: TObject);
begin
ComPort.ShowSetupDialog;
end;
Hal tersebut akan memunculkan form sebagai berikut.

Procedure Timer
procedure TForm1.Timer1Timer(Sender: TObject);
var
Str: String;
begin
edit1.text :='';
Str := 'D';
Str := Str + #13#10;
ComPort.WriteStr(Str);
end;
Waktu pengambilan data dapat kita tempatkan pada ComboBox.
Untuk Tombol Proses
Algoritma dari event ini yaitu:
- Menghapus suluruh data yang telah ditampilkan
- Mengaktifkan comport
- Mengaktifkan timer
procedure TForm1.BitBtn1Click(Sender: TObject);
var a : integer;
begin
TabSheet2.show;
Timer1.Interval := strtoint(ComboBox1.text);
if BitBtn1.Caption = 'Proses' then
begin
if y > 0 then
for a := 1 to y do
begin
StringGrid1.Cells[0,a]:= ' ';
StringGrid1.Cells[1,a]:= ' ';
StringGrid1.Cells[2,a]:= ' ';
StringGrid1.Cells[3,a]:= ' ';
end;
y:=0;
Chart1.SeriesList.Series[0].Clear;
ComPort.Open;
Timer1.Enabled := true;
BitBtn1.Caption := 'Stop';
end
else
begin
ComPort.Close;
Timer1.Enabled := false;
BitBtn1.Caption := 'Proses'
end;
end;
Untuk menerima data dari perangkat dapat kita ambil pada event RXChart.
Algoritma dari event ini yaitu:
- Mengetahui struktur data dan mengetahui bahwa data terakhir adalah #13, #13 dipakai sebagai acuan bahwa 1 (satu) data secara keseluruhan telah terkirim
- Memecah data dan mengambil data yang kita inginkan dalam hal ini data DO dan suhu
- Menampilkan data di StringGrid dan Chart
procedure TForm1.ComPortRxChar(Sender: TObject; Count: Integer);
var
Str,dtinput,kata,data: String;
z:integer;
a,b :integer;
suhu,panas,data_piece : string;
FData,FSuhu : single;
begin
ComPort.ReadStr(Str, Count);
edit1.text := edit1.text+str;
data_com := edit1.text;
if str=#13 then
begin
dtinput := trim(edit1.Text);
a := pos(' ',dtinput);
b := pos('%',dtinput);
data := copy(dtinput,a+1,b-a-1);
Fdata := StrToFloat(trim(data));

a := pos('O',dtinput);
b := pos('C',dtinput);
suhu := copy(dtinput,a+3,b-a-4);
FSuhu := StrToFloat(trim(suhu));

inc(y);

StringGrid1.Cells[1,y]:= FormatDateTime('dd/mm/yyyy',date)+' '+FormatDateTime('hh:mm:ss',time);
StringGrid1.Cells[2,y]:= FloatToStr(Fdata);
StringGrid1.Cells[3,y]:= trim(suhu);
StringGrid1.Cells[0,y]:= inttostr(y);
if y=StringGrid1.RowCount then
StringGrid1.RowCount := StringGrid1.RowCount+1;
Label10.caption := suhu;
Chart1.SeriesList.Series[0].AddY(FData);
end;
end;
procedure make_decision(a: integer; b: string);
begin
if data = '5' then
begin
writeln('hebat banget');
writecommand('hebat sekali');
for i := 1 to 5 do
begin
a := i + n;
end;
end;
end;

Demikianlah tulisan sederhana mengenai pengaksesan serial port dengan menggunakan Borland Delphi. Semoga bermanfaat bagi Anda semua.

2 komentar:

Anonim mengatakan...

mas bisa kirimkan source code beserta aplikasinya ke e-mail saya donivikapermana@gmail.com....Makasih buat pencerahannya,saya msh newbie n bisa buat pembelajaran saya..

Anonim mengatakan...

mas bisa kirimkan source code beserta aplikasinya ke e-mail saya donivikapermana@gmail.com....Makasih buat pencerahannya,saya msh newbie n bisa buat pembelajaran saya..