View
422
Download
5
Category
Preview:
Citation preview
MEMBANGUN APLIKASI SMS
GATEWAY DENGAN DELPHI 7, MYSQL
DAN GAMMU
OLEH : KUWAT SANTOSO, S.Kom dan MOH. ALI ALJAUHARI, S.Kom
1/2/2012
Modul ini berisi tentang tata cara pembuatan aplikasi sms gateway menggunakan Borland Delphi 7
serta pembuatan databasenya menggunakan MySQL, walaupun pada modul ini Delphi yang dipakai
versi 7, tapi tidak jauh berbeda caranya ketika kita mempraktikan pada Delphi versi 5, 6 atau pada
Delphi versi lebih tinggi. Akhir kata semoga dapat bermanfaat dan jangan pernah bosan untuk belajar!
Copyright © 2012 By Moh. Ali Aljauhari, S.Kom dan Kuwat Santoso, S.Kom
1. Pendahuluan
- SMS Gateway : merupakan komunikasi dua arah, mengirim dan menerima, digunakan
untuk SMS keyword, polling, ataupun informasi lainnya.
2. Software Yang Harus Di Persiapkan
- MySQL versi 5, dapat diinstall dengan paket software XAMPP (Apache MySQL PHP
Perl) disarankan versi 1.7.2 ke atas, atau bisa anda diinstall memakai paket software yang
lain seperti AppServ , PHPTriad, ataupun WAMP.
- Borland Delphi 7 atau versi lebih tinggi (Sebagai Program Aplikasi)
- Gammu : Tools aplikasi sms gateway, dapat di unduh di www.wammu.eu . Gammu
yang dipakai pada modul ini adalah versi: Gammu 1.29.92
- Zeoslib: seperangkat komponen database untuk
MySQL, PostgreSQL,Interbase, Firebird, MS SQL, Sybase, Oracle dan SQLite untuk
Delphi, FreePascal/Lazarus, Kylix dan C Builder. Dapat di unduh di http://zeos.firmos.at
3. Konfigurasi Gammu
- Spesifikasi Gammu dan Modem Yang Dipakai
Versi Gammu: Gammu 1.29.92
Modem: Modem SMS Gateway “Wavecom”
- Konfigurasi Gammu
- Copykan file gammurc & smsdrc dari:
C:\Program Files\Gammu 1.29.92\share\doc\gammu\ examples\config
Ke: C:\Program Files\gammu\bin\
- Dengan menggunakan notepad,atur file gammurc yang ada pada :
C:\Program Files\gammu\bin\gammurc
device = com23:
connection = at115200
- Dengan menggunakan notepad,atur file smsdrc yang ada pada :
C:\Program Files\gammu\bin\smsdrc
device = com23:
connection = at115200
Service=MYSQL
user = root
password =
pc = localhost
database = sms
Copyright © 2012 By Moh. Ali Aljauhari, S.Kom dan Kuwat Santoso, S.Kom
- Langkah selanjutnya, untuk mengecek bahwa gammu dan modem wavecom sudah jalan,
coba buka cmd (command prompt)
- Kemudian masuk ke:
- Tes Kirim SMS
- Menjalankan Service Gammu
Langkah selanjutnya, setelah service gammu aktif, coba uji dengan mengirim sms ke
nomor yang telah dimasukan di modem dengan format yang telah disetting pada trigger
yang dibuat.
4. Pembuatan Database sms di MySQL
- Buka database MySQL melalui phpMyAdmin ataupun melalui tools GUI MySQL
lainnya, kemudian buatlah database sms : create database sms;
- Untuk pembuatan tabel-tabelnya kita tidak akan merancang dari awal karena akan
mengimport dari file mysql.sql bawaan dari installasi gammu. Kalau gammu nya kita
install di C biasanya secara default ada di :
Copyright © 2012 By Moh. Ali Aljauhari, S.Kom dan Kuwat Santoso, S.Kom
- Setelah kita import, hasilnya akan ada 9 buah tabel yang tercipta seperti gambar berikut:
- Keterangan:
- Tabel inbox: untuk menampung data sms yang masuk, detailnya sbb:
- Tabel outbox: untuk menampung data kirim pesan, detailnnya sbb:
- Tabel sentitems: untuk menampung data pesan terkirim, detailnya sbb:
Copyright © 2012 By Moh. Ali Aljauhari, S.Kom dan Kuwat Santoso, S.Kom
- Tabel pbk_groups: untuk menampung data grup phonebook, detailnya sbb:
- Tabel pbk : untuk menampung data phonebook, detailnya sbb:
5. Membuat Program Aplikasi SMS Dengan Delphi 7
- Buka Delphi 7 dari Start Menu>All Programs>Borland Delphi 7>Delphi 7, sehingga
akan nampak seperti gambar berikut :
A. Untuk tahap pertama kita buat dulu form inbox (Finbox/Uinbox.pas), persiapkan
komponen berikut pada form anda :
Copyright © 2012 By Moh. Ali Aljauhari, S.Kom dan Kuwat Santoso, S.Kom
No. Komponen Properti Nilai 1. Form Name
Caption Finbox .:: PESAN MASUK ::.
2. ZConnection1 Dari component palete “ZeosAccess”
Hostname User Password Protocol Port Database Connected
localhost root sesuaikan! Mysql 3306 Sms True Keterangan: Jika pada saat connected-nya di true kan muncul pesan error: library..... copy file dari C:\xampp\mysql\bin\libmysql.dll kemudian paste di c:/windows
3. ZQuery1 Dari component palete “ZeosAccess”
Connection SQL Active
ZConnection1 SELECT ReceivingDateTime,SenderNumber, TextDecoded FROM inbox True
4. Datasource1 Dari component palete “Data Access”
Dataset Enabled
ZQuery1 True
5. DBGrid1 Dari component palete “DataControls”
Datasource Datasource1
6. DBMemo1 Dari component palete “DataControls”
Datasource DataField
Datasource1 TextDecoded
7. Button1 Caption &Tampilkan 8. Button2 Caption &Close
- Berikut tampilan form inbox yang akan dibuat :
- Double klik pada button TAMPILKAN, lalu ketikan skrip dibawah ini :
procedure TFinbox.Button1Click(Sender: TObject); begin with ZQuery1 do
Copyright © 2012 By Moh. Ali Aljauhari, S.Kom dan Kuwat Santoso, S.Kom
begin Close; SQL.Clear; SQL.Text := 'SELECT ReceivingDateTime, SenderNumber, TextDecoded FROM inbox'; Open; end; end;
- Double klik pada button CLOSE, lalu ketikan skrip dibawah ini :
procedure TFinbox.Button2Click(Sender: TObject); begin Close; end;
B. Untuk tahap kedua kita buat form sentitems (Fsent/Usentitems.pas), persiapkan
komponen berikut pada form anda :
No. Komponen Properti Nilai 1. Form Name
Caption Fsent .:: PESAN TERKIRIM ::.
2. ZConnection1 Dari component palete “ZeosAccess”
Hostname User Password Protocol Port Database Connected
localhost root sesuaikan! Mysql 3306 Sms True
3. ZQuery1 Dari component palete “ZeosAccess”
Connection SQL Active
ZConnection1 select SendingDateTime, DestinationNumber, TextDecoded from sentitems True
4. Datasource1 Dari component palete “Data Access”
Dataset Enabled
ZQuery1 True
5. DBGrid1 Dari component palete “DataControls”
Datasource Datasource1
6. DBMemo1 Dari component palete “DataControls”
Datasource DataField
Datasource1 TextDecoded
7. DBNavigator1 Dari component palete “DataControls”
Datasource Datasource1
8. Button1 Dari component palete “Standard”
Caption &CLOSE
- Berikut tampilan form sentitems yang akan dibuat :
Copyright © 2012 By Moh. Ali Aljauhari, S.Kom dan Kuwat Santoso, S.Kom
- Double klik pada button CLOSE, lalu ketikan skrip dibawah ini :
procedure TFsent.Button2Click(Sender: TObject); begin Close; end;
C. Untuk tahap ketiga kita buat form kirim pesan (Fkirim/Ukirim.pas), persiapkan
komponen berikut pada form anda :
No. Komponen Properti Nilai 1. Form Name
Caption Fkirim .:: KIRIM PESAN ::.
2. ZConnection1 Dari component palete “ZeosAccess”
Hostname User Password Protocol Port Database Connected
localhost root sesuaikan! Mysql 3306 Sms True
3. ZQuery1 (ZeosAccess) Connection SQL Active
ZConnection1 select SendingDateTime, DestinationNumber, TextDecoded from sentitems True
4. Label1 (Standard) Caption Nomor Tujuan 5. Label2 (Standard) Caption Isi Pesan 6. Edit1 (Standard) Text Dikosongkan! 7. Memo1 (Standard) 8. Button1 (Standard) Caption &KIRIM 9. Button2 (Standard) Caption &BATAL
- Berikut tampilan form kirim pesan yang akan dibuat :
Copyright © 2012 By Moh. Ali Aljauhari, S.Kom dan Kuwat Santoso, S.Kom
- Double klik pada bitbutton KIRIM kemudian tuliskan coding dibawah ini: procedure TFkirim.BitBtn1Click(Sender: TObject); begin ZQuery1.close; ZQuery1.SQL.Clear; ZQuery1.SQL.Text:='insert into outbox(DestinationNumber,TextDecoded) value ("'+ Edit1.Text+'","'+Memo1.Text+'")' ; ZQuery1.ExecSQL; edit1.Text:=''; Memo1.Text:=''; ShowMessage('Sms Terkirim!'); end;
- Double klik pada bitbutton Cancel kemudian tuliskan coding dibawah ini: procedure TFkirim.BitBtn2Click(Sender: TObject); begin Close; end;
D. Untuk tahap keempat kita buat form phonebook (Fphonebook/Uphonebook.pas),
persiapkan komponen berikut pada form anda :
No. Komponen Properti Nilai 1. Form Name
Caption Fphonebook .::: PHONEBOOK :::.
2. ZQuery1 (Zeos Access) Connection SQL Active
Finbox.ZConnection1 select p.Number,p.Name,g.Name from pbk p left outer join pbk_groups g on p.GroupID=g.ID True
3. ZQuery2 (Zeos Access) Connection Finbox.ZConnection1 4. DataSource1 (Data Access) DataSet ZQuery1 5. DataSource2 (Data Access) DataSet ZTable2 6. ZTable1 (Zeos Access) Connection
TableName Active
Finbox.ZConnection Pbk True
7. ZTable2 (Zeos Access) Connection TableName Active
Finbox.ZConnection Pbk_groups True
8. GroupBox1 (Standard) Caption PhoneBook 9. GroupBox2 (Standard) Caption GroupPhoneBook
Copyright © 2012 By Moh. Ali Aljauhari, S.Kom dan Kuwat Santoso, S.Kom
No. Komponen Properti Nilai 10. Label1 (Standard) Caption Nama 11. Label2 (Standard) Caption No. HP 12. Label3 (Standard) Caption Group 13. Label4 (Standard) Caption Nama Grup 14. Edit1 (Standard) Text Kosongkan 15. Edit2 (Standard) Text Kosongkan 16. Edit3 (Standard) Text Kosongkan 17. DBComboBox1 (DataControls) DataSource DataSource2 18. Button1 (Standard) Caption &SAVE 19. Button2 (Standard) Caption &ADD 20. BitBtn1 (Additional) Caption &KELUAR 21. DBGrid1 (Data Controls) DataSource DataSource1 22. DBGrid2 (Data Controls) DataSource DataSource2 23. DBNavigator1 (Data Controls) DataSource DataSource1 24. DBNavigator2 (Data Controls) DataSource DataSource2
- Berikut tampilan form phonebook yang akan dibuat :
- Double klik pada button ADD yang ada pada GroupBox2 (GroupPhoneBook) kemudian tuliskan coding dibawah ini: procedure TFphonebook.Button2Click(Sender: TObject) ; begin ZQuery1.close; ZQuery1.SQL.Clear; ZQuery1.SQL.Text:='insert into pbk_groups (Name) va lue ("'+ Edit3.Text+'")'; ZQuery1.ExecSQL; edit3.Text:=''; ShowMessage('Group telah dibuat!'); ZTable2.Refresh; end;
- Double klik pada button SAVE yang ada pada GroupBox1 (PhoneBook) kemudian tuliskan coding dibawah ini: procedure TFphonebook.Button1Click(Sender: TObject) ; var id:string; begin ZQuery1.close;
Copyright © 2012 By Moh. Ali Aljauhari, S.Kom dan Kuwat Santoso, S.Kom
ZQuery1.SQL.Clear; ZQuery1.SQL.Text:='select * from pbk_groups where Name="'+DBComboBox1.Text+'"'; ZQuery1.Open; ZQuery1.First; id:= ZQuery1.FieldByName('ID').AsString; ZQuery1.close; ZQuery1.SQL.Clear; ZQuery1.SQL.Text:='insert into pbk (Name,GroupID,Nu mber) value ("'+Edit1.Text+'","'+id+'","'+Edit2.Text+'")' ; ZQuery1.ExecSQL; ShowMessage('Data telah disimpan ke tabel phonebook !'); ZQuery1.SQL.Clear; ZQuery1.SQL.Text:='select p.Number,p.Name,g.Name fr om pbk p '+'left outer join pbk_groups g on p.GroupID=g.ID'; ZQuery1.open; end;
- Double klik pada bitbutton KELUAR kemudian tuliskan coding dibawah ini: procedure TFphonebook.BitBtn1Click(Sender: TObject) ; begin close; end;
E. Untuk tahap selanjutnya kita buat form kirim pesan group
(Fkirimgrup/Ukirimgrup.pas), persiapkan komponen berikut pada form anda :
No. Komponen Properti Nilai 1. Form Name
Caption Fkirimgrup .::: KIRIM PESAN GRUP :::.
2. ZQuery1 (Zeos Access) Connection Finbox.ZConnection1 3. Label1 (Standard) Caption GRUP 4. Label2 (Standard) Caption PESAN 5. ComboBox1 (Standard) 6. Memo1 (Standard) 7. BitBtn1 (Additional) Caption
Kind KIRIM bkOK
8. BitBtn2 (Additional) Caption Kind
CANCEL bkCancel
- Berikut tampilan form kirim pesan grup (Fkirimgrup) yang akan dibuat :
Copyright © 2012 By Moh. Ali Aljauhari, S.Kom dan Kuwat Santoso, S.Kom
- Double klik pada form kirim grup (Fkirimgrup), kemudian tuliskan coding dibawah ini:
procedure TFkirimgrup.FormCreate(Sender: TObject); var i:integer; begin ZQuery1.Close; ZQuery1.SQL.Clear; ZQuery1.SQL.Add('select * from pbk_groups'); ZQuery1.Open; ZQuery1.First; i:=0; ComboBox1.Clear; while i< ZQuery1.RecordCount do begin ComboBox1.Items.Add(ZQuery1.FieldByName('Name').AsS tring); i:=i+1; ZQuery1.Next; end; ZQuery1.Close; end;
- Double klik pada BitBtn1(KIRIM), kemudian tuliskan coding dibawah ini:
procedure TFkirimgrup.BitBtn1Click(Sender: TObject) ; var i:integer; begin //pilih nomor dalam Group ZQuery1.close; ZQuery1.SQL.Clear; ZQuery1.SQL.Text:='select pbk.*,pbk_groups.* from pbk left outer join pbk_groups on '+ ' pbk.GroupID=pbk_groups.ID where pbk_groups.Name="'+ComboBox1.Text+'"' ; i:=0; ZQuery1.Open; ZQuery1.First; while i < ZQuery1.RecordCount do begin ZQuery2.close; ZQuery2.SQL.Clear;
Copyright © 2012 By Moh. Ali Aljauhari, S.Kom dan Kuwat Santoso, S.Kom
ZQuery2.SQL.Text:='insert into outbox(DestinationNumber,TextDecoded) value ("'+ ZQuery1.FieldByName('Number').AsString+'","'+Memo1. Text+'")'; ZQuery2.ExecSQL; i:=i+1; ZQuery1.Next; end; ZQuery1.Close; Memo1.Text:=''; ShowMessage('Sms Terkirim!'); end;
- Double klik pada BitBtn2(CANCEL), kemudian tuliskan coding dibawah ini: procedure TFkirimgrup.BitBtn2Click(Sender: TObject) ; begin Close; end;
F. Selanjutnya kita buat form menu sms (Fmenusms/Umenusms.pas), persiapkan
komponen berikut pada form anda :
No. Komponen Properti Nilai 1. Form Name
Caption Menu PopupMenu
Fmenusms .:: FORM MENU SMS GATEWAY ::. MainMenu1 PopupMenu1
2. MainMenu1 (Standard) Items Sesuaikan seperti gambar berikut :
3. Popup Menu1 (Standard) Items
4. Label1 (Standard) Caption SELAMAT
DATANG DI
Copyright © 2012 By Moh. Ali Aljauhari, S.Kom dan Kuwat Santoso, S.Kom
No. Komponen Properti Nilai APLIKASI SMS GATEWAY
5. Image1 (Standard) Picture Stretch
Load(cari gambar yg sesuai dari direktori anda) True
- Berikut tampilan form menu sms (Fmenusms) yang akan dibuat :
- Source Code Umenusms (Fmenusms)
unit Umenusms; interface uses Windows, Messages, SysUtils, Variants, Classes, G raphics, Controls, Forms, Dialogs, Menus, StdCtrls, jpeg, ExtCtrls; type TFmenusms = class(TForm) MainMenu1: TMainMenu; File1: TMenuItem; sms1: TMenuItem; SMS2: TMenuItem; Inbox1: TMenuItem; Sent1: TMenuItem; Help1: TMenuItem; About1: TMenuItem; PopupMenu1: TPopupMenu; Inbox2: TMenuItem; SentItems1: TMenuItem; About2: TMenuItem; keluar1: TMenuItem; Label1: TLabel; KirimPesan1: TMenuItem; Image1: TImage; PhoneBook1: TMenuItem; PhoneBook2: TMenuItem; KirimPesanGrup1: TMenuItem; KirimPesanGrup2: TMenuItem;
Copyright © 2012 By Moh. Ali Aljauhari, S.Kom dan Kuwat Santoso, S.Kom
procedure sms1Click(Sender: TObject); procedure Inbox1Click(Sender: TObject); procedure Sent1Click(Sender: TObject); procedure Inbox2Click(Sender: TObject); procedure SentItems1Click(Sender: TObject); procedure keluar1Click(Sender: TObject); procedure KirimPesan1Click(Sender: TObject); procedure About2Click(Sender: TObject); procedure PhoneBook1Click(Sender: TObject); procedure PhoneBook2Click(Sender: TObject); procedure About1Click(Sender: TObject); procedure KirimPesanGrup1Click(Sender: TObject) ; procedure KirimPesanGrup2Click(Sender: TObject) ; private { Private declarations } public { Public declarations } end; var Fmenusms: TFmenusms; implementation uses Ucobazeoc, Usentitems, Ukirim, Uphonebook, Uab out, Ukirimgrup; {$R *.dfm} procedure TFmenusms.sms1Click(Sender: TObject); begin Fphonebook.ShowModal; end; procedure TFmenusms.Inbox1Click(Sender: TObject); begin Finbox.showmodal; end; procedure TFmenusms.Sent1Click(Sender: TObject); begin Fsent.showmodal; end; procedure TFmenusms.Inbox2Click(Sender: TObject); begin Finbox.ShowModal; end; procedure TFmenusms.SentItems1Click(Sender: TObject ); begin Fsent.ShowModal; end; procedure TFmenusms.keluar1Click(Sender: TObject); begin
Copyright © 2012 By Moh. Ali Aljauhari, S.Kom dan Kuwat Santoso, S.Kom
Fphonebook.ShowModal; end; procedure TFmenusms.KirimPesan1Click(Sender: TObjec t); begin Fkirim.showmodal; end; procedure TFmenusms.About2Click(Sender: TObject); begin Fkirim.Showmodal; end; procedure TFmenusms.PhoneBook1Click(Sender: TObject ); begin Application.Terminate; end; procedure TFmenusms.PhoneBook2Click(Sender: TObject ); begin Fkirimgrup.ShowModal; end; procedure TFmenusms.About1Click(Sender: TObject); begin Fabout.showmodal; end; procedure TFmenusms.KirimPesanGrup1Click(Sender: TO bject); begin Fkirimgrup.showmodal; end; procedure TFmenusms.KirimPesanGrup2Click(Sender: TO bject); begin Application.Terminate; end; end.
☺☺☺☺
===== SELAMAT MENCOBA, SEMOGA SUKSES =====
Copyright © 2012 By Moh. Ali Aljauhari, S.Kom dan Kuwat Santoso, S.Kom
6. REFERENSI :
1. Kadir, Abdul.2006.Dasar Pemrograman Delphi.Yogyakarta : Andi Publisher
2. Saputra, Agus.2011.Step by step Membangun Aplikasi SMS dengan PHP dan
MySQL.Jakarta: Elex Media Komputindo.
3. www.apachefriends.org
4. blog.rosihanari.net
5. www.wammu.eu
6. www.ilmukomputer.org
7. samsonasik.wordpress.com
Recommended