Program Cek Pulsa Dengan Delphi

Ada kalanya kita ingin mengecek seberapa banyak pulsa yang tersisa di nomor simcard kita atau sekedar ingin tahu masa aktifnya. Jika Anda menggunakan handphone, ini sangat mudah dilakukan. Jika misalnya Anda adalah pelanggan XL, Anda hanya perlu men-dial nomor 123, nantinya Anda akan dituntun mesin penjawab telepon untuk mengetahui jumlah pulsa dan masa aktif nomor seluler Anda. Cara lain adalah dengan  mengetikkan kode *123# [enter/OK] melalui keypad handphone, maka Anda akan mendapat balasan berupa teks di layar handphone yang berisi informasi jumlah pulsa dan masa aktif nomor Anda.

Cara yang kedua ini disebut juga dengan  shorcode USSD (Unstructured Supplementary Service Data). USSD ini merupakan salah fitur yang dimiliki teknologi GSM yang memungkinkan user/customer untuk berinteraksi dengan USSD gateway di sisi operator melalui kanal (channel) signaling (SDCCH), jadi tidak mempengaruhi/mengurangi kapasitas TCH (Traffic Channel) yang digunakan untuk kanal suara (voice attempt). Berbeda pula dengan SMS yang menduduki dedicated channel  dan bersifat transaksional, USSD ini bersifat session oriented yang dibatasi oleh waktu. Jadi jika anda menggunakan fitur ini, waktu Anda akan dibatasi dan akan diputus oleh sistem jika Anda terlalu lama memberi respon. Jika Anda penasaran dengan fitur USSD, cobalah untuk mengakses tiap-tiap menu jika Anda menekan kode *123# (jika Anda pelanggan XL).

Nah, bagaimana dengan program yang akan kita buat? Kita tahu bahwa sebagian besar modem 3G (atau modem GPRS) yang beredar tidak memiliki fitur mendukung panggilan suara (telepon). Jadi satu-satunya cara bagi modem tipe ini adalah dengan menggunakan teknologi USSD untuk mengetahui sisa pulsa dan masa aktif nomor. Berikut ini adalah contoh program sederhana untuk melakukan pengecekan pulsa melaiui USSD. Inti dari program yang akan kita buat adalah memanfaatkan at command AT+CUSD. Command ini berfungsi untuk mengirimkan shorcode USSD kepada operator dengan syntax :

AT+CUSD=<n>,<str>,<dcs>

Dengan parameter-parameter sebagai berikut :

