Mais conteúdo relacionado Semelhante a Modul membangun-aplikasi-sms-gateway-dengan-delphi-7-mysql blog1 (20) Modul membangun-aplikasi-sms-gateway-dengan-delphi-7-mysql blog11. 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!
2. 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
MySQL, PostgreSQL,Interbase, Firebird, MS
SQL, Sybase, Oracle
database untuk
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 FilesGammu 1.29.92sharedocgammu examplesconfig
Ke: C:Program Filesgammubin
-
Dengan menggunakan notepad,atur file gammurc yang ada pada :
C:Program Filesgammubingammurc
device = com23:
connection = at115200
-
Dengan menggunakan notepad,atur file smsdrc yang ada pada :
C:Program Filesgammubinsmsdrc
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
3. -
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
4. -
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
5. -
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
6. No.
1.
Komponen
Form
2.
ZConnection1
Dari component palete
“ZeosAccess”
3.
ZQuery1
Dari component palete
“ZeosAccess”
4.
Datasource1
Dari component palete
“Data Access”
DBGrid1
Dari component palete
“DataControls”
DBMemo1
Dari component palete
“DataControls”
Button1
Button2
5.
6.
7.
8.
Properti
Name
Caption
Hostname
User
Password
Protocol
Port
Database
Connected
Active
Dataset
Enabled
Nilai
Finbox
.:: PESAN MASUK ::.
localhost
root
sesuaikan!
Mysql
3306
Sms
True
Keterangan:
Jika pada saat connected-nya di true kan
muncul pesan error: library.....
copy file dari
C:xamppmysqlbinlibmysql.dll kemudian
paste di
c:/windows
ZConnection1
SELECT
ReceivingDateTime,SenderNumber,
TextDecoded FROM inbox
True
ZQuery1
True
Datasource
Datasource1
Datasource
DataField
Datasource1
TextDecoded
Caption
Caption
&Tampilkan
&Close
Connection
SQL
-
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
7. 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.
1.
Komponen
Form
2.
ZConnection1
Dari component palete “ZeosAccess”
3.
ZQuery1
Dari component palete “ZeosAccess”
4.
Datasource1
Dari component palete “Data
Access”
DBGrid1
Dari component palete
“DataControls”
DBMemo1
Dari component palete
“DataControls”
DBNavigator1
Dari component palete
“DataControls”
Button1
Dari component palete “Standard”
5.
6.
7.
8.
-
Properti
Name
Caption
Hostname
User
Password
Protocol
Port
Database
Connected
Connection
SQL
Active
Dataset
Enabled
Nilai
Fsent
.:: PESAN TERKIRIM ::.
localhost
root
sesuaikan!
Mysql
3306
Sms
True
ZConnection1
select
SendingDateTime,
DestinationNumber
, TextDecoded
from sentitems
True
ZQuery1
True
Datasource
Datasource1
Datasource
DataField
Datasource1
TextDecoded
Datasource
Datasource1
Caption
&CLOSE
Berikut tampilan form sentitems yang akan dibuat :
Copyright © 2012 By Moh. Ali Aljauhari, S.Kom dan Kuwat Santoso, S.Kom
8. -
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.
1.
2.
ZConnection1
Dari component palete “ZeosAccess”
3.
ZQuery1 (ZeosAccess)
4.
5.
6.
7.
8.
9.
-
Komponen
Form
Label1 (Standard)
Label2 (Standard)
Edit1 (Standard)
Memo1 (Standard)
Button1 (Standard)
Button2 (Standard)
Properti
Name
Caption
Hostname
User
Password
Protocol
Port
Database
Connected
Connection
SQL
Active
Caption
Caption
Text
Nilai
Fkirim
.:: KIRIM PESAN ::.
localhost
root
sesuaikan!
Mysql
3306
Sms
True
ZConnection1
select
SendingDateTime,
DestinationNumber
, TextDecoded
from sentitems
True
Nomor Tujuan
Isi Pesan
Dikosongkan!
Caption
Caption
&KIRIM
&BATAL
Berikut tampilan form kirim pesan yang akan dibuat :
Copyright © 2012 By Moh. Ali Aljauhari, S.Kom dan Kuwat Santoso, S.Kom
9. -
-
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.
1.
Komponen
Form
2.
ZQuery1 (Zeos Access)
3.
4.
5.
6.
ZQuery2 (Zeos Access)
DataSource1 (Data Access)
DataSource2 (Data Access)
ZTable1 (Zeos Access)
7.
ZTable2 (Zeos Access)
8.
9.
GroupBox1 (Standard)
GroupBox2 (Standard)
Properti
Name
Caption
Connection
SQL
Active
Connection
DataSet
DataSet
Connection
TableName
Active
Connection
TableName
Active
Caption
Caption
Nilai
Fphonebook
.::: PHONEBOOK :::.
Finbox.ZConnection1
select
p.Number,p.Name,g.Name
from pbk p left outer join
pbk_groups g
on p.GroupID=g.ID
True
Finbox.ZConnection1
ZQuery1
ZTable2
Finbox.ZConnection
Pbk
True
Finbox.ZConnection
Pbk_groups
True
PhoneBook
GroupPhoneBook
Copyright © 2012 By Moh. Ali Aljauhari, S.Kom dan Kuwat Santoso, S.Kom
10. No.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
Komponen
Label1 (Standard)
Label2 (Standard)
Label3 (Standard)
Label4 (Standard)
Edit1 (Standard)
Edit2 (Standard)
Edit3 (Standard)
DBComboBox1 (DataControls)
Button1 (Standard)
Button2 (Standard)
BitBtn1 (Additional)
DBGrid1 (Data Controls)
DBGrid2 (Data Controls)
DBNavigator1 (Data Controls)
DBNavigator2 (Data Controls)
Properti
Caption
Caption
Caption
Caption
Text
Text
Text
DataSource
Caption
Caption
Caption
DataSource
DataSource
DataSource
DataSource
Nilai
Nama
No. HP
Group
Nama Grup
Kosongkan
Kosongkan
Kosongkan
DataSource2
&SAVE
&ADD
&KELUAR
DataSource1
DataSource2
DataSource1
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) value ("'+
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
11. 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,Number)
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 from 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.
1.
Properti
Name
Caption
2.
3.
4.
5.
6.
7.
ZQuery1 (Zeos Access)
Label1 (Standard)
Label2 (Standard)
ComboBox1 (Standard)
Memo1 (Standard)
BitBtn1 (Additional)
Connection
Caption
Caption
Nilai
Fkirimgrup
.::: KIRIM PESAN
GRUP :::.
Finbox.ZConnection1
GRUP
PESAN
8.
-
Komponen
Form
BitBtn2 (Additional)
Caption
Kind
Caption
Kind
KIRIM
bkOK
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
12. -
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').AsString);
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
13. 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.
1.
Komponen
Form
Properti
Name
Caption
Nilai
Fmenusms
.:: FORM MENU
SMS GATEWAY ::.
MainMenu1
PopupMenu1
Sesuaikan seperti
gambar berikut :
2.
MainMenu1 (Standard)
Menu
PopupMenu
Items
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
14. No.
Komponen
Properti
5.
Image1 (Standard)
Picture
Stretch
Nilai
APLIKASI SMS
GATEWAY
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, Graphics,
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
15. procedure
procedure
procedure
procedure
procedure
procedure
procedure
procedure
procedure
procedure
procedure
procedure
procedure
sms1Click(Sender: TObject);
Inbox1Click(Sender: TObject);
Sent1Click(Sender: TObject);
Inbox2Click(Sender: TObject);
SentItems1Click(Sender: TObject);
keluar1Click(Sender: TObject);
KirimPesan1Click(Sender: TObject);
About2Click(Sender: TObject);
PhoneBook1Click(Sender: TObject);
PhoneBook2Click(Sender: TObject);
About1Click(Sender: TObject);
KirimPesanGrup1Click(Sender: TObject);
KirimPesanGrup2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Fmenusms: TFmenusms;
implementation
uses Ucobazeoc, Usentitems, Ukirim, Uphonebook, Uabout,
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
16. Fphonebook.ShowModal;
end;
procedure TFmenusms.KirimPesan1Click(Sender: TObject);
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: TObject);
begin
Fkirimgrup.showmodal;
end;
procedure TFmenusms.KirimPesanGrup2Click(Sender: TObject);
begin
Application.Terminate;
end;
end.
☺
===== SELAMAT MENCOBA, SEMOGA SUKSES =====
Copyright © 2012 By Moh. Ali Aljauhari, S.Kom dan Kuwat Santoso, S.Kom
17. 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
Copyright © 2012 By Moh. Ali Aljauhari, S.Kom dan Kuwat Santoso, S.Kom