Untuk mengakomodasi masukan dari para rekan, aku menyusun aplikasi dari artikel Mengirim SMS dari PC dan artikel Membaca SMS dari PC, serta sedikit cara untuk mendapatkan informasi
mengenai status HP.
Aplikasi ini dibuat dalam versi Delphi, dan dengan teknik yang sama, sangat
mungkin untuk diporting ke Visual Basic ;)
untuk rekan yang belum terbiasa dengan Delphi, mungkin kapan-kapan akan aku buat
versi VB-nya. Kapan ya...
Ketika aplikasi ini pertama kali dijalankan, dalam keadaan tidak terhubung ke handphone.
Kita diberi kesempatan untuk memilih nomor port yang terhubung dengan handphone.
Setelah memilih nomor port yang benar, kemudian tekan tombol Konek, maka
aplikasi akan berusaha menghubungi HP.
Jika aplikasi sukses terhubung ke HP, maka akan ditampilkan beberapa informasi
mengenai HP tersebut.
Berikut ini adalah informasi tersebut:
Setelah itu, selama program berjalan, indikator dari handphone secara kontinu ditampilkan. Indikator tersebut diambil dengan perintah AT+CIND?
Nilai yang dikembalikan adalah suatu list (rangkaian) yang menandakan
indikator HP. Urutan dan nilai indikator dapat berbeda untuk beberapa merk HP.
Aku sudah nyoba untuk Sony Ericsson T610 dan Siemens CX65. Hasil yang persis
sama adalah pada indikator Battery dan Sinyal, sedangkan indikator yang lain
berbeda posisi.
Karena itu, jika ingin aplikasi kamu berjalan full untuk semua merk HP, maka aplikasi
harus mendeteksi semua nilai yang didukung oleh HP yang digunakan. Informasi mengenai
hal ini dapat dilihat pada command AT+CIND=?
Berikut ini adalah contoh hasil perintah AT+CIND=? pada Siemens CX65:
at+cind=? +CIND: ("battchg",(0-5)),("signal",(0-5)),("service",(0,1)), ("message",(0,1)),("call",(0,1)),("roam",(0,1)), ("smsfull",(0,1)),("call status",(10x-20x)), ("GPRS coverage",(0,1)),("callsetup",(0-3)) OK
Sesuai urutannya, maka item pertama adalah level battery, kedua adalah sinyal,
ketiga adalah kesiapan servis, lalu datangnya SMS baru, terjadinya panggilan (berbicara),
kondisi roaming, sms box penuh, dan seterusnya. Silakan mereferensi ke manual
masing-masing HP untuk lebih jelasnya.
Untuk mendapatkan nilainya, jalankan perintah AT+CIND? (tanpa sama dengan). Berikut ini adalah contohnya:
at+cind? +CIND: 2,2,1,0,0,1,0,0,1,0
Yang didapatkan adalah rangkain nilainya. Nilai yang pertama adalah untuk battery,
yaitu 2 dari skala 0 - 5 (lihat hasil AT+CIND=? di atas). Sinyal pada HP juga 2,
begitu seterusnya.
Informasi tersebut ditampilkan secara terus menerus, dengan interval timer 1000
milisecond (1 detik). Berikut ini adalah contoh tampilan aplikasi:
Level sinyal dan battery ditampilkan dalam bentuk gauge meter, sedangkan indikator call, sms, smsfull ditampilkan dengan gambar pada kotak hijau sebelahnya. Ya, aku akui, gambar indikatornya tidak informatif sama sekali. Karena itulah, program ini aku tempatkan di sini, dipersilakan untuk dimodifikasi :D
Fasilitas aplikasi yang lain adalah SMS Info, untuk membaca SMS dari Inbox (termasuk SMS
baru), sedangkan untuk SMS dalam folder draft dan sent, aplikasi belum mendukung :(
silakan ditambahi, ok.
Page berikutnya adalah fasilitas untuk mengirim SMS. Di sini juga disediakan tombol
untuk menyimpan SMS ke dalam folder draft pada HP.
Kedua fasilitas di atas menggunakan kedua unit yang telah dibahas pada artikel
sebelumnya, namun dengan berbagai perbaikan dari masukan rekan-rekan semua, terutama
Sri. Makasih banget, ok.
Kemudian, yang belum pernah dibahas sebelumnya adalah pembacaan buku kontak.
Untuk memilih memori penyimpanan kontak, apakah menggunakan SIM Card (kode SM), atau
memori handphone (ME), atau keduanya (MT), digunakan perintah AT+CPBS=(SM, ME,
MT). Tidak semua HP mendukung ketiganya, maka dari itu aplikasi mesti bijaksana
memilih :)
untuk mengetahui media yang didukung, pake perintah AT+CPBS=?
Untuk CX65 defaultnya adalah SM, dan gak bisa ME. Untuk amannya, gunakan saja
SM.
Setelah menentukan memori yang dipilih, berikutnya adalah mencari informasi
index (nomor posisi) kontak yang tersedia. Gunakan perintah AT+CPBR=?, maka akan diberikan
index yang tersedia. Contoh pada CX65:
at+cpbr=? +CPBR: (1-250),20,12 OK
Hasil itu menandakan bahwa index yang tersedia adalah 1 - 250. Maka kita perlu membaca (looping) dari 1 sampai 250 untuk mendapatkan keseluruhan kontak. Gunakan perintah AT+CPBR=nomor indexnya untuk membaca tiap-tiap index. Contoh:
at+cpbr=88
+CPBR: 88,"+6281524737470",145,"Rasdi"
OK
Hasil yang diberikan tinggal diparsing dan ditampilkan pada listview.
Untuk mendownload aplikasi dan sourcenya, silakan menuju ke bagian update aplikasi.
Jika ingin menjalankan dari
source-nya, atau melakukan modifikasi program, lebih mudah kalo menggunakan Delphi 6, karena aku membuatnya dari versi itu.
Untuk versi ini, dibutuhkan library XComDrv untuk mengcompile ulang. Silakan download library tersebut
di sini. Extract
pada suatu direktori (misalnya c:\ouxcom), lalu open file *.dpk melalui IDE Delphi, dan klik install.
Kemudin tambahkan path di mana ouxcom tersebut tadi di-extract, kedalam path
library, agar library tersebut dapat bekerja. Masuk menu Tools > Environment
Options > Library > Library path, browse ke c:\ouxcom, lalu tekan add.
Jika diperhatikan, masih banyak fasilitas yang mungkin ditambahkan. Aplikasi
tersebut hanya contoh penerapan perintah AT Command untuk baca dan kirim SMS.
Ok, selamat mencoba.
Halo Lutfi: Cara kerja aplikasi ini agak 'beda', jadi kayaknya gak cocok kalo pake fitur AT CNMI. Fitur itu memang bagus, jika aplikasi mau 'mendengarkan' notify dari modem. Masalahnya, aplikasi ini hanya membaca modem, jika diperlukan saja, sehingga segala notify diabaikan. Rencananya, aplikasi akan mengandalkan AT CIND untuk mengetahui adanya SMS baru, dan akan langsung dipindah ke PC. Tapi karena kendala format field yang berbeda untuk tiap merk HP, jadi agak terhambat. Tapi udah ada titik terang kok, jadi akan segera diimplementasikan :D Sendi: Kalo misalnya driver belum keinstall, mestinya modem itu belum muncul di daftar modem. Sudah coba dilakukan Modem Diagnostic melalui control panel? sukses ga? Btw, aku belum pernah nyoba pake GSM Modem ini, jadi gak bisa komentar terlalu banyak :D Regey dan Deny: Iya, Pak Trubus juga mengalami hal yang sama, juga dengan C35i. Kalo kamu sekarang menggunakan Windows XP, coba gunakan Windows 98, siapa tau itu masalah permissionnya. Windows XP/2000/NT tidak mengijinkan akses langsung ke hardware, harus melalui driver (layer kernel). Atau download drivernya di sini: http://www.vendetta.org/files/userport.zip Selamat mencoba :)
kasusku emang aku rasain sendiri agak aneh, soalnya cerita lengkapnya begini : komputer kantor terinstall windows 2000 server famili, dengan ada software pendukung nowsms, dan software terminal kty, dan juga dilengkapi dengan 2 buah gsm modem, dimana satu modem untuk menerima dan satu modem lagi untuk menjawab sms yang diterima. program penjawab dan penerimanya memakai sistem visual basic, dan besar programnya pun enggak sampai 50kb, hanya 40kb, dan itupun modem gsm bsa menerima dan menjawab setiap sms yang masuk. ketika aku disuruh perusahaan untuk mengembangkan program penerimaan dan pengiriman sms itu, aku mencoba menggunakan delphi (karena aku hanya bisa memakai delphi) tetapi anehnya ketika aku mencoba semua at command standar yang ada, yang aku dapatkan hanyalah kosong belaka tanpa adanya respon sedikitpun, aku pikiri ini karena aku memakai komputer yang udah dikunci port comnya dari program visual basic tadi, tetapi saat gsm modem aku pindahkan ke komputer lainnya, saat menancapkannya pun windows xp seakan-akan tidak mengenali alat baru tersebut. dan aku mencoba at command dan koneksi portnya ternyata gagal, tapi yang lebih aneh lagi, ketika gsm modem aku pasang kembali ke komputer semua, dia bisa menjawab semua sms yang masuk dan membalasnya keluar melalui program dari visual basic tersebut. apakah yang terjadi ? apakah modem gsm itu hanya suport pada visual basic ? jika pun suport hanya vb tapi kenapa saat di at command dalam komputer tersebut tetep kagak bise ? klo ada drivernya tolongin aku ya! thankx banget ya.
Halo Sendi,Menarik juga kasusmu itu :)Yang jelas, GSM Modem tidak bergantung pada bahasa pemrograman, baik VB atau lainnya.Kalo aku lihat spesifikasi GSM modem kamu itu, nampaknya udah canggih gitu :)http://www.linkwave.co.uk/gsm_gprs/wavecom/hardware/fastrack/m1306b/Bisa TextMode, hehehe...Sebelum kamu mencoba lewat Delphi, coba dulu lewat Hyper Terminal. Jangan lupa untuk menyesuaikan setting, sama dengan yang dipakai oleh aplikasi VB itu (baudrate, flow-control, stopbits, dll)Jika dari HyperTerminal bisa terkoneksi dengan baik (coba jalankan perintah ATE1), maka kecurigaan mengarah pada program Delphimu.Kita bahas lagi nanti.Kayaknya ini bukan masalah driver deh.Ok, dicoba pake HyperTerminal dulu ya.
terima kasih mas atas programnya. mas, aku mau nanya nih, apa mas tau cara ngirim dan terima sms lewat bahasa C? trus kalo seumpama ngirim sama terima smsnya tanpa lewat komputer bisa gak? jadinya ngrim sama terima sms hanya lewat mikrokontroler tanpa melalui PC. kira2 ada tutorialnya gak ya?
mas aryo di website ini di sediakan untuk kirim artikel baru enggak bagi pengunjung..? lebih bagus kalo ada jadi topik masalah bisa ganti2 dan bertambah wawasan kita.. thanks
Halo Bagus, Selama bahasa pemrograman itu bisa berkomunikasi dengan port serial, bisa saja digunakan untuk operasi SMS ini, termasuk bahasa C. Tapi aku belum terpikirkan untuk membuat versi bahasa C :D Untuk operasi SMS tanpa PC, silakan kunjungi link berikut ini: http://www.wrankl.de/SMST4PIC/SMST4PIC.html http://www.riccibitti.com/tinyplanet/tiny_article.htm Halo Edy: Pernah sih dulu aku rencanakan untuk itu, agar lebih berkembang. Tapi belum sempat terealisasi. Ok, aku masukkan dalam daftar perbaikan web. Makasih udah mengingatkan lagi :D Untuk sementara, pengunjung dapat 'membuka masalah baru' melalui menu Sharing di atas itu.
Saya memakai modem GSM MC35i dan Win XP Prof SP2. Saya coba hubungkan ke COM 1 tapi kok ga mau konek ya? Padahal semua baudrate sudah saya coba. Memang standard baud rate sama bitnya berapa ya? Tolong dong infonya !
Halo Reza, Pemrograman pada lingkungan Windows XP/2000 tidak mengijinkan akses langsung ke hardware (port Com). Hal ini karena sistem keamanan dari Windows. Untuk dapat mengakses port, silakan download driver ini: http://www.vendetta.org/files/userport.zip Setelah diinstall, maka kamu dapat membuka port yang kamu gunakan, misalnya COM1, agar dapat diakses oleh program SMS ini. Selamat mencoba.
Kalau kesulitan pake userport.sys yang agak "ribet", ada yang lebih mudah pake io.dll bikinannya oom Fred dari GeekHideOut.com di alamat http://geekhideout.com/iodll.shtmlThengkiu, matur nuwun.
Makasih masukannya Deny Semakin banyak cara, tentunya kita semakin siap menghadapi banyak kemungkinan
» Membaca SMS dari PC (162)Jika sebelumnya sudah dibahas cara membaca SMS lewat PC, belum lengkap rasanya kalau tidak dibahas tentang proses pengiriman SMS lewat PC.
Kirim-kiriman SMS memang asyik, apalagi kalo menggunakan PC, meski tetep aja bayar :-)