Parameter Nilai deskripsi
<n> 0 disable result code (jawaban) USSD gateway operator (default setting)
1 enable result code (jawaban) USSD gateway operator
2 Terminate USSD dialogue (mengakhiri session USSD)
<str> String/karakter USSD (contoh: *123#)
<dcs> integer Cell Broadcast Data Coding Scheme

Setelah Anda mengirim command USSD ke operator, Anda akan mendapat salah satu ‘jawaban’ (result code) sebagai berikut :

+CUSD=<m>

Dengan opsi  dari nilai <m> adalah sebagai berikut

0 Tidak ada langkah lanjutan yang diperlukan
1 Ada info/langkah lanjutan yang diperlukan
2 Dialog USSD berakhir
3 Ada respon dari client I/O USSD
4 Operasi/pilihan USSD tidak ada/tidak didukung
5 Network time out

Setelah kita mengetahhui sintaks penggunaan command AT+CUSD, marilah kita mulai pemrogramannya dengan Delphi. Penting untuk Anda ketahui bahwa akan lebih memudahkan Anda dalam mengolah jawaban/result code dari USSD, jika Anda menginisialisasi modem dalam mode teks, yakni dengan command AT+CMGF=1

Seperti biasa buatlah program Delphi baru, dan aturlah komponen-komponen berikut dalam sebuah form. Kemudian settinglah properties  tiap-tiap komponen seperti pada contoh berikut ini:

Komponen Properties nilai
Button1 Caption setting
Button2 Caption Open
Button3 Caption Cek pulsa
Memo1
Edit1
Label1 Caption Pulsa :
Label2 Caption USSD :
Comport1

desain program cek pulsa

Kemudian isikan source code berikut ke masing-masing Button1, Button2 sebagai berikut

procedure TForm1.Button1Click(Sender: TObject); 
begin
 comport1.ShowSetupDialog; 
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
 if ComPort1.Connected then
 begin
  ComPort1.Close;
  button2.Caption:='Open';
 end
  else
  begin
   ComPort1.Open;
   button2.Caption:='Close';
   ComPort1.WriteStr('at+cmgf=1'+#13#10);
   ComPort1.WriteStr('at+cscs="GSM"'+#13#10);
  end;
end;

Button1 digunakan untuk memanggil jendela pengaturan comport, sedangkan button2 digunakan untuk membuka koneksi dengan comport.

Selanjutnya, isikan button3 (‘Cek pulsa’) dengan source code sebagai berikut:

procedure TForm1.Button3Click(Sender: TObject);
begin
 memo1.Clear;
 edit1.clear;
 ComPort1.WriteStr('at+cusd=1,"*123#",15'+#13#10);
end;

Button3 ini digunakan untuk mengirimkan shortcode USSD ke operator untuk melakukan pengecekan pulsa. Perhatikan pemakaian command ‘AT+CUSD’ di atas.

Dan berikut adalah baris program untuk handling result code dari USSD yang kita kirimkan. Baris program ini kita simpan di event ‘OnChange’ milik komponen Memo1.

procedure TForm1.Memo1Change(Sender: TObject);
var a,b:integer; s:string;
begin
if (pos ('+CUSD',memo1.Text) <> 0) and (pos ('Pulsa',memo1.Text) <> 0) then
 begin
  a:=pos ('P',memo1.Text);
  b:=pos ('.',memo1.Text);
  s:=copy (memo1.Text,a,b-a+1);
  edit1.Text:=s;
 end;
end;

Jangan lupa untuk menyisipakan program handling data serial yang masuk ke komponen Comport1 (melalui phisycal serial port/virtual serial port over USB) dengan baris program berikut di event ‘OnRxChar’ milik komponen comport1 sebagai berikut:

procedure TForm1.ComPort1RxChar(Sender: TObject; Count: Integer);
var
Str: String;

begin
 ComPort1.ReadStr(Str, Count);
 Memo1.Text := Memo1.Text + Str;
end;

Sekarang mari kita coba program yang sudah kita buat tadi, beginilah hasilnya.

Program Cek Pulsa by ajie

Selamat mencoba dan happy programming.

Catatan : Cara menentukan virtual serial port untuk modem 3G, silahkan dibaca di sini. Jika Anda membutuhkan modem 3G yang support AT Command, silahkan belanja disini

0 0 votes
Article Rating

Leave a Reply to Meyer Cancel reply

64 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
dani

Wah Thanks Banget. Tapi kang, saya mau tanya lagi, Gimana program buat khusus STK (SIM TOOL KIT) kemarin saya coba pake pengembangan program dari akang tapi gagal terus. tulisannya NOT SUPPORT. Bisa buatin contoh untuk program STK?. kira2 bisa ngga supaya modem menjadi support. STK.

fahrur

mas ym e njenengan opo ya.
mas modem huawei type E173 support +CUSD?
kok error terus ya?
cara ngetes nya piye?

dani

Selamat Hari Raya Idul Fitri ya kang… kang yang dipake modem apan sih…? kok saya pake delphi menggunakan USSD tetapi tidak ada respon terus.. apa ada yang salah dalam setting modem saya. modem yang saya gunakan huawei E169, misal saya pake perintah “*123#”,15 tidak ada respon sama sekali, jika saya pake perintah “*123*1*1*1#”,15 tetap tidak ada respon di program delphi seperti di atas, tapi ada balasan dari operator dalam bentuk sms bahwa saya mengikuti paket tertentu. berarti ini menunjukkan perintah tersebut bekerja tapi saya tidak melihat hasilnya secara visual dari program yang dibuat. jadi pada intinya pada pembuatan program tersebut… Read more »

yayat

STK (SIM Tool Kit)
yang terdapat STK Kartu XL, Indosat, Axis,
Menu Layanan Data (XL)
Menu Mtronil/i-Sev (Indosat)
Menu Axis-epulsa (axis)

Keypad yang membaca menu2 pada handphone
AT+CKPD=]
AT+CKPD=[
AT+CKPD=^
AT+CKPD=V
AT+CKPD=>
AT+CKPD=<
HP Siemens

hajar_ibn

Salam kenal.. Share yang luar biasa==> SUPERrr… MODE=ON Maaf mas saya mohon pencerahan. Saya dah coba buat applikasi kirim sms, terima sms dan cek pulsa.. semuanya gagal mas. Hanya ComExample saja yang berhasil. Saya menggunakan HP Sonyericson K510i sebagai modem, sudah terinstal (saya yakin sudah terinstal dengan benar sebab mampu mengeksekusi perintah AT command dari aplikasi ComExample dan memberikan SN yang sesuai dengan nomor EMAI) *hasil dari app terima sms dan cek pulsa Memo1 at+cmgf=1 +CMS ERROR: 303 dari aplikasi kirim sms tidak ada hasil sama sekali. Apakah kesalahan ini ada pada HP yang saya gunakan ? dan bagaiman solusinya?… Read more »

Faizal

maaf mas saya dah coba bikin aplikasi ini tapi pada saat sy run kok error seperti ini
[Error] File not found: ‘CPortTrmSet.DFM’
[Error] File not found: ‘CPortImg.res’
[Error] File not found: ‘CPortSetup.DFM’

itu error yg muncul mohon petunjuknya gan?

Andika

Mas…jika mau ngirim sms texk melebihi dari 160 karakter gimana..mohon pencerahannya..
Salam Sukses…

pandji

+CUSD: 0,”00500075006C007300610020006B0061006D0075002000520070003200300034003000200061006B00740069006600200073002E0064002000320033002F00300035002F0032003000310034002E002000410079006F002000630065006B002000700075006C007300610020006B0061006D00750020006D0065006C0061006C0075006900200068007400740070003A002F002F006E00650074002E00610078006900730077006F0072006C0064002E0063006F002E00690064002E00200049006E0066006F003800330038″,72

kq keluar kaya gni y? bisa kasih solusi

abidin

apakah ini juga format PDU mas?
+CUSD: 0,”CD70D80C0ABAC96190B8CCAEB741F4B2BC1D9ED7D72072981D6E83B04C10545E6EA7EB6D17889A769FD761FA3AEC06C1CBEDF03A9C0EBB414137390C5A974152F8AD0663C16030D0BCCC0EB7C3201B485C6787DDA0BA9B5E5F83DA65B73A4C4E83E06576D87D3E87DD202C13049597DBE97ADB054ABACD6F1D0817BBB914″,15

cara membedakan format PDU, ASCII dan ucs2 gmn?

ekaperintis

Terima kasih share nya pak, sangat bermanfaat buat saya, kalau boleh tau code yang dibawah ini buat apa yah ?

if (pos(‘CUSD+1 …..

Kemudian pos itu variabel atau apa yah ?

Terima kasih

ekaperintis

Makasih pak penjelasannya, kalau boleh tau script functionnya kaya gimana yah pak,

radih

mas, mau tanya, knp yah kadang suka ada sms masuk tp kebacanya jadi @?£òù ?@f@@£P
¡0@j£@$@æ@a@8¥?å¡0@¡@?ì ?@l@?¥p
@?@f£Hì@ò@s@?¥¡Å¡2@X£òù@?@ @,¥?
@9@R£hù@ò@r@?¥¡Å¡:@d£òù¡? @(¥?ø@2@R£pù, apa ada yg salah dari converter pdu nya ato gimana yah, thx.

radih

masalahnya kalo mode teks, blm nemu buat kalo nerima sms yg panjanganya lebih dari 160 karakter 🙂

Rizal

mas kok ERROR ya bacaannya.
saya pake modem huwaei kartu XL.
saat cek pulsa munculnya ERROR mas.
mohon bantuannya.. X(

Rizal

Sangat membantu..!!
hehehe
makasih y mas.

Rul

Mas ajie, saya mau nanya neh mas ada sorce code untuk set otomatis port yang aktif dan menampilkan pesan kalau kita sedang menggunakan port tersebut

heru

saya coba pakai hp kok error aja ya ?
apa harus ada settingan khusus ?

tatang

sy coba pake modem huawei e173, kartu nya simpati, tapi gk bisa…
munculnya gini di memo :

at+cusd=1,”*888#”,15

ERROR

+CGREG: 1, 1CC1, 2E02BCD

^RSSI:18

^RSSI:15

+CGREG: 1, 1CC1, 2E07D5C

dalban

mas, tampilan CUSSD (cek pulsa *123# XL) di saya kok tidak rapi, nomor tidak urut spt tampilan mas aji punya.
why?

dalban

seperti ini :

+CUSD: 1,”Pulsa 35461 s/d 17May14. Mau RBT GEISHA,3rb/7hr? RBT lain *123*1818#1 Mau
2 Internet3 Pkt Super Hemat4 Pkt Nelpon5 Bola Rp1M6 mPulsa7 MyInfo”,15
OK

jedi pilihan angkanya brdempetan, tidak berurutan kebawah dari ke cil ke besar

chandra

kalo pengen bisa berurutan ke bawah bagaimana mas?

bryan

USSD untuk STK gmn mas ?

bryan

commandnya apa aja mas buat STK ?
semua HP / modem bisa ?

bryan

ada contoh commandnya mas ?

bryan

OK mas hasilnya.
kemarin baca2 commandnya STGI / STGR.
tapi saya coba hasilnya error

Yougha

Mas tanya,,
Source Code Function PDUTextnya dimana ,, boleh di share

Dikry

Kenapa ane ada bacaan gini gan ^CSNR:-90,

maaf newbie

agung oii

klo ngambil kata di edit pulsa gmn caranya,,,
contoh split string nya kayak apa pak…

ahmad ali faizin

mas .. arti error pada : CME 100 apa yaa >

Azkal

maaf mas mau tanya, knp ya pas konke port respone nya gini
OK

COMMAND NOT SUPPORT
trus kalau jalanin ussd +CME ERROR: 100

tikukur

Mas, saya pake modem huawei e153 dan dia seperti modem e220 dan e1552, hasilnya cuma OK dan tidak ada Result hasil pulsanya

Christian

Mas kalau saya tertarik membuat program USSD sederhana, itu pakai program apa ya?kira2 buku yang mana yg saya pakai?

Sughema

mas Aji, salam kenal…
saya Sughema dari Cirebon

Saya minta petunjuk kode arduino (IDE) untuk cek pulsa
kodenya bgm? trus diletakkan dimana (void setup atau void loop)
library yg dibutuhkan apa aja
Terimakasih sebelumnya…

Sughema

oh iya, maaf…
kode cek pulsa tersebut merupakan kode tambahan menu, dari proyek kontrol rellay dengan sim800l
sehingga nantinya akan saya sisipkan pada kode kode yang lain

Meyer

mas koding cek pulsa klo pake sim800l dan arduino bagaimana?

Dixie

Modem saya Huawei e153 kok respon.nya “error'” ya ?? Saya coba di modem wavecom 1306b juga sama .. trims ..

64
0
Would love your thoughts, please comment.x
()
x