LAPORAN PRAKTIKUM KOMUNIKASI DATA KONVERSI TO PDU
Oleh : Ellen Kurniawati Esmono 1331130015 / TT-2A
POLITEKNIK NEGERI MALANG JURUSAN TEKNIK ELEKTRO PROGRAM STUDI TEKNIK TELEKOMUNIKASI 2015
PRAKTIKUM KOMUNIKASI DATA KONVERSI TO PDU I.
Tujuan 1) Mampu mengkonversi teks yang dikirim dan diterima ke format Protocol Data Unit.
II.
Tujuan Umum 1) Dapat merubah format teks ke dalam format Protocol Data Unit (PDU) dengan program Delphi.
III.
Alat dan Bahan 1) Program Delphi versi 7 2) Komputer 1 unit
IV.
Teori Dasar A. Protocol Data Unit (PDU) Format data yang diterima atau yang dikirim handphone berupa Protocol Data Unit (PDU), PDU yang diterima dari handphone berbeda dengan PDU yang di kirim, namun tetap menggunakan aturan yang sama. Perbedaannya terutama pada field yang dikandung, baik nilai maupun fungsinya. Untuk format PDU yang dikirim memiliki jumlah header sebanyak 8 bagian. Berikut ini ke delapan header dari PDU yang dikirimkan : Nomor SMS Center (tergantung operator)
Tipe SMS/SM S SUBMIT (8 bit)
Nomor Referensi SMS (8 bit)
Nomor
Skema
Ponsel
Bentuk
Encodin
Penerima
SMS
g Data
(targantung
(8 bit)
I/O (7 bit
operator)
/ 8 bit)
Jangka Waktu
Isi SMS (jumlah
Sebelum
bit tergantung pada
SMS Expired
jumlah karakter
(8 bit)
yang dikirim)
Gambar 1. Header Protocol PDU beserta ukuran bit 1. Nomor SMS Center Header pertama ini terbagi atas tiga subheader,yaitu: a. Jumlah pasangan heksadesimal SMS-Center dalam bilangan heksa. b. Kode nasional/internasional untuk negara Indonesia Untuk national , kode subheader-nya adalah 81 Untuk international, kode subheader-nya adalah 91 c. Nomor SMS-Center-nya sendiri dalam pasangan heksa dibalik-balik Jika tertinggal satu angka heksa yang tidak memiliki pasangan, angka tersebut akan dipasangkan dengan F didepannya.
Contoh: nomor SMS-Center Indosat-IM3 dapat ditulis dengan dua cara sebagai berikut: Cara 1 (nasional): 0855000000 diubah menjadi: a. 0855000000 : ada 5 pasang nomor smsc Total pasangan SMSC dank ode b. 81 : 1 pasang nasional 6 pasang c. 80-55-00-00-00: 5 pasang nomor smsc yang sudah dibalik perpasangan Digabung menjadi: 06818055000000 Cara 2 (internasional): a. 62855000000F : ada 6 pasang Total 7 pasang b. 91 : ada 1 pasang c. 26-58-05-00-00-F0 : 6 pasang smsc yang sudah dibalik perpasangan Digabung menjadi 07912658050000F0 Berikut beberapa contoh nomor SMS-Center operator seluler di Indonesia. Tabel 1.1 Nomor SMS Center dengan Cara 1 NO
Operator Seluler
SMS-Center
Kode PDU
. 1. 2. 3. 4.
Telkomsel Satelindo Excelcom Indosat-IM3
0811000000 0816124 0818445009 0855000000
06818011000000 0581806121F4 0681081440590 06818055000000
Tabel 1.2 Nomor SMS Center dengan cara 2 NO
Operator Celuler
SMS-Center
Kode PDU
. 1. 2. 3. 4.
Telkomsel Satelindo Excelcom Indosat-IM3
62811000000 62816124 62818445009 62855000000
07912618010000F0 059126181642 07912618485400F9 07912658050000F0
2. Tipe SMS (SMS SUBMIT) Tipe SMS SUBMIT = 11 (kode pengiriman SMS). 3. Nomor Referensi SMS Nomor referensi dibiarkan 0. Jadi, bilangan heksanya 00. Selanjutnya akan diberikan sebuah nomor referensi otomatis oleh ponsel/alat SMS-gateway. 4. Nomor Ponsel Penerima Sama seperti menulis PDU Header untuk SMS-Center, header ini juga terbagi atas tiga bagian, yaitu:
a. Jumlah bilangan desimal nomor ponsel yang dituju dalam bilangan heksa. b. Kode nasional/internasional untuk negara Indonesia c. Untuk nasional, kode subheader-nya: 81 d. Untuk internasional, kode subheader-nya: 91. e. Nomor ponsel yang dituju dalam pasangan heksa dibalik-balik. Jika tertinggal satu angka heksa yang tidak memiliki pasangan, angka tersebut dipasangkan dengan huruf F didepannya. Contoh: Nomor ponsel yang dituju 628129573337 maka dapat ditulis dengan dua cara , yaitu sebagai berikut : Cara 1 (nasional): 08129573337 diubah menjadi: a. 0B: ada 11 angka (jumlah bilangan desimal dari nomor tujuan) b. 81 (subheader nasional) c. 80-21-59-37-33-F7 (penggabungan nomor tujuan yang dibalik, apabila tertinggal 1 angka maka ditambahkan huruf ‘F’ didepanya) Digabung menjadi: 0B818021593733F7 Cara 2: 628129573337 diubah menjadi: a. 0C: ada 12 angka (jumlah bilangan desimal dari nomor tujuan) b. 91 (subheader nasional) c. 26-81-92-75-33-F7 (penggabungan nomor tujuan yang dibalik, apabila tertinggal 1 angka maka ditambahkan huruf ‘F’ didepanya) Digabung menjadi: 0C91261892753373 5. Bentuk SMS 0 → 00 → dikirim sebagai SMS 1 → 01 → dikirim sebagai telex 2 → 02 → dikirim sebagai fax Dalam hal ini, pengiriman dalam bentuk SMS tentu saja memakai 00. 6. Skema Encoding Data I/O Ada dua skema, yaitu: a. Skema 7 bit → ditandai dengan angka 0 → 00 b. Skema 8 bit → ditandai dengan angka lebih besar dari 0 yang diubah ke heksa. Kebanyakan ponsel/SMS Gateway yang ada di pasaran sekarang menggunakan skema 7 bit sehingga kita menggunakan kode 00. 7. Jangka Waktu Sebelum SMS Expired
Jika bagian ini di-skip, berarti kita tidak membatasi waktu berlakunya SMS, sehingga tidak perlu memberikan nilai apapun di PDU headernya. Selain dengan cara tersebut juga dapat dilakukan dengan memberikan nilai heksa ‘FF’ yang juga berarti memberikan waktu validitas maksimum. Sementara itu, jika kita mengisinya dengan suatu bilangan integer yang kemudian diubah ke pasangan heksa tertentu, bilangan yang kita berikan tersebut akan mewakili jumlah waktu validitas SMS tersebut. 8. Isi SMS Header terdiri atas dua subheader, yaitu: a. Panjang isi (jumlah huruf dari isi) Misalnya: untuk kata “hello” → ada 5 huruf → 05 b. Isi berupa pasangan bilangan heksa Ponsel/SMS Gateway berskema encoding 7 bit berarti jika kita mengetikkan suatu huruf dari keypad-nya, kita telah membuat 7 angka I/O berturutan. Ada dua langkah yang harus kita lakukan untuk mengkonversi isi SMS, yaitu: Langkah pertama : mengubah menjadi kode 7 bit. Langkah kedua
: mengubah kode 7 bit menjadi 8 bit, yang diwakili oleh
pasangan
heksa.
Contoh: untuk kata “hello” Langkah pertama: Bit
7
1
h
110
1000
e
110
0101
l
110
1100
l
110
1100
o
110
1111
langkah kedua: E h
8
1 110
1000
3
2
e
00 11 9
l
100 1 F
l
o
1111
0010 1 B 1011 00 D 1101 100
0
6
0000
0 110
1111
Oleh karena total 7 bit x 5 huruf = 35 bit, sedangkan yang kita perlukan adalah 8 bit x 5 bit = 40 bit, maka diperlukan 5 bit dummy yang diisi dengan bilangan 0. Setiap 8 bit mewakili suatu pasangan heksa. Setiap 4 bit mewakili suatu angka heksa, tentu saja karena secara logika 24 = 16. Dengan demikian,maka kata “hello” hasil konversinya menjadi E8329BFD06. Setelah semua header terbentuk, maka selanjutnya adalah menggabungkan semua header yang terbentuk, Masing-masing header maupun subheader untuk mengirim SMS diatas harus digabungkan menjadi sebuah PDU yang lengkap. Contoh: jika mengirimkan kata “hello” ke ponsel nomor 628129573337 lewat SMS-Center Indosat-M3, denagan waktu valid maksimum, maka PDU lengkapnya adalah : 07912658050000F011000C912618927533730000FF05E8329BFD06
V.
Perencanaan
VI.
Pembahasan Pertama-tama yang dilakukan dalam membuat tampilan Komunikasi Serial adalah melakukan identifikasi pada setiap fungsi-fungsi yang diperlukan. Identifikasi ini dilakukan dengan mengedit pada menu Box Inspector sesuai dengan yang diinginkan sehingga pada listing program akan muncul otomatis sepeti ini. type TForm1 = class(TForm) Edit1: TEdit; Edit2: TEdit; Edit3: TEdit; Edit4: TEdit; Memo1: TMemo; Memo2: TMemo; btkonversi: TButton; btkonversi2: TButton; bthapus: TButton; btexit: TButton; Memo3: TMemo; Memo4: TMemo; Label1: TLabel; Label2: TLabel; Label3: TLabel; Label4: TLabel; Label5: TLabel; Label6: TLabel; Label7: TLabel; Label8: TLabel; procedure btkonversiClick(Sender: TObject); procedure Edit1KeyPress(Sender: TObject; var Key: Char); procedure bthapusClick(Sender: TObject); procedure Memo1KeyPress(Sender: TObject; var Key: Char); procedure btexitClick(Sender: TObject); procedure btkonversi2Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; t_biner,t_heksa:string; Selanjutnya adalah menuliskan procedure program, berikut adalah listing programnya: implementation {$R *.dfm}
procedure kebiner1(t_HExa:string); var data:string; begin data:=t_hexa; if data = '0' then data :='000'; if data = '1' then data :='001'; if data = '2' then data :='010'; if data = '3' then data :='011'; if data = '4' then data :='100'; if data = '5' then data :='101'; if data = '6' then data :='110'; if data = '7' then data :='111'; if data = '8' then data :='1000'; t_biner := data; end; procedure kebiner2(t_Hexa:string); var data:string; begin data:=t_Hexa; if data = '0' then data :='0000'; if data = '1' then data :='0001'; if data = '2' then data :='0010'; if data = '3' then data :='0011'; if data = '4' then data :='0100'; if data = '5' then data :='0101'; if data = '6' then data :='0110'; if data = '7' then data :='0111'; if data = '8' then data :='1000'; if data = '9' then data :='1001'; if data = 'A' then data :='1010'; if data = 'B' then data :='1011'; if data = 'C' then data :='1100'; if data = 'D' then data :='1101'; if data = 'E' then data :='1110'; if data = 'F' then data :='1111'; t_biner:=t_biner+data; end; procedure keheksa(data:string); var temp:string; begin temp:=data; if temp = '0000' then temp :='0'; if temp = '0001' then temp :='1'; if temp = '0010' then temp :='2'; if temp = '0011' then temp :='3';
if temp = '0100' then temp :='4'; if temp = '0101' then temp :='5'; if temp = '0110' then temp :='6'; if temp = '0111' then temp :='7'; if temp = '1000' then temp :='8'; if temp = '1001' then temp :='9'; if temp = '1010' then temp :='A'; if temp = '1011' then temp :='B'; if temp = '1100' then temp :='C'; if temp = '1101' then temp :='D'; if temp = '1110' then temp :='E'; if temp = '1111' then temp :='F'; t_heksa:=temp+t_heksa; end; procedure sms_centre(data:string); var jumlah_pasangan,a:integer; nomer,kode,temp:string; begin a:=1; if length(data) mod 2=1 then data:=data+'F'; nomer:=data; temp:=data; if nomer [1]='0' then kode:='81' else kode:='91'; jumlah_pasangan:=length(data) div 2+1; while(a<=length(data) +2 ) do begin nomer[a+1]:=temp[a]; nomer[a]:=temp[a+1]; a:=a+2; end; form1.Edit2.Text:='0'+inttostr(jumlah_pasangan)+kode+nomer; end; procedure nomer_penerima(data:string); var a:integer; nomer,kode,temp,jumlah_nomer:string; begin a:=1; nomer:=data; jumlah_nomer:=inttohex(length(data),1); if length(data) mod 2=1 then data:=data+'F'; nomer:=data; temp:=data; if nomer[1]='0' then kode :='81' else kode:='91'; while(a<=length(data) + 2) do begin nomer [a+1]:=temp[a];
nomer[a]:=temp[a+1]; a:=a+2; end; form1.Edit4.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); if length(jumlah_kata)<2 then jumlah_kata:='0'+jumlah_kata; pesan:=data; for a:=length(pesan) downto 1 do begin hexa:=inttohex(ord(pesan[a]),2); kebiner1(hexa[1]); kebiner2(hexa[2]); temp:=temp+t_biner; end; if length(temp) mod 8 <>0 then begin b:=length(pesan); if b>8 then b:=b mod 8; for a:=1 to b do begin temp:='0'+temp; end; end; b:=0; temp2:=''; hexa:=''; for a :=length(temp) downto 1 do begin temp2:=temp[a]+temp2; inc(b); if b>=4 then begin b:=0; keheksa(temp2); inc(c); temp2:=''; if c>=2 then begin hexa:=hexa+t_heksa; c:=0; t_heksa:=''; end; end; end;
form1.Memo2.Text:=jumlah_kata+hexa; end; procedure TForm1.btkonversiClick(Sender: TObject); const tipe_sms='11'; no_ref='00'; bentuk_sms='00'; encoding='00'; expired='FF'; begin sms_centre(edit1.Text); nomer_penerima(edit3.Text); text2pdu(memo1.Text); memo3.Text:=edit2.Text+tipe_sms+no_ref+edit4.Text+bentuk_sms+encoding+ expired+memo2.Text; end; procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char); begin if key=chr(vk_return) then begin btkonversiClick(self); end; end; procedure TForm1.bthapusClick(Sender: TObject); begin edit1.Clear; edit2.clear; edit3.Clear; edit4.Clear; memo1.clear; memo2.Clear; end; procedure TForm1.Memo1KeyPress(Sender: TObject; var Key: Char); begin if key=chr(vk_return) then begin btkonversiclick(self); key:=chr(vk_back); end; end; procedure TForm1.btexitClick(Sender: TObject); begin Application.Terminate; end;
procedure TForm1.btkonversi2Click(Sender: TObject); const tipe_sms='11'; no_ref='00'; bentuk_sms='00'; encoding='00'; expired='FF'; begin memo4.Text:=edit1.Text+tipe_sms+no_ref+edit3.Text+bentuk_sms+encoding+ expired+memo1.Text; end; end. Selesai penulisan listing program selanjutnya klik Run. Tampilan awal saat dilakukan Run :
Selanjutnya adalah mengisikan SMS Centre, Nomor Penerima, dan Isi Pesan pada kolom yang telah tersedia. Lalu selanjutnya klik ‘KonversiTEXTtoPDU’ dan klik ‘KonversiPDUtoTEXT’ maka akan muncul hasil konversi dari SMS Centre, Nomor Penerima, Isi Pesan, dan hasil konversi dari Text ke PDU setelah digabungkan serta hasil konversi dari PDU ke Text. Tampilannya seperti berikut :
Jika ingin menghapus data dan memulai konversi lagi maka dapat di klik ‘Hapus’ sehingga data awal akan terhapus dan dapat dilakukan konversi kembali.
Jika ingin keluar dari program maka klik ‘Exit’.
VII.
VIII.
Kesimpulan 1) Dengan menggunakan program Delphi7 dapat dilakukan pengubahan format data ke Protocol Data Unit (PDU). Referensi 1) Panduan Praktikum Komunikasi Data