Program Membaca SMS Dengan Delphi

Berikut ini penulis coba sajikan tutorial menerima dan membaca SMS menggunakan  program Delphi. Proses penerimaan data SMS sebenarnya hanya berlangsung di modem. Program Delphi di sini hanya akan membaca data SMS dari modem. Ada dua macam teknik membaca SMS dari modem, yakni polling dan live/real time. Cara polling dilakukan tanpa mengecek ada SMS yang masuk atau tidak dan dilakukan berdasarkan interval waktu tertentu, sedakan cara ‘live/real time’ dilakukan setelah program Delphi mengetahui ada indikasi SMS masuk yang dikirim oleh modem. Jadi tugas program di sini adalah mengecek ada indikasi SMS masuk atau tidak, kemudian langsung membaca isi SMS setelah indikator terbaca. Diagram Alir di bawah ini mungkin akan membantu pemahaman Anda.

1.       Skema polling data SMS dari modem

2.       Skema baca SMS berdasar indikator (cara Live/real time)

Setelah Anda memahami skema prinsip membaca SMS di atas, mari kita coba mengimplementasikan dalam bentuk baris program Delphi.

1.       Program baca SMS menggunakan teknik polling

Buat program baru dalam Delphi, ambil komponen Button (2 buah), Memo, Timer, ComPort ke dalam Form, dan atur seperti gambar di bawah

Double click tombol dengan tulisan ‘Setting’, dan isikan baris program sebagai berikut :

procedure TForm1.Button1Click(Sender: TObject);

begin

comport1.ShowSetupDialog;

end;

Double click tombol dengan tulisan ‘Open, dan isikan baris program sebagai berikut :

procedure TForm1.Button2Click(Sender: TObject);

begin

if ComPort1.Connected then

begin

ComPort1.Close;

button2.Caption:=’Open’;

end

else

begin

ComPort1.Open;

button2.Caption:=’Close’;

