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.
Mas Aryo program SMSnya saya tambahi sedikt untuk membaca sms dari tabel lain seperti ini:
adoquery1.sql.text:='select a.pengirim, b.kode,b.deskripsi from SMS as a inner join datane as b;
while not adoquery1.eof do begin
txtnomor.text:=ubahkenomor(l.caption);
txtpesan.text:=adoquery1.fields[2].asstring;
trus klo dikirim ada pesan error list index out of bound(2) padahal udah bisa terkirim keHP tujuan tolong bantuannya, soalna buat referensi skripsiku untuk balas sms secara otomatis bls ke sastr_00@yahoo.com pleeeeeeeeaze,
thanks
Halo agung,
Itu karena komponen TXComm belum kamu install.
- Download ini dulu:
http://www.bengkelprogram.com/download-ouxcom.zip
- Extract di suatu directory, misalnya C:ouxcom
- Buka Delphi
- Open file .dpk dari c:ouxcom
- Tekan install
- Masuk menu Tools > Environment Options > Library
- Tambahkan direktori c:ouxcom pada daftar Library Path
- Library sudah terinstall
Itu langkah-langkah install komponennya, kalo ada masalah lain, silakan dilaporkan lagi :)
Oh ya sekalian tambahin fungsi nerima SMS otomatis, pake
AT CNMI=2,2,2,1,1
kalo' ada sms yang masuk, modem akan kirim response
CMT : ,index
PDU
jadi inbox HP tidak akan penuh, karena semua sms langsung dikirim ke kompi.
mas aku masih belajar nih
mau tanya aku kemaren gagal install component variant, trus aku pake commport.
udah bisa jalan sih tapi function untuk koneksi yang aku buat masih blon berhasil.
Apa commport itu hanya perlu pada 1(satu) form aja atau bisa digunakan 2 atau lebih comport?
untuk form kedua tidak masalah tapi setelah form ke 3 baru bermasalah.
tolong ya mas?
kalau bisa saya minta artikel yang menjelaskan fungsi2 dan procedure program mas Aryo buat belajar.
MsComm nya kadang kok gak bisa di install yho mas, dari pada pusing trus aku pake TOxygenSMS aja.kalo boleh tau knapa tuh mas
Halo Tri,
Misalnya digunakan secara web based, aku rasa tidak bisa langsung. Misalnya di PHP/ASP, sangat riskan untuk diterapkan mengakses hardware secara langsung.
Dengan ASP kita bisa menciptakan ActiveX untuk mengakses COM, tapi menurutku sangat riskan.
Salah satu yang bisa dilakukan adalah dengan melakukan bridging.
Misalnya ada request untuk mengirim SMS dari web, maka request tersebut oleh PHP/ASP disimpan ke database/file.
Selanjutnya kamu bikin aplikasi tambahan, misalnya dengan Delphi. Aplikasi tersebut dijalankan di server, dan selalu mengecek isi file/database. Kalau ada request masuk, maka SMS tersebut dikirimkan.
Cukup simple kan, menurutku sih
Untuk sender ID, setauku itu harus sepengetahuan operator seluler yang bersangkutan, jadi harus ada ijin.
Sebenernya kita kan berlangganan SMS kepada operator tersebut. Nah, kalo ingin sender ID berupa nama, kita bisa pesan pada operator yang bersangkutan. Harus bayar, mestinya
salam kenal mas aryo,
saya skrng coba perintah at+cind dan hasilnya saya tampilkan di form !
nah, tetapi saya ingin menampilkan informasi tadi setiap 1 detik !
jadi saya bikin looping berdasarkan timer ! nah saya bingung mas, gimana caranya ?
ada contoh nya ga mas?
thanks,
to mas lutfi
saya pemula untuk delphi saya mo nanya tentang delphi
aq mo naya ada peringatan ‘ list index out of bound (2)’ itu terjadi karena pada n pada pada tombol cek sms aq kasih skrip:
procedure TfUtama.SpeedButton6Click(Sender: TObject); {pada tombol Cek SMS}
var i:integer;
l:TListItem;
a:string;
begin
if not Konek then begin
ShowMessage(’Belum terkoneksi ke HP’);
exit;
end;
Timer1.Enabled := False;
lblSMS.Caption := ‘’;
ListSMS.Items.Clear;
SpeedButton6.Enabled := false;
CekSMS;
BacaSMS;
FilterDisplay;
for i := 0 to lvSMS.Items.Count - 1 do
lvSMS.Items[i].Selected := True;
PindahSMS;
while ADOQuery1.Active do
ADOQuery1.Close;
ADOQuery1.SQL.Text:=’Select a.pengirim,b.kode,b.deskripsi from SMS a ‘+
‘ inner join datane b on a.isi=b.kode where b.kode=a.isi ‘;
ADOQuery1.Open;
while not ADOQuery1.Eof do begin
l:=ListSMS.Items.Add;
l.Caption:=ADOQuery1.FieldValues[’Pengirim’];
while ADOQuery1.Active do
ADOQuery1.Close;
ADOQuery1.SQL.Text:=’Select a.pengirim,b.kode,b.deskripsi from SMS a ‘+
‘ inner join datane b on a.isi=b.kode where b.kode=a.isi ‘;
ADOQuery1.Open;
while not ADOQuery1.Eof do begin
a:=ADOQuery1.Fields[2].AsString;
ADOQuery1.Next;
end;
ADOQuery1.Next;
txtNomor.Text:=rubahKeNomor(l.Caption);
txtPesan.Text:=a;
{TabSheet4.Show;
txtPesan.SetFocus;}
end;
SpeedButton6.Enabled := True;
Timer1.Enabled := True;
Timer1.Enabled:=False;
if (KirimSMS(txtNomor.Text,txtPesan.Text)) then
begin
ShowMessage(’data terkirim’+txtNomor.Text );
end
else
begin
ShowMessage(’tidak terkirim’+txtNomor.Text);
end;
FilterDisplay;
Timer1.Enabled:=true;
end;
aq tambahi yang bercetak tebal n miring
selama itu belum terjadi error, setelah aq klik kirim sms
procedure TfUtama.SpeedButton7Click(Sender: TObject);
var c : string;
i : integer;
{a,
l: TListItem;}
begin
if txtNomor.Text = ‘’ then begin
ShowMessage(’Nomor harus diisikan’);
exit;
end;
if not Konek then begin
ShowMessage(’Belum terkoneksi ke HP’);
exit;
end;
Timer1.Enabled := False;
c := AnsiReplaceStr(txtNomor.Text, ‘,’, #13#10);
Item.Text := c;
for i := 0 to Item.Count - 1 do begin
c := trim(Item.Strings[i]);
if (KirimSMS(c, txtPesan.Text)) then
begin
ShowMessage(’Pesan sukses dikirim ke ‘ + c);
{l := ListSMS.Items.Add;
l.Caption := rubahKeNama(c);
l.SubItems.Add(DateTimeToStr(Now));
l.SubItems.Add(txtPesan.Text);
l.SubItems.Add(’PC’);
l.SubItems.Add(’Terkirim’);
l.SubItems.Add(’0′);}
{ADOConnection1.Execute(’insert into SMS(Pengirim,Tanggal,Isi,Jenis) values(’
+ QuotedStr(c) + ‘,’
+ QuotedStr(DateTimeToStr(Now)) + ‘,’
+ QuotedStr(copy(txtPesan.Text, 1, 160)) + ‘,’
+ QuotedStr(’Terkirim’) +’)');
ADOQuery1.SQL.Text := ’select max(id) as baru from SMS’;
ADOQuery1.Open;
l.SubItems.Add(ADOQuery1.FieldValues[’baru’]);}
{a := lvSMS.Items.Add;
a.Caption := l.Caption;
a.SubItems := l.SubItems;}
end
else
ShowMessage(’Pesan gagal dikirim ke ‘ + c);
end;
FilterDisplay;
Timer1.Enabled := True;
end;
terjadi error yang disorot pada Timer1.Enabled := True; tapi setelah aq cek ternyata pada FilterDisplay; dan ini procedure filterdisplaynya
procedure TfUtama.FilterDisplay();
var
i: integer;
a,
l: TListItem;
begin
lvSMS.Items.Clear;
for i := 0 to ListSMS.Items.Count - 1 do begin
l := ListSMS.Items.Item[i];
if ((l.SubItems[2] = ‘PC’) and (LokasiPC in LokasiDipilih)) or
((l.SubItems[2] = ‘Phone’) and (LokasiHP in LokasiDipilih)) then
if (l.SubItems[3] = arJenisSMS[Ord(JenisSMS)]) or (JenisSMS = jSemua) then
begin
a := lvSMS.Items.Add;
a.Caption := rubahKeNama(l.Caption);
a.SubItems := l.SubItems;
end;
end;
lbJumlah.Caption := ‘SMS: ‘ + IntToStr(lvSMS.Items.Count);
end;
apa yang salah pada “l.SubItems[2]�
tolong bantuannya klobisa dikasih tau skrip untuk mereplay sms otomatis
pleeeeeeeeeeaza
kirim ke sastr_00@yahoo.com
kalo koneksi lewat modem bisa ga trs via tlp rumah media sms nya makasiah
buat mas ipank minta tolong kirim file Toxgen yg dah dicrack yach soalnya aku butuh banget buat skripsi. makasih sebelumnya.salam kenal.
emailku : antidinus@public.dinus.ac.id
» 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 :-)