Pembukaan
Bagi yang sering kirim-kiriman SMS, kalo cuma mengandalkan kapasitas penyimpanan dalam handset (handphone), suatu saat pasti pernah mengalami penuhnya inbox. Hal tersebut berlaku untuk jenis manusia yang sayang untuk menghapus SMS kiriman dari someone special. Tapi tidak berlaku untuk jenis manusia yang suka menulis ulang isi SMS ke dalam MS-Word (aku pernah menemukan manusia jenis ini)., sehingga Inboxnya tidak pernah penuh.
Jika anda ingin mengandalkan PC untuk menyimpan isi inbox, anda dapat menggunakan banyak aplikasi siap pakai yang dapat digunakan untuk menyimpan atau mentransfer SMS. Saya sering menggunakan aplikasi bawaan dari vendor HP (PC Suite untuk Nokia, Data Suite untuk Siemens, ada juga untuk SonyEricsson), juga ada Logo Manager buatan pihak ketiga.
Selain menggunakan aplikasi siap pakai tersebut, kali ini saya membahas bagaimana cara berkomunikasi langsung dengan HP, menggunakan AT-Command, lewat port serial.
Format PDU
Hal pertama yang saya bahas adalah, bahwa setiap pengiriman SMS, baik dari HP menuju operator, atau sebaliknya, selalu menggunakan format PDU (Protocol Data Unit), yaitu paket data dimana pesan SMS dikemas, bersama informasi tanggal, nomor tujuan, nomor pengirim, nomor operator, jenis skema SMS, masa valid SMS, dan beberapa hal lain (tergantung jenis paketnya).
Berikut ini adalah contoh PDU yang diterima oleh HP (New SMS atau Inbox):
07 91 2658050000F0 04 0C 91 265836164900 00 00 506020 31133180 04 C830FB0D
Dengan keterangan sebagai berikut:
Oktet / Digit Hexa | Keterangan |
---|---|
07 | Panjang atau jumlah pasangan digit dari nomor SMSC (service number) yang digunakan, dalam hal ini adalah 7 pasangan (14 digit berikutnya) |
91 | Jenis nomor SMSC. Angka 91 menandakan format nomor internasional (misal +6281xxx). Untuk 081xxx menggunakan angka 81. |
2658050000F0 | Nomor SMSC yang digunakan. Karena jumlah digit nomor SMS adalah ganjil, maka digit paling belakang dipasangkan dengan huruf F. Kalau diterjemahkan, nomor SMSC yang digunakan adalah +62855000000 (IM3) |
04 | Oktet pertama untuk pesan SMS yang diterima |
0B | Panjang digit dari nomor pengirim (0C hex = 12 desimal) |
91 | Jenis nomor pengirim (sama dengan jenis nomor SMSC) |
265836164900 | Nomor pengirim SMS, yang jika diterjemahkan adalah +628563619400 |
00 | Pengenal protokol, dalam hal ini adalah 0 |
00 | Skema pengkodean SMS, juga bernilai 0 |
506020 311331 80 | Waktu pengiriman, yang berarti 05-06-02 (2 Juni 2005), dan jam 13:31:13. Sedangkan 80 adalah Timezone yang digunakan. |
04 | Panjang dari pesan SMS, dalam hal ini adalah 4 huruf (dalam mode 7 bit). |
C830FB0D | Pesan SMS dalam mode 7 bit. Jika diterjemahkan kedalam 8 bit, lalu dirubah ke ASCII, maka didapat pesan 'Halo' |
Yah,
itu adalah sekilas tentang PDU, yang sering dihadapi untuk berurusan dengan SMS.
Kecuali jika HP yang anda gunakan mendukung AT+CMGF=1, yang berarti kita dapat
berkomunikasi dengan HP dalam Mode Teks! seperti HP saya, SE T610 :-)
Kalau menggunakan mode teks, anda tidak berurusan dengan PDU, meski antara HP
dengan operator masih menggunakan PDU.
Secara online, anda dapat menerjemahkan PDU kedalam mode teks, dengan menggunakan link ini: http://home.student.utwente.nl/
Koneksi ke PC
Selanjutnya, adalah menghubungkan HP anda dengan PC. Banyak alternatif untuk itu, diantaranya:
Yang sangat perlu diperhatikan, jika anda menggunakan kabel data sebagai alat koneksi, silakan lakukan di Windows 98, karena Direct Port Programming di Windows XP/2000 sangat rumit, dan tidak menjamin kebenarannya :-)
Anda boleh menggunakan HP jenis apapun, yang penting punya kabel datanya, dan
musti support AT-Command.
Dulu saya sempat debat sama temen saya, tentang apakah semua HP
support AT-Command. Sampai saat ini saya masih percaya kalau ada HP yang tidak
support AT-Command.
HP yang saya gunakan adalah Siemens C35i, dengan kabel data serial hasil pinjaman :-)
Setelah punya HP dan kabelnya, silakan pasang ditempat yang seharusnya, dan pastikan HP dalam keadaan nyala.
Jika anda menggunakan IrDA atau Bluetooth, pastikan bahwa sudah tercipta port COM (biasanya dengan nomor tertinggi, misal COM4 atau COM5).
Programming
Silakan buka Borland Delphi. Saya sarankan untuk memakai Delphi versi 6 ke atas, karena ada fungsi SecondsBetween yang saya sukai :-)
Ketika pertama kali masuk delphi, ada 1 komponen yang mesti kita install terlebih dahulu, yaitu MS-Comm, yang digunakan untuk berkomunikasi dengan Port COM. Cara instalasi adalah sebagai berikut:
Setelah Active-X terinstall, pada Tab Palette Active-X, akan muncul sebuah tombol dengan gambar telepon. Klik dan letakkan komponen tersebut pada Form, maka akan tercipta sebuah obyek dengan nama MSComm1.
Komunikasi
Buat sebuah tombol (Command Button) pada Form, beri caption 'Konek'. Lalu pada event On-Click tombol tersebut, ketik program berikut ini:
procedure TForm1.Button1Click(Sender: TObject); var waktu: tDateTime; buffer: string; konek: boolean; begin if MSComm1.PortOpen then MSComm1.PortOpen := false; MSComm1.CommPort := 1; // isi dengan nomor COM // yang terhubung ke HP, // misal COM1, isi dengan 1 MSComm1.Settings := '19200,N,8,1'; // sesuaikan baudrate // dengan HP anda. // kebanyakan support 19200 MSComm1.InputLen := 0; MSComm1.PortOpen := true; Sleep(800); waktu := now; repeat MSComm1.Output := 'ATE1'#13; buffer := ''; repeat buffer := buffer + MSComm1.Input; until (Pos('OK', buffer) > 0) or (Pos('ERROR', buffer) > 0) or (secondsbetween(waktu, now) > 10); until (Pos('OK', buffer) > 0) or (secondsbetween(waktu, now) > 10); Konek := (Pos('OK', buffer) > 0); If Konek Then MessageDlg('Sukses konek ke HP', mtInformation, [mbOk], 0) else MessageDlg('Tidak dapat konek ke HP', mtError, [mbOk], 0); end;
Jalankan program, semoga tidak error. Lalu tekan tombol Button1. Jika koneksi sukses, yaitu jika HP merespon perintah 'ATE1' dengan ucapan 'OK', berarti koneksi dengan HP telah berhasil. Jika tidak, mungkin terjadi kekeliruan pada kabel, nomor Port atau setting BaudRate. Silakan dicek.
Membaca SMS
Berikutnya adalah membaca SMS.
Silakan tambahkan obyek Memo pada form, dan tambahkan tombol Button2, kemudian tuliskan kode ini pada event OnClick Button2:
procedure TForm1.Button2Click(Sender: TObject); var waktu: tDateTime; buffer: string; begin MSComm1.Output := 'AT+CMGL=1' + #13; Sleep(500); waktu := now; repeat buffer := MSComm1.Input; Memo1.Text := Memo1.Text + buffer; until (pos(sOK, s) > 0) or (pos(sERROR, s) > 0) or (SecondsBetween(waktu,now) > 180); end;
Jika program dijalankan, lalu ditekan tombol Button2, maka program akan mengirim perintah AT+CMGL=1 ke HP, yang berarti, 'berikan aku daftar SMS yang ada di Inbox'. Sehingga nantinya semua isi Inbox akan dikirimkan ke program, tetapi masih dalam format PDU.
Untuk menterjemahkan dari PDU menjadi teks, diperlukan rutin lagi. Silakan download source baca SMS, yang merupakan unit untuk membaca SMS
Silakan gunakan unit tersebut pada aplikasi anda ini, lalu buat tombol Button3. Pada event OnClick Button3, tulis program singkat ini:
procedure TForm1.Button3Click(Sender: TObject); begin CekSMS(Memo1); end;
Ketika tombol Button3 ditekan, maka SMS dalam Inbox dan SMS baru, akan dimasukkan kedalam Memo1.
Berikut ini ketentuan AT+CMGL,
Daftar lengkap perintah AT-Command dapat diperoleh disini: namun kadang ada HP yang tidak support AT-Command tertentu.
Penutup
Artikel cara pengiriman SMS dapat dilihat di Mengirim SMS dari PC.
Silakan kirim kritikan, saran atau pertanyaan ke aryo.sanjaya@gmail.com, terima kasih.
(Aryo Sanjaya)
Halo juga fren Yang penting punya target dulu, bidang apa yang ingin di bahas. Apakah berupa pembangunan aplikasi, desain sistem, atau berupa hardware? Kalo hardware, hmm... bukan karena kita sedang ada di artikel SMS, tapi sampai saat ini lahan yang dapat diambil dari SMS masih sangat banyak. Asal dapat menentukan bidang yang bermanfaat. Ide: bikin sensor pada tandon air yang otomatis ngirim SMS kalo levelnya udah minimal. Hmm... lugu banget gitu loh
pak, saya mo minta tolong dijelaskan bagaimana sih cara kita mengkoneksikan hp ke pc.contoh kasusnya kan kalo terjadi bombmail mungkin hp akan error. maka itu dihubungkanlah ke pc agar bisa menampungnya.yang saya tanyakan dengan apa kita bisa membuat itu? tolong saya dikirimkan artikelnya, kalo bisa dengan program apa saya bisa membuat itu beserta listing program. sebelum dan sesudahnya saya ucapkan terima kasih. mudah2an ilmu dari bapak berguna untuk saya
Halo Renal, Aku gak pernah tau (ngalami) kasus smsbomb (bukan mailbomb kan?), tapi sesuai namanya, sms yang diterima pasti puluhan, bahkan ratusan kan. Sesuai ide kamu, kalo SMS ditampung di PC, itu berarti PC secara terus-menerus melakukan pengecekan terhadap HP. Ini saja akan menguras resource komputer. Belum lagi, SMS yang untuk dibaca oleh PC, kan tetap harus ditampung di HP dulu, sedangkan menurutmu, kalo jumlahnya banyak, akan membuat HP error. Kalo HP error, gimana bisa dibaca SMS itu oleh PC? Hmm, kok aku malah pesimis Ok deh, tetap semangat. Cara koneksikan HP dengan PC sangat beragam, tergantung HP yang kita punya. Infrared, Bluetooth dan kabel data adalah pilihan yang paling umum digunakan. Pilih saja mana yang cocok buat HP kita, dan dompet kita juga Kalo sudah konek, lalu pilih software untuk baca/tulis SMS. Ingat, tidak harus bikin sendiri. Karena selama ini banyak yang mengira kalo cara baca/tulis SMS harus bikin sendiri. Aku aja pake software bawaan HP-ku untuk baca/tulis SMS Di internet banyak bertebaran software untuk itu. Misalnya Oxygen Phone Manager, Nokia PC Suite, Siemens Mobile Phone Manager/Data Suite, Logo Manager, SMS.ME, NowSMS, dan banyak lagi. Search aja di Google Ada yang gratis, tapi kebanyakan berbayar Ambil dari situs vendor HP kamu aja. Eh iya, HP kamu apa sih?
ini sudah saya coba tapi kok masih belum bisa nih.. saat kirim at+cmgl=1 hasil inputnya error,gmn ya baiknya pak aryo? thank u sebelumnya
Halo Michael, Perintah AT+CMGL=1 hampir tidak pernah mengembalikan error. Meski tidak ada SMS-pun, dia tetep ngembalikan OK. Yang perlu diyakinkan, perintah itu kamu jalankan pada mode PDU, karena jika pada mode text, cara membaca SMS pake AT+CMGL="REC READ" Sebelum menjalankan AT+CMGL=1 lakukan dulu AT+CMGF=0 (mengembalikan mode ke PDU)
ternyata masalahnya saya pake hp cdma bukan gsm pak aryo, setelah saya cari2 di internet emang cdma kalo pake at+cmgl langsung error tapi setelah saya pake gsm langsung ok, tapi sekarang saya kesulitan baca pdu nya, sebab saya bikin programnya pake vb, but kalo gak ada ya mau gak mau saya harus translate ke vb.. thank u for your information
oh ya satu lagi yang saya mau tanyakan, kok ada sms yang terlewatkan ya pak??? ini hasil pdu dr program saya AT+CMGL=1 +CMGL: 1,1,,150 069126180100000407D0381C4C0600006020420261048297C1E814140C1FF36D90B12C96D14049B1BB0E0A8AC5E139481ED681A66131390C9286E77536680D278382F37C58AD0605C56450349C9EEB40D3F2BCEE3E9FEB68773E0C0A93C32019085E9687DDE7701A040F93C3ED3A287F0691D3F3FA3A9C0605D9EC309A05CA87D3F4BA0E342CCBC9E935081E7693C3691039EC06A1C3F4B40C846AA600 +CMGL: 2,1,,150 069126180100000407D0381C4C0600006020521104918297C1E814140C1FF36D90B12C96D54041711D84ACCBC36979180D928775A069584C0E839C61715A076AA6DBF034284DAF8366A076781C6EEB40315733DD86A741E2707A0D12CBE9A073B92D4ECBC320B21C1464B3C36890CCD54CB7E169D0BC4C4EA3416439689E2FD3C36ED0CCD54CB7E16910590E0ABBCF61B70C342FBBC969791A846AA600 +CMGL: 4,1,,21 07912618010000F0060304815945000000000000000000000000000020 nah yang no 3 kok gak ada ya?? terus 4,1,,21 ; 2,1,,150 ini maksudnya apa ya pak??thank's sebelumnya pak aryo
Halo Michael, Wah, berarti saya salah jawab dong, soale langsung berasumsi kalo kamu sebelumnya pake GSM Ok, nope, aku juga masih belum bisa nyoba untuk yang CDMA. Mengenai SMS terlewatkan, itu kebetulan saja. Setiap SMS ditampung pada lokasi (index) memori tersendiri, baik itu Inbox atau Sent atau Draft. Jadi misalnya index ke-3 sudah ditempati oleh SMS Draft misalnya, maka SMS Inbox tidak akan bisa menempati lokasi index 3. Karena kamu melakukan AT+CMGL=1, maka hanya SMS Inbox yang diberikan, yang kebetulan berada pada index 1, 2 dan 4. Arti dari nilai kembalian adalah: +CMGL:
, , , berarti posisi SMS dalam memori kalo 1 Inbox, 2 Draft, 3 Sent kurang tau, ga pernah pake. mungkin huruf awal SMS. PDU Itu kalo kita dalam mode PDU (AT+CMGF=0), kalo dalam mode teks, nilai kembaliane berbeda. Silakan dicoba deh
saya sekarang dalam penyelesaian tugas akhir saya jurusan teknik komp, saya ndak terlalu mengerti ttg pemrograman. kalo ada yang bisa bantu, tolong dong. bahan untuk laporan adalah kontrol Pc menggunakan Hp (On/Off Pc dengan Hp) atau ada program yang bisa digunakan. sekali lagi tolong.....Plz.
Halo Juhardi, Kalo untuk Off PC, kamu bisa memanfaatkan aplikasi di artikel ini: http://www.bengkelprogram.com/data-artikel-249.0.bps Misalnya jika ada teks SMS dengan isi 'SHUTDOWN', maka aplikasi akan memanggil fungsi Shutdown Komputer. Masalahnya adalah, gimana cara ngidupkan PC lewat SMS? Sedangkan aplikasinya ga jalan. Mungkin kamu butuh memanfaatkan rangkaian mikrokontroller, yang mengkontrol SMS yang masuk ketika PC sedang mati. Kalo ada SMS dengan isi 'HIDUPKAN' maka PC diswitch ON. Silakan kunjungi link berikut ini: http://www.wrankl.de/SMST4PIC/SMST4PIC.html http://www.riccibitti.com/tinyplanet/tiny_article.htm Sulitnya, kamu masih belum terbiasa programming. Karena itu, biasakan sejak sekarang :D
» Mengirim SMS dari PC (208)Kompilasi beberapa unit yang digunakan untuk mengirim dan membaca SMS, dan menampilkan informasi handphone
Jika sebelumnya sudah dibahas cara membaca SMS lewat PC, belum lengkap rasanya kalau tidak dibahas tentang proses pengiriman SMS lewat PC.