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 :
- Buat project Delphi baru, simpan namanya sesuai keinginan Anda
- Ambil dua buah komponen TMemo, memo1 untuk input kode GSM7 (respon USSD), memo2 sebagai output hasil konversi
- Ambil komponen TButton, dan isikan event handler sebagai berikut :
procedure TForm1.Button1Click(Sender: TObject);
begin
memo2.Text:=Decode7Bit(memo1.Text,7);
end; - 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 :
a Technopreneur – writer – Enthusiastic about learning AI, IoT, Robotics, Raspberry Pi, Arduino, ESP8266, Delphi, Python, Javascript, PHP, etc. Founder of startup Indomaker.com
maaf maaf mau tanya bagaimana cara menggunakan unit SmsUtils, maklum saya newbie 🙁
tinggal di declare di bawah unit, dan gunakan function2 di atas. Jangan lupa tambahkan library path untuk menunjukkan dimana file init SMSUtils berada. paling muda copy kan unit satu folder dengan file project
AT+CUSD=1,”AA986C3602″,15 (similar dengan AT+CUSD=1,”*123#”,15)
Untuk merubah karakter *123# menjadi AA986C3602 pake fungsi apa ya pak?
sama nih lagi cari solusinya
di-encode ke GSM7/septet mas/mbak. Pake function Encode7Bit di unit SMSUtils. Link nya sama dengan di atas
function Encode7Bit(const AText: string; AUdhLen: Byte;
out ATextLen: Byte): string;
Saat saya copy paste source code SmsUtils trus saya save ,, Saat saya compile kok errornya
Redeclared HetToStr Sama StrToHex
coba dihapus salah satu
USSD ga support di modem Huawei K3565 kayaknya. atau ada solusi?
blm pernah nyoba k3565 mas, jd blm bs ngasih solusi
Mas Ajie,
Mohon infonya untuk function Encode7Bit, saya kok nggak nemu bagaimana mengisi AUdhLen dan ATextLen.
Trims sebelumnya.
BTW, buku-bukunya adakah di Gramedia?
parameter ATextLen itu yg mana ya mas?
Kalo yg digunakan dlm function Decode7Bit hanya parameter APduData dan AUdhLen. APduData adalah string yg akan di-convert, AudhLen diisi nilai ‘7’
Buku hanya dijual online
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 🙂
at
ok
at+cmgf=0
AT+CUSD=1,”AA986C3602″,15
ok.
kok pdu nya gak keluar ya mas? mohon solusinya ! terima kasih ?
modemnya merk apa mas?