Official StoreTekan tombol di atas untuk membeli semua alat dan bahan eksperimen di web ini

Program Terima SMS dengan Delphi Secara Live (Real Time)

Terkadang sistem yang kita inginkan membutuhkan respon yang cepat begitu ada SMS masuk. Sistem ini biasanya terdapat pada sistem kontroler berbasis SMS. Contoh mudahnya, bila kita ingin menghidupkan atau mematikan mobil/motor menggunakan SMS tentunya saat itu juga mobil/motor kita harus hidup/mati sesuai isi SMS. Nah, sesuai ilustrasi yang saya berikan, untuk sistem ini paling cocok menggunakan teknik ‘live/real time’ dalam proses handling SMS yang masuk. Jadi begitu ada SMS masuk, SMS tersebut langsung diproses, dibaca isinya, dicocokkan dengan keyword yang sudah kita tentukan dan langsung take action sesuai dengan kata kunci.

Berikut ini adalah tutorial sederhana  tentang bagaimana caranya melakukan handling SMS yang masuk dengan cara ‘live’, menggunakan program Delphi. Untuk teknik membaca SMS dengan cara polling dapat Anda baca pada artikel saya sebelumnya. Program ini ditulis menggunakan bahasa Delphi 7, komponen untuk handling SMS yang digunakan adalah CPORT (versi 310) dan modem yang digunakan adalah merk SpeedUp 8100 (USB modem 3G/HSDPA). Mengapa saya memilih modem 3G ketimbang modem GPRS atau handphone, dapat Anda baca – baca di artikel terdahulu.

Baiklah, sekarang mari kita coba membuat program sederhana untuk proses handling SMS secara live. Program ini akan menyalakan LED virtual (ComLED) jika SMS berisi keyword ‘LED ON’ dan akan mematikan LED jika keyword SMS adalah ‘LED OFF’. Dari contoh program ini saya harapkan dapat lebih memantapkan pemahaman Anda tentang teknik handling SMS secara ‘live’ dan dapat membandingkannya dengan teknik ‘polling’.

Buatlah project baru dalam Delphi 7, kemudian  ambil komponen Button (2 buah), Memo (1 buah),  ComPort (1 buah) dan komponen ComLED (1 buah). Aturlah komponen – komponen tersebut ke dalam form hingga tampilannya seperti pada gambar di bawah.

Sebelumnya,tambahkan script berikut untuk handling data serial yang masuk melalui ComPort di event OnRxchar

procedure TForm1.ComPort1RxChar(Sender: TObject; Count: Integer);
var
Str: String;
begin
memo1.clear;
ComPort1.ReadStr(Str, Count);
Memo1.Text := Memo1.Text + Str;
end;

Kemudian double click tombol yang bertuliskan ‘Setting’ dan isikan dengan baris program sebagai berikut:

procedure TForm1.Button1Click(Sender: TObject);

begin

comport1.ShowSetupDialog;

end;

Baris program  comport1.ShowSetupDialog; adalah untuk menampilkan jendela pengaturan modem meliputi nomor COM port, baudarate, flow control, parity dan start – stop bits secara runtime. Mengenai identifikasi nomor COM port dari USB modem dapat Anda pelajari pada artikel saya terdahulu.

Double click tombol 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;

