Thursday, October 18, 2007

Membaca SMS dari PC

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/s.p.ekkebus/portfolio/resource/sms_pdu.html
Koneksi ke PC
Selanjutnya, adalah menghubungkan HP anda dengan PC. Banyak alternatif untuk itu, diantaranya:
Menggunakan kabel data. Biasanya spesifik untuk setiap merk HP. Nokia punya sendiri, siemens juga punya, semoga anda juga punya :-)Kabel ini akan menancap di port COM, atau ada juga yang di USB port.
Menggunakan IrDA (Infrared). Nantinya akan tercipta sebuah port COM virtual.
Menggunakan Bluetooth, juga menciptakan port COM bayangan.
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:
Dari IDE Delphi, pada menu Component, pilih menu Import Active-X Control
Pada pilihan obyek, silakan pilih MSCommXX.ocx, lalu tekan tombol Install
Akan muncul beberapa dialog berikutnya, pilih saja yes atau ok :-)
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,
AT+CMGL=0 : SMS baru
AT+CMGL=1 : SMS dalam Inbox (yang sudah terbaca)
AT+CMGL=2 : SMS Draft (belum terkirim)
AT+CMGL=3 : SMS Outbox (terkirim)
AT+CMGL=4 : Seluruh SMS (semua yang ada di Inbox, Outbox, Draft)
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.
Post a Comment

tes

tes

soal tes cpns

Motivated

Cara memulai adalah dengan berhenti berbicara dan mulai melakukan. The way to get started is to quit talking and begin doing. ~ Walt Disney, Niat adalah ukuran dalam menilai benarnya suatu perbuatan, oleh karenanya, ketika niatnya benar, maka perbuatan itu benar, dan jika niatnya buruk, maka perbuatan itu buruk. ~ Imam An Nawaw, Motivasi itu seperti mandi; kalau Anda berhenti melakukannya maka Anda akan "melempem" lagi, sama seperti Anda akan bau lagi bila berhenti mandi. ~ Z ig Ziglar ~ , Successful people live well, laugh often, and love much. They've filled a niche and accomplished tasks so as to leave the world better than they found it, while looking for the best in others, and giving the best they have. , It is literally true that you can succeed best and quickest by helping others to succeed. , There is always the danger that we may just do the work for the sake of the work. This is where the respect and the love and the devotion come in - that we do it to God, and that's why we try to do it as beautifully as possible. , Life is a promise; fulfill it, If a man is called to be a street sweeper, he should sweep streets as Michelangelo painted, or Beethoven composed music, or Shakespeare wrote poetry. He should sweep streets so well that all the hosts of heaven and earth will pause to say, here lived a great street sweeper who did his job well. , Success is a state of mind. If you want success, start thinking of yourself as a success. , Be what it is that you are seeking. , Every new day is an opportunity to balance the sheet; a new opportunity to put your act right! Thank God for every new day, rather than just for Friday., There is no such thing in anyone's life as an unimportant day. ,What would life be if we had no courage to attempt anything? , It's what you learn after you think you know it all that makes a difference. , The difference between great people and everyone else is that great people create their lives actively, while everyone else is created by their lives, passively waiting to see where life takes them next. The difference between the two is the difference between living fully and just existing. , We are all faced with a series of great opportunities brilliantly disguised as impossible situations. , You cannot control what happens to you, but you can control your attitude toward what happens to you, and in that, you will be mastering change rather than allowing it to master you. , Those who wait to do a great deal of good at once will never do anything. Life is made up of little things. True greatness consists in being great in the little things. , Great lives are the culmination of great thoughts followed by great actions. , There are two ways to live your life. One is as though nothing is a miracle. The other is as though everything is a miracle.,