ComPort1.WriteStr(‘at+cmgf=1’+#13#10);

ComPort1.WriteStr(‘at+cpms=”SM”‘+#13#10);

ComPort1.WriteStr(‘at+cscs=”GSM”‘+#13#10);

end;

end;

Kemudian tambahkan baris program berikut untuk meng-handle data serial yang masuk ke serial Port (Com Port) di event OnRxChar di komponen ComPort1

procedure TForm1.ComPort1RxChar(Sender: TObject; Count: Integer);

var

Str: String;

begin

ComPort1.ReadStr(Str, Count);

Memo1.Text := Memo1.Text + Str;

end;

Kemudian masukkan baris program sebagai berikut ke komponen Timer. Program di dalam timer inilah yang bertindak sebagai program inti dalam proses pembacaan isi SMS dengan interval waktu tertentu.

procedure TForm1.Timer1Timer(Sender: TObject);

begin

memo1.Clear;

comport1.WriteStr(‘at+cmgl=”all”‘+#13#10);

end;

Pada program di atas, baris comport1.WriteStr(‘at+cmgl=”all”‘+#13#10); dimaksudkan untuk mengeluarkan perintah ‘at+cmgl’ dari Com Port ke modem. Sedangkan arti dari at command ‘at+cmgl’ adalah memerintahkan modem supaya memberikan semua data sms yang tersimpan di memori.

Untuk mengatur interval waktu pembacaan isi SMS, Anda dapat mengisi property  Interval milik komponen Timer. Nilai (Value) dalam property interval Timer ini dalam satuan ms (mili second), jadi bila Anda ingin tiap satu menit membaca SMS, Anda harus mengisi property Interval dengan nilai 60×1000 ms=60000. Untuk nilai lain bisa Anda sesuaikan sendiri sesuai kebutuhan.

Setelah Anda lengkap mengisi script di atas, cobalah untuk me-running program (F9), dan lihatlah hasilnya.

Tampak pada gambar di atas, semua SMS yang ada di SIM card berhasil dibaca oleh program Delphi. Data – data SMS yang ikut terbaca selain isi SMS antara lain : indeks memori tempat isi SMS (berguna untuk penghapusan SMS atau pembacaan ulang), status SMS (read / unread), nomor pengirim, dan waktu (tanggal dan jam) penerimaan SMS. Data – data ini dapat Anda olah untuk kebutuhan program Anda.

Demikian sedikit tutorial program baca SMS dengan  Delphi dengan teknik polling. Untuk program baca SMS dengan teknik Live / real time akan penulis sajikan dalam artikel selanjutnya.

Jika Anda mengalami kesulitan, ada baiknya Anda membaca tulisan – tulisan saya sebelumnya, dan jika masih kesulitan, Anda bisa menghubungi saya di YM:ajiew atau email: ajie@saptaji.com

 

Bersambung

0 0 votes
Article Rating

Leave a Reply to Saptaji, ST. M.Tr.T Cancel reply

32 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
anamcur

lanjutane dimana mas??

Renandatta

saya sudah mengikuti langkah demi langkah, tetapi tidak muncul tulisan apa apa di memo ..

setelah saya konsultasi dengan pak ajie di chat, akhirnya saya bisa menyelesaikan masalahnya

solusi = menambahkan perintah at+cfun=1 pada button open

candra

mas.. punya source code unutk melisting com berapa aja yang bisa dipakai gak mas? tapi listing devicenya yang make “friendly name” bukan com1,com2,com3 dst.. tapi misal nokia modem, huwawei modem.. jadi user lebih gampang makenya

reno

permisi mas ajie, saya mau tanya.
saya sudah mengikuti langkah2 seperti diatas, tapi hasil yang saya dapatkan,muncul ERROR seperti ini,

at+cmgf=1
at+cpms=”SM”
at+cfun=1

ERROR

ERROR

mohon pencerahan mas, terima kasih

Luthfi

mas, pada saat sy kirim sms pulsa habis dan respon gagal agak lama. saat tunggu respon tersebut saya coba kirim sms. kok smsnya nggak bisa masuk ya? ,mohon petunjuknya, terima kasih

Luthfi

maksudku bukan sms keluar tapi sms masuk. sms yang masuk ke nomor yg digunakan tidak kebaca

Luthfi

selain itu juga mas, saya pakai teknik poling juga nggak berhasil. saat ada sms masuk ada indikator +CMTI:”ME”,-1 begitu dibuka dengan AT+cmgl=”ALL” hanya keluar ok, tidak keluar smsnya

bryan

di saya kok cuma muncul jumlah sms masuk aja ya ?
isi pesan gak muncul

bryan

sudah ketikan seperti yg di saranin tapi tetep cuma muncul +CMTI: “SM”,14

bryan

maaf sudah bisa baca kalau command saya ganti at+cpms=”SM”. padahal sebelumnya juga gak bisa2 walaupun sudah benar simpannya di simcard.

adi

itukan kalau ada sms selalu bersihin memo.
kalau gak harus bersihin bisa gak ya ?
jadi ada sms nambah line.
saya coba nambah line terus menerus.

putri

mas saya pakai MOTOROLA L6 kok tdk bisa ya ?
sms tdk kebaca

ryann

mas..kalau eror Port Not Open ap mslhnya..

Ika

maaf ni gan pertanyaan nya agak melenceng, soal na saya tidak tau mw tanya kemana lagi. uda mentok…. 🙁
kenapa y saya pakek huawei selalu ada indicator d terminal seperti : “^Mode” “RSSI” dll , tp ketika saya pakai sierra tidak ada muncul indikator tersebut secara runtime. soal na saya ada project mw buat aplikasi seperti mobile partner untuk modem sierra. klo untuk masalah at command nya saya sudah tau, tp untuk indicator RSSI and RAT nya tidak ada yg masuk d terminal secara runtime 🙁

Ika

makasih uda d jawab mas…
tp bukan seperti itu mksd saya mas, mksd saya tu bukan mw mematikan indikator sinyal melalui at command mas, tp cara menampilkan indikator sinyal di sierra, sperti yg d huawei yg keluar secara realtime. saya uda coba seh buat nya melalui timer, kirim at command “AT+CSQ” setiap 5 detik sekali, untuk mengetahui kekuatan sinyal dari device sierra tersebut. klo saya kirim command tersebut terus menerus setiap 5 detik sekali, buat modem rusak enggk y mas ?

danding

init = AT^CURC=0 < menghilangkan RSSI yg selalu muncul di Modem Huawei 153 saya 😀

dddd

ini dimana diletakan procedure TForm1.ComPort1RxChar(Sender: TObject; Count: Integer);

var

Str: String;

begin

ComPort1.ReadStr(Str, Count);

Memo1.Text := Memo1.Text + Str;

end;

my name is dante

gan sms yg terbaca di memo nya berupa angka dan huruf kira2 apa yg salah ya gan ?

agus

Gan, di ComPort1.ReadStr(Str, Count); yang terbaca hanya OK saja saat dilakukan perintah baca SMS (at+cmgl=”ALL”), itu kenapa ya??
~ Mode sudah Text (At+cmgf=1)
~ At+CFUN=1
tp hasilnya tetap hanya tulisan OK,
sedangkan jika di jalankan di hyperterminal, hasilnya keluar semua sms yg ada di memori.
saya pakai mode Huawei e173 + kartu 3,
Tolong bantuannya..

32
0
Would love your thoughts, please comment.x
()
x