Handling USSD untuk modem Huawei E220, E1552 dan Yang Setipe

Terima kasih kepada mas Toni Gunawan, salah satu pembeli buku saya yang memberitahu bahwa script yang ada di buku ‘Membuat SMS Gateway dengan Delphi 7’ tidak jalan di modem huawei E1552 miliknya. Setelah ketemuan di SPBU Muri di Tegal (kebetulan saya lagi ada perlu pulang Kudus), ternyata khusus untuk modem huawei ada sedikit perbedaan dalam menangani respon USSD yang dikirim dari USSD gateway operator. Ini tentunya di luar kuasa saya ketika menulis buku, karena begitu banyak tipe modem yang beredar di pasaran dengan bermacam-macam at command yang berbeda pula (proprietary). Tetapi sekali lagi saya mengucapkan terima kasih, karena berkat case ini, bertambah pula pengetahuan saya tentang instruksi AT command dan cara handlingnya khususnya untuk modem huawei.

Kalau di dalam buku, saya hanya menulis cara handling respon USSD dalam mode teks dan karakter UCS2, maka khusus untuk modem huawei, ternyata yang digunakan adalah mode PDU dengan format GSM7-bit atau yang lebih dikenal dengan nama septet. Cara paling mudah untuk mengkonversi (decode) respon USSD dalam format GSM7 adalah menggunakan unit SmsUtils yang ada di http://stackoverflow.com/questions/11489025/when-i-encode-decode-sms-pdu-gsm-7-bit-user-data-do-i-need-prepend-the-udh-fi. Setelah itu begitu Anda mendapat respon USSD dalam format ini, Anda tinggal memanggil function Decode7Bit yang akan mengembalikan sebuah nilai bertipe string yang berisi terjemahan GSM7 dengan format teks yang bisa terbaca oleh kita. String ini dapat dengan mudah kita olah untuk mendapatkan data yang diinginkan misalnya data pulsa, masa aktif atau yang lainnya. Format function adalah sebagai berikut :

function Decode7Bit(const APduData: string; AUdhLen: Integer): string;

Contoh penggunaan function di atas untuk mendekodekan respon USSD modem Huawei adalah sebagai berikut :

  1.  Buat project Delphi baru, simpan namanya sesuai keinginan Anda
  2. Ambil dua buah komponen TMemo, memo1 untuk input kode GSM7 (respon USSD), memo2 sebagai output hasil konversi
  3. Ambil komponen TButton, dan isikan event handler sebagai berikut :
    procedure
    TForm1.Button1Click(Sender: TObject);
    begin
     memo2.Text:=Decode7Bit(memo1.Text,7);
    end;
  4. Running project di atas, isikan kode respon USSD modem Huawei di kotak memo1, tekan tombol Button1, maka Anda akan mendapatkan ‘terjemahan’ teksnya di dalam kotak memo2.

Mudah bukan? Semoga bermanfaat dan selamat berkreasi

Ohya, untuk memerintahkan modem untuk mengecek pulsa dalam kode GSM7, Anda dapat memberikan perintah sebagai berikut :

at+cusd=1,”2A1C0E3702″,15 (similar dengan at+cusd=1,”*888#”,15), atau

AT+CUSD=1,”AA986C3602″,15 (similar dengan AT+CUSD=1,”*123#”,15)

Related article :

Program Cek Pulsa Dengan Delphi

AT COMMAND dan Delphi

0 0 votes
Article Rating

Leave a Reply

14 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
Noor

maaf maaf mau tanya bagaimana cara menggunakan unit SmsUtils, maklum saya newbie 🙁

indra

AT+CUSD=1,”AA986C3602″,15 (similar dengan AT+CUSD=1,”*123#”,15)

Untuk merubah karakter *123# menjadi AA986C3602 pake fungsi apa ya pak?

heni

sama nih lagi cari solusinya

Johanes

Saat saya copy paste source code SmsUtils trus saya save ,, Saat saya compile kok errornya
Redeclared HetToStr Sama StrToHex

hayato

USSD ga support di modem Huawei K3565 kayaknya. atau ada solusi?

t4nu

Mas Ajie,
Mohon infonya untuk function Encode7Bit, saya kok nggak nemu bagaimana mengisi AUdhLen dan ATextLen.
Trims sebelumnya.

BTW, buku-bukunya adakah di Gramedia?

t4nu

Ini saya copy paste dari link yang mas Ajie berikan di atas (saya bandingkan juga dengan jawaban mas Ajie dengan indra dan heni):
function Encode7Bit(const AText: string; AUdhLen: Byte;
out ATextLen: Byte): string;

yang saya maksudkan itu out ATextLen: Byte

Bukunya mudah-mudahan hari ini bisa saya terima 🙂

ade ilham

at
ok
at+cmgf=0
AT+CUSD=1,”AA986C3602″,15
ok.

kok pdu nya gak keluar ya mas? mohon solusinya ! terima kasih ?

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