Ada dua macam cara menerima dan membaca SMS dengan Delphi, yaitu dengan teknik ‘polling’ dan ‘live/real time’. Kedua teknik tersebut dapat Anda baca selengkapnya di artikel saya sebelumnya. Pada artikel kali ini kita akan mencoba belajar dasar – dasar penerimaan data SMS melalui komponen CPORT sebelum mengimplementasikan teknik – teknik tersebut ke dalam program Delphi.
Sebelum masuk ke proses handling penerimaan SMS, ada baiknya kita refresh kembali tentang konsep komunikasi serial dengan component CPORT di Delphi. Jadi tugas komponen CPORT adalah menangani komunikasi serial dengan device lain melalui port serial di computer (COM Port). Khusus untuk penerimaan data serial, komponen CPORT prosesnya ditangani oleh event OnRxChar. Proses ini berlaku umum, jadi semua data serial dari device lain yang masuk melalui port serial (COM Port) akan ditangani oleh even OnRxChar ini, termasuk proses komunikasi serial dengan modem GPRS/3G. Untuk itu, coba Anda tulis beberapa baris program berikut untuk proses handling penerimaan data serial di even OnRxchar. Caranya dari jendela Object Inspector klik tab event kemudian cari OnRxChar dan double click kolom di sebelah kanannya, kemudian isikan script berikut di dalamnya.
procedure TForm1.ComPortRxChar(Sender: TObject; Count: Integer);
var
Str: String;
begin
ComPort1.ReadStr(Str, Count);
Memo1.Text := Memo1.Text + Str;
end;
Kemudian tambahkan komponen memo (dengan nama memo1) di form kerja Anda. Komponen Memo1 ini tugasnya adalah sebagai buffer penerimaan data serial yang masuk, karena data serial yang diterima adalah per karakter bukan keseluruhan data secara langsung. Untuk itulah diperlukan satu variabel sebagai buffer untuk menyimpan data serial yang masuk satu persatu. Untuk keperluan ini, saya memilih komponen Memo sebagai ‘variabel’ buffer-nya agar kita dapat langsung melihat data serial yang masuk.
Kemudian tambahkan komponen Button dua buah dan atur komposisinya sesuai gambar di atas. Double click tombol ‘Setting’ dan masukkan kode program di bawah
procedure TForm1.Button1Click(Sender: TObject);
begin
comport1.ShowSetupDialog;
end;
Dan tambahkan baris program berikut ke dalam tombol ‘Open’
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+cscs=”GSM”‘+#13#10);
end;
end;
Sekarang kita running program di atas, dan lihat hasilnya. Pasang modem Anda, dan klik tombol ‘Setting’, dan pilih COM port dimana modem berada. Setelah Anda klik tombol ‘Open’, maka komunikasi dengan modem sudah berjalan, dan setiap data yang masuk akan terbaca di kotak Memo.
Sampai dengan langkah ini kita sudah bisa melihat ada data yang masuk, tapi masih belum bisa membaca isi SMS. Untuk membaca isi SMS, Anda harus memerintahkan modem untuk ‘memberikan’ data sms kepada kita dengan AT command : at+cmgr (untuk melihat satu sms di indeks memori tertentu) atau at+cmgl (untuk melihat semua sms di semua indeks memori). Untuk program Delphi yang digunakan untuk membaca isi SMS dapat Anda pelajari pada artikel selanjutnya
a Technopreneur – writer – Enthusiastic about learning AI, IoT, Robotics, Raspberry Pi, Arduino, ESP8266, Delphi, Python, Javascript, PHP, etc. Founder of startup Indomaker.com
Pak Ajie, kpan artikel selanjutnya dibuat. saya ingin mencoba membaca sms dalam delphi. serta saya mohon penjelasannya tentang sms auto reply yang mengambil data dari data base delphi (maklum masih newbie)
terima kasih pak atas artikelx, sngat mmbantu…
sabar mas, sebentar lagi tayang ….
ditunggu tayangan perdananya pak, terima kasih banyak ilmunya…
MAS SALAM KENAL DULU SAYA SEORANG GURU DI SMPN3 PONGGOK KAB BLITAR, MASIH TARAF BELAJAR DELPHI6/7 TO THE POINT SAJA MAS.. SETELAH SAYA IKUTI SEMUA PETUNJUK OK ALHAMDULLILLAAH BERHASIL…CUMA SETELAH PERINTAH MENGIRIM SMS, SETELAH AGAK LAMA DI MEMO MUNCUL CMS ERROR: 500 SAYA PAKAI MODEM MODEM HUAWEI E153…. TOLONG MINTA PENCERAHANNYA… ComExample.DPR saya ubah demikian …. TOMBOL OPEN ISI : procedure TForm1.Button_OpenClick(Sender: TObject); begin if ComPort.Connected then ComPort.Close else BEGIN ComPort.LoadSettings(stRegistry, ‘HKEY_LOCAL_MACHINE\Software\Dejan’);//SUPAYA GAK ISA ISI…HE HE ComPort.Open; ComPort.WriteStr(‘at+cmgf=1’+#13#10); ComPort.WriteStr(‘at+cscs=”GSM”‘+#13#10); ComPort.WriteStr(‘at+cpms=”SM”‘+#13#10); END; end; TOMBOL SETTING ISI : procedure TForm1.Button_SettingsClick(Sender: TObject); begin ComPort.ShowSetupDialog; end; TOMBOL SEND ISI : procedure TForm1.Button_SendClick(Sender: TObject); begin… Read more »
salam kenal, pak. terima kasih sudah berkunjung kesini. Sepengetahuan saya CMS Error adalah indikasi error yang disebabkan oleh ME (Mobile Equipment). Kode untuk CMS error ada banyak, mulai dari angka 1 s/d 512. Untuk kode CMS Error ; 500, berdasarkan datasheet adalah unknown error, tapi berdasarkan pengalaman saya, biasanya karena pulsa tidak mencukupi atau modem perlu di plug out-plug in (reset hardware). Demikian semoga membantu. Insya Allah akan saya posting artikel tersendiri untuk membahas CMS/CME Error. (bisa dibaca disini http://saptaji.com/2011/11/13/arti-error-code-pada-at-command/ )
setelah nyobain program d atas.kq ada tulisn [fatal error] could not create output file ‘C:\program files (x86)\ Borland\Delphi7\Project\Project1.exe ?
bagaimana mengatasi permasalahan tersebut? tolong mas berikan solusinya? makasih..
Coba antivirusnya di-disable atau project-nya di save as dg nama lain
kalo d wavecom apa listing at command.nya sma yg d atas y pak? mohon pencerahanya…makasih
secara umum sama mas
mas, kok saya g bisa programnya ketika menerima sms modem saya baudratenya 921600
baudrate modem dan baudrate comport harus disamakan dulu
mas, saya coba kok tidak bisa musuk ke memo ya? mohon pencerahan dong
coba cek event onRxChar milik komponen comport mas. Isikan sesuai contoh di artikel di atas
Salam kenal pak,
saya ingin membuat aplikasi RFID Reader dengan menggunakan delphi, saya sudah coba ikuti langkah2 pada artikel di atas, saat project di running, tidak ada respon/data yang masuk ke dalam komponen memo. Kenapa ya pak kalo gitu? Mohon pencerahannya. Sebagai info device yang saya gunakan adalah untuk membaca RFID adalah R202EM. Terima kasih.
rfid readernya pake usb ya? Pastikan memo nya adalah window yang aktif saat nge-tap kartu rfid-nya ya
iya pak RFID Reader Writernya menggunakan USB. Sudah saya pastikan pak window yang aktif adalah aplikasi yang saya buat, tetapi tetap sama saja. Apakah harus ada command yang dikirim agar device dapat membaca RFID nya ?
Sebenarnya ada aplikasi bawaan device yang membaca RFID ketika tombol “Read” diklik, tetapi karena hasil data yang dibaca tidak sesuai maka saya mencoba untuk membuat project baru agar pembacaan datanya benar. Mungkin ada saran. Terima kasih.
bukan aplikasinya ya, tapi kotak memonya adalah window yang aktif, cirinya coba tanpa menyentuh kotak memo coba ketik sembarang karakter dengan keyboard, kalo muncul karakternya berarti saat itu memo adalah window yang aktif