Disusun Oleh :
Romy Hakim Akbar
NIM. 1441160064
JTD 3A
2016
Tujuan
1) Mampu mengkonversi teks yang dikirim dan diterima ke format Protocol Data Unit.
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
Nomor
SMS/SM
S
SMS (8
SUBMIT
(8 bit)
Referensi
bit)
Nomor
Skema
Ponsel
Bentuk
Encodin
Penerima
SMS
g Data
(targantung
(8 bit)
I/O (7 bit
operator)
/ 8 bit)
Jangka Waktu
Sebelum
SMS Expired
jumlah karakter
(8 bit)
yang dikirim)
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
Operator Celuler
SMS-Center
Kode PDU
.
1.
2.
3.
4.
Telkomsel
Satelindo
Excelcom
Indosat-IM3
62811000000
62816124
62818445009
62855000000
07912618010000F0
059126181642
07912618485400F9
07912658050000F0
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:
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
pasangan
heksa.
110
1000
110
0101
110
1100
110
1100
110
1111
langkah kedua:
E
h
1 110
3
1000
2
00 11
9
100 1
F
1111
0
0000
0010 1
B
1011 00
D
1101 100
6
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
initype
TForm1 = class(TForm)
Label1: TLabel;
Memo1: TMemo;
Label2: TLabel;
edsms: TEdit;
Label3: TLabel;
edhasil: TEdit;
Label4: TLabel;
edno: TEdit;
Label5: TLabel;
edhasilno: TEdit;
Memo2: TMemo;
Label6: TLabel;
Memo3: TMemo;
btkonversi: TButton;
btkonversire: TButton;
btreset: TButton;
Label7: TLabel;
Label8: TLabel;
Memo4: TMemo;
btexit: TButton;
Panel1: TPanel;
Label9: TLabel;
Label10: TLabel;
edhassmsc: TEdit;
Label11: TLabel;
edhasno: TEdit;
Label12: TLabel;
Memo5: TMemo;
procedure btkonversiClick(Sender: TObject);
procedure edsmsKeyPress(Sender: TObject; var Key: Char);
procedure btresetClick(Sender: TObject);
procedure Memo1KeyPress(Sender: TObject; var Key: Char);
procedure btkonversireClick(Sender: TObject);
procedure btexitClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
tbiner,theksa,data:string;
tdes:integer;
implementation
{$R *.dfm}
procedure kebiner1 (thex:string) ;
begin
data:=thex;
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';
tbiner:=data;
end;
procedure kebiner2 (thex:string) ;
begin;
data:=thex;
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';
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';
tbiner:=tbiner + 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';
tempn:=temp2;
end;
// form1.edhasno.Text:=tempn(*inttostr(jno)*);
while a<=length(temp2) do begin
if temp2[a+1]='F' then temp2[a+1]:=' '; tempn[a]:=temp2[a+1];
if temp2[a]='F' then temp2[a]:=' '; tempn[a+1]:=temp2[a];
a:=a+2;
end;
form1.edhasno.Text:=tempn(*inttostr(jno)*);
form1.Memo4.Text:=temps(*+''+inttostr(b)*);
end;
procedure TForm1.btkonversiClick(Sender: TObject);
const
tipe_sms='11';
no_ref='00';
bentuk_sms='00';
encoding='00';
expired='FF';
begin
smsc(edsms.Text);
npenerima(edno.Text);
textpdu(memo1.Text);
memo3.Text:=edhasil.Text+tipe_sms+no_ref+edhasilno.Text+bentuk_
sms+encoding+expired+memo2.Text;
end;
procedure TForm1.edsmsKeyPress(Sender: TObject; var Key: Char);
begin
if key=chr(vk_return) then begin
btkonversiClick(self);
end;
end;
procedure TForm1.btresetClick(Sender: TObject);
begin
edsms.Clear;
edhasil.Clear;
edno.Clear;
edhasilno.Clear;
memo1.Clear;
memo2.Clear;
memo3.Clear;
memo4.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.btkonversireClick(Sender: TObject);
begin
pdutext(memo3.Text);
//memo4.Text:=edsms.Text+tipe_sms+no_ref+edno.Text+bentuk_sms
+encoding+expired+memo1.Text;
end;
procedure TForm1.btexitClick(Sender: TObject);
begin
Application.Terminate;
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.