Cara Mengirim SMS dengan Delphi

Untuk mengirim SMS menggunakan bahasa pemrograman Delphi, modem Anda harus support AT command. Instal dulu software / driver bawaan modem (biasanya auto install) dan pastikan driver modem tersebut menciptakan COM port (serial port) virtual. Untuk melihat virtual port yang tercipta, silahkan lihat di device manager. Jika Anda menggunakan Windows XP maka menunya adalah sebagai berikut : Start | My Computer (klik kanan) | Manage | Device Manager | Port (COM & LPT). Nah di sana akan muncul port-port (serial atau parallel) yang sedang attach di computer Anda. Untuk mengirim SMS lewat modem, gunakan COM Port yang ada tulisannya ‘NMEA’ – nya (contoh di laptop saya adalah COM 33.

Langkah kedua adalah menginstal komponen Delphi ‘CPort’ (bisa Anda baca tutorialnya dan download di tulisan saya sebelumnya).  Setelah  berhasil menginstal komponen CPort, Delphi kini telah siap untuk mengirim SMS. Saya anggap Anda sudah bisa menggunakan IDE (Integrated Development Environment) Delphi, sudah bisa ‘menarik’ komponen ke form Delphi, meng’compile’ dan me-‘run’ program. Jika belum familiar dengan Delphi, Anda bisa googling dulu di internet dan mencari tutorialnya.

Program Sederhana Kirim SMS

Buat satu project dan simpan dengan nama sesuai keinginan Anda. Misal ‘SMSkirim.dpr’. Klik komponen ComPort1 di tab component pallete  ‘CPortLib’, ke dalam form kerja. Setelah itu ‘tarik’ komponen kotak edit 2 buah, komponen ‘label’ 2 buah dan ‘button’ 3 buah, atur seperti contoh pada gambar di bawah.

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

procedure TForm1.Button2Click(Sender: TObject);

begin

comport1.ShowSetupDialog;  // isi ini aja

end;

Maksud dari baris program comport1.ShowSetupDialog; adalah untuk menampilkan kotak setup dialog, hingga Anda bisa mengatur konfigurasi modem secara run time (nomor COM port, baud rate, bit parity, star/stop bit dll). Tekan tombol F9 untuk menjalankan (Run) program dan coba klik tombol ‘Setting modem’, maka akan muncul kotak dialog untuk mengatur settingan modem.  Kemudian atur supaya Port berisi COM port modem (contoh dalam laptop saya adalah COM33), dan klik tombol ‘OK’. Untuk settingan yang lain gunakan settingan default saja.

Setelah selesai melakukan konfigurasi, modem masih harus diinisialisasi dan ‘dibuka’ koneksinya melalui COM port virtual. Untuk melakukannya klik ganda pada tombol ‘Open’ dan isikan baris program sebagai berikut:

procedure TForm1.Button3Click(Sender: TObject);

begin

if ComPort1.Connected then

begin

ComPort1.Close;

button3.Caption:=’Open';

end

else

begin

ComPort1.Open;

button3.Caption:=’Close';

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

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

end;

end;

Untuk membuka atau menutup koneksi dengan modem dapat digunakan perintah ComPort1.Open; atau ComPort1.Close; . Sedangkan untuk menginisialisasi modem untuk keperluan SMS adalah baris perintah

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

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

Perintah  ComPort1.WriteStr(‘at+cmgf=1’+#13#10); adalah untuk mengirim AT command ‘AT+CMGF=1’ ke modem. Arti perintah ini adalah untuk mengeset modem agar berada di mode teks, jadi proses kirim (dan terima) SMS akan berlangsung dalam mode teks (semua karakter akan berbentuk karakter ASCII alfanumerik  dan kita juga bisa membacanya). Berbeda jika jika ‘AT+CMGF=0’, jika kita memberikan command ini, maka modem akan berada di mode PDU (Packet Data Unit), sehingga semua karakter SMS harus dikirim menggunakan format PDU (dalam bentuk angka dan harus mengikuti format PDU).  Saya sendiri lebih menyukai mode teks karena selain lebih mudah pemrogramannya juga lebih mudah men-trace program jika terjadi crash.

Sedangkan perintah ComPort1.WriteStr(‘at+cscs=”GSM”‘+#13#10); adalah untuk memerintahkan modem agar menggunakan karakter set ‘GSM’, yakni karakter alfanumerik standar seperti yang kita gunakan sehari – hari. Pada beberapa modem karakter set ‘GSM’ sudah merupakan settingan default.  Oya, pastikan agar software bawaan modem Anda matikan dulu supaya tidak terjadi konflik saat mengakses COM Port modem.

Langkah terakhir dan inti dari program sederhana ini adalah mengisikan baris program sebagai berikut ke tombol ‘Send SMS’. Klik ganda tombolnya dan isikan beberapa baris program berikut:

procedure TForm1.Button1Click(Sender: TObject);

begin

ComPort1.WriteStr(‘at+cmgs=”‘+edit2.text+'”‘+#13#10);

ComPort1.WriteStr(edit1.text);

ComPort1.WriteStr(#26);

end;

Maksud dari baris program di atas adalah sebagai berikut :

ComPort1.WriteStr(‘at+cmgs=”‘+edit2.text+'”‘+#13#10);  -> mengambil data nomor handphone tujuan di kotak edit2 dan mengirimnya ke modem melalui perintah ‘AT+CMGS=”no tujuan” ‘. Karakter ‘#13#10’ adalah kode ASCII untuk tombol ‘Enter’ (CR LF). Jadi seakan – akan Anda melakukan penenkan tombol enter secara otomatis di sini.

ComPort1.WriteStr(edit1.text); -> menuliskan isi SMS dan mengirimnya ke modem

ComPort1.WriteStr(#26); -> mengirim karakter ASCII untuk CTRL-Z ke modem sebagai penanda berakhirnya penulisan isi SMS.

Silahkan Anda ‘RUN’ program yang telah Anda buat tadi, kemudian coba untuk mengirim SMS setelah melakukan konfigurasi dan inisialisasi modem. Jika butuh bantuan Anda dapat menghubungi saya di YM: ajiew atau email ajie@saptaji.com

Bersambung ke tulisan berikutnya : Cara Menerima SMS dengan Delphi

Incoming search terms:

listing ascii tombol tabe delphi, cara melakukan penyusunan modem vodafone di laptop untuk mengirim sms, membuat software serial hyperterminal di delphi, send sms with cport delphi, mengirim sms massal at command delphi, mengirim dan menerima sms delphi, mengapa smpp memakai format PDU dan jelaskan yang dimaksud dengan format PDU, cara mengirim sms ke email delphi, cara membuat software sms masking di delphi7, Konfigurasi delphi yang error pada kita run

ajie

Hai. Saya suka menulis tentang hal-hal yang berbau teknologi. Kompetensi saya di pemrograman Delphi, Android dan Arduino. Menerima jasa project elektronika dan pembuatan software berbasis Delphi, Arduino atau Android

145 thoughts on “Cara Mengirim SMS dengan Delphi

  1. bagi pengunjung lain yang mencoba aplikasi ini mohon untuk diperiksa setting bauderate modem anda dan pastikan modem tidak terhubung dengan program terminal lain seperti hyperterminal, teraterm dll bsa crash komunikasix.
    mkasi buat pak ajie atas artikel dan ilmunya dYM.

  2. mas ajie salam kenal..
    artikelnya siiiippp banget, bermanfaat buat saya yg msh newbi
    terus berkarya dan sukses selalu mas…

  3. mas… component CPORT sama source code nya gak bisa di donlod tuh,,,
    boleh donk mas kasi link nya,,, soalnya tulisan “DISINI” nya gak ti hypelink mas, hehehe…
    btw, thanks ya mas ajie…

  4. Gan, Mohon di posting mengenai AT Command untuk USSD, saya merasa kesulitan membuat program pake delphi untuk mengecek pulsa simpati. misalnya saya masukkan at+CUSD=1,”*888#” OK dan tidak keluar hasilnya… kan seharusnya keluar berapa sisa pulsa yang ada. mohon pencerahannya… Thx

  5. mas mau bertannya..tentang cara menggunakan komponen TComport..pada delphi..
    saya akan mengrim data berupa bit..melalui USB to serial yang terhubung ke beberapa IC baru masuk ke relay…nantinya Data bit yang dikirm dari komputer menggunakan program sederhanan..data bit tersebut akan memutuskan Relay tersebut..kiranya dapat membantu saya atau coding untuk cara menggunakan Tcomport mengrim data dan menerima data…help ya mas

    • Data serial yg keluar di port COM tipenya asynchronous, jd perlu penerjemah di sisi target. Biasanya sih pake mikrokontroller mas. Habis itu tinggal mikronya yg mengubah data serial mjd parallel. Kalo delphi/comport nya sih, kirim data string aja kyk biasanya. Kalo pgn mencoba krm data lwt port serial bs menggunakan soft 7G terminal

      • mas saya membuat sofwere sperti battery status pada leptop..jadi nantinya status battery percentnya yang akan menjadi patokan untuk ukuran jika 100% battery full maka relay akan of dan sebaliknya ketika 10% maka relay akan On?
        alat ud stenby mas tinggal cara bagaimana saya putuskan relay tersebut atau mengirim data bit..saya tidak pake IC suntik mas..sperti ATmega ..saya menggunakan alat usb to serial RS232 + ic max232 + ic hdls164 + relay…
        alatku terhubung dengan charger mas….jadi alatku yang menjadi pebatsan arus listrik dc Charger tersebut….mas kira2 codingnya sperti apa ya…klo kita menggunakan component Tcomport? contoh coding via RTS 232 atau via comenline 232

        • yg anda maksud hdls164 itu shift register serial in parallel out, bukan. Kalo benar itu berarti memang nggak bisa buat menerjemahkan data serial yg keluar dr port serial. LS164 bekerja pd mode serial synchronous (membutuhkan clock sinkronisasi), sedangkan port serial (COM) komputer menggunakan mode asynchronous (tanpa clock sinkronisasi). sepertinya memang harus ada mikrokontroller utk project Anda. Kalo ngirim data serial lewat tcomport dg bhs delphi cukup dg comport1.writestr(‘datanya’);

  6. mas Adjie mau tanya kenapa setiap saya coba kirim sms ke beberapa nomor hape, pasti ada beberapa yang tidak terkirim, kalau hanya 1-1 sieh bisa mas ?

    Mohon tuntunannya

  7. dalam interface diatas anda memakai modem apa? apakah modem huawei e173 support untuk atcommand mengirim sms? trims

  8. articlenya bagus bget mas, T.O.P dah. clo article comport untuk menyalakan dan mematikan led memakai paralel port ada gak mas? makasih ya mas atas share ilmunya, smoga yang kuasa membalas kabaikan mas.

  9. saya coba iktin artikel yang diatas untuk kirim sms kok ngak bisa ya. saat saya tekan send seperti ngak ada respon, saya pakai mode e1153

  10. mas,sya udh ikutin semua perintah di atas tapi ketika di klik send,hasilnya tidak terkirim ke no tujuan, ,
    apa modemnya tidak support,karena di ports nya hanya ada 3g wireless-application interface (com13),3g wireless-diagnotic interface (com14), 3g wireless-PC UI interface (com15) tidak ada com port yang tulisannya NMEA. .
    sya menggunakan modem advan dt-8. .
    mohon pencerahannya. .
    terima kasih mas. .

    • coba pakai COM15 (PC UI Interface), kalo masih ga bisa coba cari COM Port di dalam Device Manager | Modem (di tab ‘Modem’ setelah jendela properties modem terbuka)

  11. Mas Aji, begitu kirim SMS karena karakternya banyak jadi error bagaimana mengatasinya ? mohon pencerahan & terima kasih sebelum nya…..

  12. Error nya ada yaitu 305 (Parameter Mode Teks invalid), tapi cara memperbaikinya blm tahu…..mohon bantuannya,terima kasih sebelumnya.

    • kemungkinan modemnya tidak support mode teks. Coba cek dengan command at+cmgf=? kalo hasilnya ada angka 1 berarti support mode text, tp kalo hanya ada angka 0 berarti hanya support mode PDU. Solusinya semua perintah dikonversi ke sintaks PDU atau ganti modem yg support mode teks.

      • Mas Ajie maap jadi banyak nanya, maklum gaptek tapi pingin bisa, sudah saya coba tulis di 3G at+cmgf=? hasilnya 0 dan 1 tapi pas saya coba yg bisa di kirim sms yg karakternya kurang dari 166 karakter. Bagaimana bila pingin lebih dari 255 karakter kalau dikonversi ke sintaks PDU maksudnya gimana yah. terima kasih. Wassalam

        • oiya, hrs pake mode pdu utk kirim long sms. PDU=Packet Data Unit, settingannya at+cmgf=0. Kalo at+cmgf=1 adl settingan mode teks

          • Mas mohon bisa share cara konv text ke PDU, dan kalau kita kirim format PDU nanti SMS yg keterima di HP yg dituju apakan masih format PDU ? saya perlu sekali untuk kirim sms lebih dari 250 karakter. Terima kasih.

          • mas coba cari fungction text2pdu di internet, ntar tinggal panggil function tsb kalau mau konversi dr teks ke pdu

  13. Alhamdulillah mas ajie,,sya coba tidak ada error,.tpi kq sms tidak terkirim z??
    pa d modemnya itu untuk settingnya disesuaikan dengan sim card nya?masalahnya untuk modem yg sy pakai ini telkom flash tipe SU-8600U, dan settingan untuk sim card nya masih manual ..
    terima kasih,

      • kalo ada balasan dr modem +CMGS=xx berarti terkirim, kalo ada ERROR berarti gagal. Tinggal di create aja satu kolom buat status sms berdasarkan respon modem td

  14. mas ajie ….tandanya terkirim dan tidak nya sms ada tidak?
    ni saya sudah mencoba 2 kali pakai 2 sim card yang berbeda koq tetep tidak bisa terkirim .
    pa modemnya harus diconectkan dulu dengan internet?

  15. mas ajie..ni tanda terkirim dan tidaknya sms gimna?saya sudah coba dan tidak ada error,tapi sms nya kq tidak terkirim ke nmor tujuan z…apa masalahnya mas?

  16. Maaf mas ajie, mau nanya…, apa sistem kirim sms nya bisa dibuat kirim otomatis tdk mas? dan jika bisa bagian dari coding mas diatas yg mana yg harus d rubah atau ditambah mas? :)

  17. Kalau mau kirim sms lebih dari 160 karakter selain kita potong manual apakah bisa langsung dari cport nya? (maksud nya apakah ada event nya untuk itu?)

  18. wieh … sip mas udah berhasil ngirim smsnya
    cuma koq mesti harus 2 percobaan tekan tombol sendnya ya
    apa emang seperti itu ato sy salah ngetik codingnya ya?
    ini codung yg sy ketik

    procedure TForm1.BtOpenClick(Sender: TObject);
    begin
    if ComPort1.Connected then

    begin

    ComPort1.Close;

    BtOpen.Caption:=’Open';

    end

    else

    begin
    ComPort1.Open;
    BtOpen.Caption:=’Close';
    ComPort1.WriteStr(‘at+cmgf=1’+#13#10);
    ComPort1.WriteStr(‘at+cscs=”GSM”‘+#13#10);
    end;

    end;

    procedure TForm1.BtSendClick(Sender: TObject);
    begin
    try
    begin

    ComPort1.WriteStr(‘at+cmgs=”‘+edit1.text+'”‘+#13#10);

    ComPort1.WriteStr(memo1.text);

    ComPort1.WriteStr(#26);
    end;
    finally
    memo2.Lines.Add(‘send sms’);
    end;

    end;

  19. oya mas bisa tidak tulisan yg terkirim ke no tujuannya itu hanya messagenya aja, bisa tidak mas? jadi tulisan at+cmgs=”no tujuan” ga usah ikut terkirim di layar pesan no tujuannya….

  20. mas kenapa waktu kirim sms ada sms yang isi pesannya kosong dilayar hp penerima? sy buat debug di event OnRxChar yg menyimpan setiap interaksi cport ke memo
    nah kalo liat tanda2 dari log memonya, isi teksnya yang berhasil ke kirim (muncul di layar hp penerima) itu muncul tanda > setelah tombol send di tekan
    tolong dong beritahu bagaimana caranya supaya waktu pengiriman sms isi teks selalu terkirim ( tidak kosong ) dan lebih stabil ( muncul tanda > setelah tombol send ditekan. plz ya

  21. sudah ku coba pak, tapi gak berhasil, di Run bisa tapi SMS nya gak nyampe nyampe. boleh tw knapa ya pak?
    apa kerana modemnya CDMA ya?
    tapi dah kucoba ganti GSM jadi CDMA

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

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

  22. Mas,
    Aku baca buku mas Ajie ttg SMS Gateway Delphi, dan kalo mas masih inget duluuuuuu kita pernah bahas ttg baca sms panjang via whatsapp. saya dah coba tapi gagal mas, bisa tolongin saya mas??? soale di buku mas ajie tsb cuma ada kirim smsnya, nggak dibahas masalah baca smsnya

  23. mas aji, saya install componen Cport dan berhasil, tapi setelah saya coba ternyata di run error, ini mas command error nya, [Fatal Error] Unit1.pas(7): File not found: ‘CPort.dcu’, mohon pencerahanya mas. thnks

  24. mas, link cport sudah tiada,,
    bisa tolong untuk uploadkan ulang ?
    terima kasih

    artikelnya sangat membantu saya
    terima kasih banyak

  25. Mas mau tanya neh…, kalau kita membuat aplikasi sms menggunakan delphi apa bisa “Masking ID Sender”…? Kalau pun bisa ada nggak komponennya..? atau ada AT-Command khusus untuk itu..? mohon penjelasannya. Terima Kasih.

  26. Kalo membuat tanda bahwa modem sudah terkoneksi?? ya.. seperti membuat status connected atau seperti tanda signal, atau tanda kedipan agar meyakinkan kita bahwa modem tersebut sudah terhubung ke operator, caranya gimana ya…??

  27. mas sy mau nanya,kenapa waktu saya coba send terjadi error mas (‘Port Not open’),padahal setting port.x udah bener mas…

    NB :modem yg sy pake tuh vodafone type K3715, trus OS. Win 8…

    apa nggak compatible yah mas delphi7 ma win.8?
    mohon pencerahan.x mas…

    terima kasih

  28. Mas ajie mw tanya..
    gmn coding untuk menfilter sms supaya kalau sms yang dikirim oleh member tidak sesuai dengan isi dari tabel “nopol” tidak tersimpan ke tabel inbox….

    tolong pencerahannya….

  29. mas aji gimana cara kalau kita mw memfilter salah satu filed dari tebel???saya coba pakai script ” if zquery2.recordcount=1 then” tapi malah memfilter seluruh filed yang ada dalam tabel??? mohon pencerahannya….trimakasih

  30. mas source code untuk pengiriman pesan tanpa menginput tanda titik atau koma, setelah sms masuk kepeda penerima sudah ada tanda titik atau koma tersebut? contoh mengetik “tadi” di edit1, mengetik lagi “siang” di edit2, pada saat si penerima menerima sms “tadi.siang” mhon bantuanya,

  31. It is actually a nice and helpful piece of information. I am happy that you simply shared this helpful information with us. Please stay us informed like this. Thank you for sharing. bdbacdkgfeca

  32. kang mau tanyak, boleh ngak?? boleh ya.. pliss…. 😀

    kan aku dah ngikutin cara diatas, waktu tak klik send sms.a… kok kagak masuk sms.a ya kang?? padahal hp juga ada disebelah modem… aku coba diatas modem juga tetep kgak bisa… :p

    pa ada kang script yang buat semacam message box low sms.a terkirim gitu kang?? low ada mohon tuturnya kang…

    untuk setting modem.a pa cuman gitu aja kang??
    low aku lihat yang make gammu kan kayak di identifikasi dulu gamu.a konek gak ma modem.a…

    low yang make comport kyak gini gimana ya kang?? mohon pencerahannya suhu…

    • mungkin settingan modem blm benar. Langkah2 pengecekan :
      1. cek COM port modem lewat Device Manager. Pastikan settingan comport di aplikasi sudah sesuai
      2. Pastikan tidak ada service/apliklasi yg sedang mengakses COM port modem (misalnya software bawaan modem, Gammu, dll)
      3. kalo kirimnya pake hp, pastikan hp-nya support mode teks. Caranya lewat hyperterminal/putty ketik at+cmgf=1, kalo responnya ERROR berarti tdk support mode teks. Kalo pake modem pada umumnya sudah support mode teks semua

  33. tanya lagi dong mas.
    kalau 1 modem dibuat kirim + nerima yang aman gmn ya ?
    soalnya kalau indikator sms dinyalain pas sms masuk dan modem lg proses sms keluar kan error.
    belum lg kena hapus pesan tiap ada sms masuk.

    sementara sih saya akalin pakai timer.
    ada cara yg lebih cepet ?

  34. Mas ajie..bagaimana tips agar sms broadcast/massal bisa sampai semua ke penerima..saya pakai cport dan delphi..maksimal 1x klik untuk brp nomor hp?apa ada batasan atau terserah? dan apa bisa sambil kirim juga terima informasi status terkirim ke nomor massalnya itu..sebelumnya trims…

  35. om…
    nasib saya kayak kebanyakan temen-temen di atas,
    ga ada error, termasuk pas send,
    tapi ga ada sms yang masuk di HP,

    saya yakin semua nya sudah sesuai,
    soalnya saya coba di hyperterminal, itu sms kekirim,
    dengan setingan yang sama,
    tapi pas dipake di delphi,
    entah kenapa ga kekirim,

    mohon pencerahannya,

    • coba cek ini mas :
      yg pertama, pastikan tidak ada aplikasi lain yg sedang mengakses port COM modem. Biasanya software bawaan modem blm benar2 close walaupun sdh dimatikan. Cb cek di task manager atau paling tidak cek di taskbar kanan bawah, msh ada icon-nya atau tidak. Termasuk hyperterminal hrs dimatikan dulu ya

      yg kedua, cek apakah port COM modem sdh benar atau blm.

      Kalo baca dari comment mas di atas, sdh bs pake hyperterminal berarti port com sdh benar, tinggal dicek kemungkinan yg pertama

      Kalo masih blm bisa coba comment lagi mas

Leave a Reply

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

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">