Oleh :
Devi Khanthi Dwi Bhakti
1631130074 / TT-2A
PENDAHULUAN
1.1 Tujuan Khusus
Mampu melakukan komunikasi antara dua komputer menggunakan interface serial RS
232
Memahami sistem pengkabelan untuk menghubungkan dua komputer melalui port serial
Memahami standarisasi komunikasi serial RS 232
Memahami prosedur untuk melakukan komunikasi serial RS 232
1.2 Tujuan Umum
Memahami komponen untuk melakukan komunikasi serial RS 232 menggunakan
Delphi
Mampu melakukan instalasi komponen komunikasi serial RS 232 (Cport)
Mampu membuat program untuk komunikasi antara komputer dengan komputer
1.3 Alat dan Bahan
Program Delphi versi 6 keatas
Komponen komunikasi serial (CPORT)
Konektor DB9 female 2 buah
Kabel (secukupnya)
Komputer 2 unit
Sebagai contoh, jika akan dikirim data serial 10011010, maka agar data tersebut
dapat dikirim dan diterima dengan baik, selang waktu yang digunakan oleh pengirim
dari penerima satu dengan yang lain harus sama. Jika penerima telah menerima
penyesuaian bit, maka seharusnya juga harus segera menerima penyesuaian karakter,
dan penerima juga harus mengetahui awal dan akhir blok data yang dikirim.
Penyesuaian yang diperlukan dapat diperoleh secara sinkron maupun asinkron, data
yang dikirim oleh terminal komputer lewat jalur RX dimasukan ke pengubah seri ke
paralel sebelum diteruskan ke komputer.
10. Buka file CportLib7 pada folder file cport uncrompress ditempatkan, disini
ditempatkan pada C:\Program Files\Borland\Delphi7\comserial
11. Setelah itu tekan tombol install
12. Buka DsgnCport7 pada folder file cport uncrompress ditempatkan, disini
ditempatkan pada C:\Program Files\Borland\Delphi7\comserial
13. Cek di program delphi apakah komponen sudah terinstall, jika proses install
sukses akan tampak seperti gambar dibawah.
4) ketikkan kode program dibawah ini untuk membuat procedure penerimaan pesan
Double klik pada event-OnRxChar.
procedure frmpctopc.ComserialRxChar(Sender: TObject;
Count: Integer);
var
str:string; //Variabel menyimpanan data yang diterima
begin
Comserial.ReadStr(Str, Count);
meterima.Text:=meterima.Text + str;
end;
*Note
readstr merupakan fungsi dari delphi untuk menerima pesan
Count merupakan fungsi dari delphi yang menunjukkan jumlah karakter yang
diterima.
5) Ketikkan kode program dibawah ini untuk membuka port serial dengan cara
melakukan double klik pada form untuk membuat prosedur formcreate, jika tidak
komunikasi serial tidak dapat dilakukan.
procedure frmpctopc.FormCreate(Sender: TObject);
begin
Comserial.Open;
end;
6) Ketikkan kode program dibawah ini untuk mengirimkan pesan dengan cara
melakukan double klik pada btsend sebagai event on click.
procedure frmpctopc.btsendClick(Sender: TObject);
var
i,n:integer;
str:string;
begin
Str := edinputteks.Text;
Comserial.WriteStr(Str);
mekirim.Lines.Add('Pengirim :' + edinputteks.Text );
end;
*note
Str Variabel tempat menyimpan data yang akan dikirim
Writestr Fungsi untuk mengirinkan pesan yang ada di variable str
7) Ketikkan kode program dibawah ini untuk mengubah setting dari parameter
koneksi dengan cara melakukan double klik pada btsetup sebagai event on click.
procedure frmpctopc.btsetupClick(Sender: TObject);
begin
Comserial.ShowSetupDialog;
end;
8) Ketikkan program dibawah ini untuk menutup program dan menutup port serial
(com) dengan cara melakukan double klik pada btexit sebagai event on click.
procedure frmpctopc.btexitClick(Sender: TObject);
begin
comserial.close; //menutup port com
application.terminate; //keluar dari program
end;
9) Jalankan program dan perbaiki apabila terdapat kesalahan!
interface
uses
type
TForm1 = class(TForm)
Memo1: TMemo;
Memo2: TMemo;
Label1: TLabel;
Label2: TLabel;
Button1: TButton;
Button2: TButton;
Button3: TButton;
Edit1: TEdit;
Label3: TLabel;
edsms: TEdit;
Label4: TLabel;
edhasil: TEdit;
Label5: TLabel;
edno: TEdit;
Label6: TLabel;
edhasil2: TEdit;
Button4: TButton;
Button5: TButton;
Comserial: TComPort;
Button6: TButton;
Edit2: TEdit;
Edit3: TEdit;
Label7: TLabel;
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
t_biner,t_biner2,t_heksa,t_heksa1,t_heksa2:String;
t_desimal,t_temp:Integer;
implementation
{$R *.dfm}
procedure kebiner1 (t_Hexa:string);
var
data : string;
begin
data:= t_hexa;
t_biner :=data;
end;
var
data :string;
begin
data:= t_hexa;
t_biner := t_biner+data;
end;
var
temp : string;
begin
temp :=data;
t_heksa1 := temp;
end;
procedure keheksa2 (data:string);
var
temp :string;
begin
temp :=data;
t_heksa := temp+t_heksa;
t_heksa2:= temp;
end;
var
temp : string;
begin
temp :=data;
end;
var jumlah_pasangan,a:integer;
nomer,kode,temp:string;
begin
a:= 1;
nomer:= data;
temp:=data;
while (a<=length(data)+2) do
begin
nomer[a+1]:=temp[a];
a:= a+2;
end;
form1.Edhasil.Text:= '0'+inttostr(jumlah_pasangan)+kode+nomer;
end;
var
a:integer;
nomer,kode,temp,jumlah_nomer:string;
begin
a:=1;
nomer:=data;
jumlah_nomer:=inttohex(length(data),1);
nomer:=data;
temp:=data;
while (a<=Length(data)+2) do
begin
nomer[a+1]:=temp[a];
nomer[a]:=temp[a+1];
a:=a+2;
end;
form1.Edhasil2.Text:='0'+jumlah_nomer+kode+nomer;
end;
procedure text2pdu(data:string);
var
jumlah_kata,pesan,hexa,temp,temp2:string;
a,b,c:integer;
begin
b:=0; c:=0;
jumlah_kata:= inttohex(length(data),1);
pesan:= data;
begin
hexa:=inttohex (ord(pesan[a]),2);
kebiner1(hexa[1]);
kebiner2(hexa[2]);
temp:=temp+t_biner;
end;
begin
b:=length(pesan);
for a:= 1 to b do
begin
temp:='0'+temp;
end;
end;
b:=0 ; temp2:=''; hexa:='';
begin
temp2:= temp[a]+temp2;
inc(b);
if b>=4 then
begin
b:=0;
keheksa2(temp2);
inc(c);
temp2:='';
if c>=2 then
begin
hexa:=hexa+t_heksa;
c:=0;
t_heksa:='';
end;
end;
end;
form1.edit3.Text:=jumlah_kata+hexa;
end;
var a:integer;
nomer,temp,kata:string;
begin
a:=5;
nomer:= data;
temp:=data;
while (a<=length(data)) do
begin
nomer[a+1]:=temp[a];
a:= a+2;
end;
kata:= '';
form1.edsms.Text := kata;
end;
var
a:integer;
nomer,temp,jumlah_nomer,kata:string;
begin
a:=5;
nomer:=data;
jumlah_nomer:=inttohex(length(data),1);
nomer:=data;
temp:=data;
while (a<=Length(data)) do
begin
nomer[a+1]:=temp[a];
nomer[a]:=temp[a+1];
a:=a+2;
end;
kata:= '';
form1.Edno.Text:=kata;
end;
procedure pdu2text(pdu:string);
var
data,hasil,temp,temp2,temp3,biner:string;
desimal,jumlah_karakter,jumlah_ascii7,dummy_bit,a,b,c,d,i:integer;
begin
kedesimal(data[1]);
a:=t_desimal;
kedesimal(data[2]);
b:=t_desimal;
jumlah_karakter:=(16*a)+b;
data:=copy(data, 3, length(pdu));
temp:=data;
c:=1;
d:=0;
while(c<=length(data)) do
begin
data[c+1]:=temp[length(data)-d];
data[c]:=temp[length(data)-(d+1)];
c:=c+2;
d:=d+2;
end;
begin
kebiner2(data[i]);
biner:=biner + t_biner2;
end;
dummy_bit:=length(biner) mod 7;
delete(biner, 1, dummy_bit);
jumlah_ascii7:=length(biner) div 7;
c:=0;
d:=1;
while (c<jumlah_ascii7) do
begin
temp:=copy(biner, d, 7);
temp2:=copy(temp, 1, 3);
keheksa1(temp2);
temp3:=copy(temp, 4, 4);
keheksa2(temp3);
kedesimal(t_heksa1);
a:=t_desimal;
kedesimal(t_heksa2);
b:=t_desimal;
desimal:=(16*a)+b;
hasil:=hasil + chr(desimal);
d:=d+7;
c:=c+1;
end;
temp:=hasil;
c:=1;
d:=0;
while(c<=length(hasil)) do
begin
hasil[c]:=temp[length(hasil)-d];
c:=c+1;
d:=d+1;
end;
t_heksa:='';
t_biner:='';
end;
const
tipe_sms='11';
no_ref='00';
bentuk_sms='00'; //sms
encoding='00'; //7bit
begin
sms_center (edsms.Text);
nomer_penerima(edno.Text);
text2pdu(edit1.Text);
end;
smscenter (edhasil.Text);
nomerpenerima (edhasil2.Text);
pdu2text (edit1.Text);
edit2.Text:=edsms.Text+ edno.Text;
end;
begin
edhasil.Clear;
edhasil2.Clear;
edit1.Clear;
edit2.Clear;
edit3.Clear;
end;
var
i,n:integer;
str:string;
begin
Str := memo1.Text;
Comserial.WriteStr(Str);
memo1.Lines.Add('pengirim : '+memo1.Text);
end;
procedure TForm1.ComserialRxChar(Sender: TObject; Count: Integer);
var
begin
Comserial.ReadStr(Str, Count);
end;
begin
comserial.Open;
end;
begin
comserial.ShowSetupDialog;
end;
begin
comserial.Close;
application.Terminate;
end;
end.
2.2 FLOWCHART
PENUTUP
3.1 Kesimpulan
1. Untuk melakukan komunikasi serial menggunakan RS232, yang dimana pengiriman datanya
dikirimkan per elemen dengan satu atau dua penghantar yaitu kirim data (TX) dan terima data
(RX).
2. Dalam komunikasi serial antara dua komputer dibutuhkan media kabel serta konektor yang
berupa DB9 (female). DB9 (female) memiliki 9 pin out yang tiap-tiap pin out memiliki fungsi
masing-masing.
3. Melakukan instalasi Cportlib terlebih dahulu, agar dapat melakukan komunikasi serial antara
dua komputer.
4. Diperlukan USB converter pada laptop untuk melakukan komunikasi serial dikarenakan pada
laptop tidak ada DB9(male).