Baris program di atas digunakan untuk membuka koneksi dengan modem (ComPort1.Open;) dan sekaligus untuk melakukan inisialisasi modem ke mode teks (ComPort1.WriteStr(‘at+cmgf=1’+#13#10); ), mengatur memori penyimpanan SMS di Simcard (ComPort1.WriteStr(‘at+cpms=”SM”‘+#13#10);) dan mengatur karakter set ke ‘GSM’ agar bisa terbaca oleh kita (ComPort1.WriteStr(‘at+cscs=”GSM”‘+#13#10);).

Kemudian double click komponen memo hingga Anda masuk ke event memochange, dan isikan beberapa baris program sebagai berikut :

procedure TForm1.Memo1Change(Sender: TObject);

var a,b,c,d,e:integer;

s:string;

begin

a:=pos (‘+CMTI’,memo1.Text);

if a <> 0 then

begin

b:=posex (‘,’,memo1.Text,a+1);

c:=posex (#13#10,memo1.Text,b+1);

s:=copy (memo1.Text,b+1,c-b-1);

ComPort1.WriteStr(‘at+cmgr=’+s+#13#10);

end;

d:=pos (‘+CMGR’,memo1.Text);

if d <> 0 then

begin

if posex (‘LED ON’,memo1.Text,d+1) <> 0 then ComLed1.State:=LsOn;

if posex (‘LED OFF’,memo1.Text,d+1) <> 0 then ComLed1.State:=LsOff;

end;

end;

Sebelumnya tambahkan unit StrUtils, dideklarasi unit (di bawah interface), karena function posex berada dalam unit StrUtils

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls, ExtCtrls, CPort, CPortCtl, StrUtils;

Baris program dalam event memochange inilah sebenarnya inti dari program terima dan baca SMS secara real time, karena begitu ada SMS masuk (diindikasikan dengan unsolicited code ‘+CMTI’), data dari COM Port akan masuk ke kotak memo melalui komponen CPORT, dan begitu kotak memo berubah datanya (berubah=change), maka event OnChange (memochange) akan ter-trigger dan akan mengeksekusi baris program yang ada di dalamnya. Berikut ini adalah flowchart dan penjelasan dari program yang ada di event memochange

Berikut ini adalah implementasi flowchart di atas dalam bentuk program:

Ada SMS masuk ? (point 1). Jika ada SMS masuk, indikatornya adalah +CMTI:”SM”,0 akan muncul di kotak memo, dengan ‘+CMTI’ adalah unsolicited code jika ada SMS masuk, ‘SM’ menunjukkan SMS ada di Simcard, dan ‘0’ menunjukkan indeks memori nomor ‘0’ di SIMcard. Baris programnya adalah a:=pos (‘+CMTI’,memo1.Text);

Baca SMS-nya (point 2). Untuk membaca isi SMS, kita harus tahu di indeks berapa SMS itu berada. Caranya adalah mencari indeks tersebut setelah karakter ‘SM’ tadi (contoh di bawah, indeks SMS akan disimpan di variable string ‘s’).

b:=posex (‘,’,memo1.Text,a+1);

c:=posex (#13#10,memo1.Text,b+1);

s:=copy (memo1.Text,b+1,c-b-1);

Catatan : penjelasan mengenai sintaks function ‘pos’ dan ‘posex’ dapat Anda baca di menu ‘Help’ Delphi (inti dari function ini adalah untuk mencari karakter tertentu dalam variabel string)

Dan begitu indeks SMS di dapat, langsung dibaca isinya menggunakan at command ‘at+cmgr=indeks’. Baris programnya adalah : ComPort1.WriteStr(‘at+cmgr=’+s+#13#10);

Baca keyword (point 3 s/d 6). Setelah isi SMS berhasil dibaca, langkah selanjutnya adalah mencocokkan keyword yang sudah ditentukan, yakni jika isi SMS adalah ‘LED ON’ akan menghidupkan Led, dan jika    keyword adalah ‘LED OFF’ akan mematikan Led. Berikut adalah baris programnya.

d:=pos (‘+CMGR’,memo1.Text);

if d <> 0 then

begin

if posex (‘LED ON’,memo1.Text,d+1) <> 0 then ComLed1.State:=LsOn;

if posex (‘LED OFF’,memo1.Text,d+1) <> 0 then ComLed1.State:=LsOff;

end;

Setelah itu cobalah running program yang telah Anda buat tadi, dan lihatlah hasilnya. Setelah Anda setting modem (klik tombol ‘Setting’) dan buka koneksinya (klik tombol Open), cobalah mengirim SMS dengan keyword ‘LED ON’ ke nomor yang ada di dalm modem. Perhatikan apakah LED di atas kotak memo menyala atau tidak. Dan jika Anda mengirim SMS  ‘LED OFF’, harusnya LED akan padam.

LED ON
LED OFF

Demikian sedikit tutorial singkat tentang handling SMS dengan Delphi, semoga ada manfaatnya buat Anda. Jika ada pertanyaan bisa mengisi komentar di bawah atau hubungi saya di YM:saptaji2011 atau email: saptaji2011@yahoo.co.id

 

bersambung

Incoming search terms:

membaca sms pdu di delphi, terima sms delphi, cara terima sms delphi7, baca sms dengan delphi, syntax memasukkan format sms pada delphi 7, menerima sms delphi comport, cara membaca timer agar tidak bertabrakan pada delphi, cara membaca data real time pada dhelpi#hl=id, cara buat program terima sms, baca sms aplikasi delphi
53 Comments

Add a Comment

Your email address will not be published. Required fields are marked *

error: Content is protected !!