Mengecek signal strength operator menggunakan modem atau handphone dapat dilakukan secara terprogram menggunakan Delphi melalui at command. Untuk mengecek sinyal Anda dapat menggunakan perintah at command ‘AT+CSQ’, dengan keterangan sebagai berikut :
Perintah : AT+CSQ
Deskripsi : mengecek signal strength (rssi) dan BER (Bit Error Rate)
Respons: +CSQ : <rssi>,<ber>, dengan parameter <rssi> menunjukkan signal strength dan <ber> menunjukkan bit error rate modem/phone relative terhadap BTS terdekat.
Tes command : AT+CSQ? (untuk mengecek apakah command at+csq didukung oleh modem/handphone
Parameter <rssi> memiliki range nilai sebagai berikut :
0 Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â : 113 dBm atau kurang
1 Â Â Â Â Â Â Â Â Â Â Â : 111 dBm
2-30 Â Â Â Â Â Â Â : 109 dBm to -53 dBm
31 -51Â Â Â Â Â Â : dBm atau lebih besar
99 Â Â Â Â Â Â Â Â Â : tidak diketahui atau tidak mendapat sinyal
Sedangkan nilai <ber> memiliki range nilai sebagai berikut :
0-7 Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â : nilai RXQUAL
99 Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â : tidak diketahui atau tidak mendapat sinyal
Seperti yang Anda lihat pada respon modem di atas, bahwa nilai <rssi> akan bernilai 0 – 99 sedangkan satuan daya (power) standar yang digunakan untuk mengukur kekuatan sinyal adalah dBm. Untuk mengubah nilai yang yang merupakan respon modem ketika mendapat perintah AT+CSQ (0-99), maka dapat digunakan rumus sebagai berikut :
dBm = -113 + (<rssi> x 2)
dengan <rssi> adalah nilai rssi yang merupakan ‘jawaban’ modem setelah diberi perintah AT+CSQ.
Berikut ini adalah source code Delphi untuk membuat program cek signal-strength. Sebelumnya siapkan modem (USB modem 3G) dan SDK Delphi tentunya. Buka program Delphi, buat project baru dengan nama terserah Anda. Ambil komponen TButton (3 bh), TMemo (1 bh), TLabel (3 bh), TEdit (2 bh) dan TComPort (1 bh) dari Component Pallete. TComPort merupakan komponen yang dapat melakukan komunikasi data melalui port serial (COM port) komputer/laptop. Anda dapat mengunduh komponen ini di sourceforge.net jika Anda belum memilikinya. Atur peletakan komponen-komponen di atas seperti pada gambar di bawah.
Atur properti tiap komponen seperti pada tabel di bawah
Komponen |
Properti |
Nilai |
Button1 | Caption | open |
Button2 | Caption | setting |
Button3 | Caption | cek signal |
Label1 | Caption | rssi |
Label2 | Caption | Signal strength |
Label3 | Caption | dBm |
 Double click tombol yang bertuliskan ‘open’ dan isikan source code di bawah
procedure TForm1.Button1Click(Sender: TObject); begin  comport1.Open;  comport1.WriteStr('ate1'+#13); end;
Double click tombol yang bertuliskan ‘setting’ dan isikan source code di bawah
procedure TForm1.Button2Click(Sender: TObject); begin  comport1.ShowSetupDialog; end;
Double click tombol ‘cek signal’ dan isikan script di bawah
procedure TForm1.Button3Click(Sender: TObject); begin  memo1.Clear;  comport1.WriteStr('at+csq'+#13); end;
Dan terakhir, double click komponen TMemo dan isikan source code di bawah
procedure TForm1.Memo1Change(Sender: TObject); var a,b:integer;   rssi:string; begin if pos ('OK',memo1.Text)<>0 then begin  a:=pos ('+CSQ:',memo1.Text);  if a<>0 then  begin  b:= pos (',',memo1.Text);  rssi:=copy (memo1.Text,a+6,b-a-6);  edit1.Text:=rssi;  edit2.Text:=inttostr(-113+(strtoint(rssi)*2));  end; end; end;
Ohya, jangan lupa menambahkan event handler untuk menangani interupsi dari port serial. Dari Object Inspector, pilih komponen comport1, pilih tab ‘Events’ kemudian double click pada event OnRxChar untuk mengisikan source code sbb:
procedure TForm1.ComPort1RxChar(Sender: TObject; Count: Integer); var Str: String; begin memo1.clear; ComPort1.ReadStr(Str, Count); Memo1.Text := Memo1.Text + Str; end;
Jalankan program di atas dengan menekan tombol F9 dan lihat hasilnya seperti gambar di bawah
Untuk mengecek signal, sebelumnya pilih COM port modem (setiap modem selalu menciptakan port serial/port COM virtual) melalui tombol ‘setting’ dan tekan tombol ‘open’ untuk melakukan koneksi ke modem. Sebagai catatan, COM port modem dapat Anda lihat di Control Panel | Device Manager. Kemudian untuk mulai mengecek signal, Anda dapat mengklik tombol ‘cek signal’ dan lihatlah hasilnya di kotak Edit1 dan Edit2
NB : artikel ini untuk menjawab pertanyaan salah satu pembeli buku saya (Membuat SMS Gateway dengan Delphi 7) yang menanyakan tentang prosedur pengecekan sinyal sebelum melakukan proses pengiriman SMS.
a Technopreneur – writer – Enthusiastic about learning AI, IoT, Robotics, Raspberry Pi, Arduino, ESP8266, Delphi, Python, Javascript, PHP, etc. Founder of startup Indomaker.com
kok error pak ada tulisan port not open ,itu gimana ya ??
ada 2 kemungkinan, salah COM port atau portnya lagi ada yang pakai
itu coding-nya gak kurang ta pak? inputan ke memo1 belum ada, tapi sudah ada procedure memochange, kalau dirunning tidak jalan pak
ohya, makasih mas. Kurang event handler di event OnRxChar milik komponen TComport. Sudah saya tambahkan
mau nanya ni pak, klau misal mau menggabungkan indikator signal (bisa naik turun kayak di HP), IMEI, Merk Modem, Nomor HP dalam satu form. supaya terlihat interaktif caranya gimana ya pak? mohon pencerahannya..
terimakasih
kalo pake delphi sih mudah aja itu mas, tinggal imajinasi msg2 programmer aja
terimakasih buat tutor y pak,,
sangat membantu sekali,,,
O y,,, klw membuat bandwith meter utk koneksi internet bagaimna y pak
thanks b4
🙂
bisa pake MRTG atau PRTG atau WinPCap
klw utk script y sendiri apa ada contoh y pak?
di artikel kan udah ada contohnya mas
mau nanya om kalo signal Full nya di berapa rssi ?
0
Kalo kekuatan sinyalnya ditampilkan dalam bentuk bar chart, gimana perhitungannya? kekuatan terendah dan tertingginya berapa?
tinggal pake komponen chart di delphi, kmd diatur nilai maks dan min-nya sesuai keterangan di atas (0 artinya sinyal full, 99 artinya tidak ada sinyal)
mas yg 0 itu dBm nya apa rssi nya ?
klo dari parameter rssi yg diatas, 0 (rssi) = 113 dBM (minus apa ga mas itu ?)
setau saya angka dBm < -53 dBm (lebih kecil dari minus 53 dBm) itu signalnya sudah fullbar
dari parameter diatas seharusnya rssi 31 s/d rssi 51 itu fullbar signalnya… mohon koreksi jika salah….
angka 0 menunjukkan nilai rssi-nya
rssi 0 = – 113 dBm (lihat rumus)
pengertian minus disini bukan ‘minus yg kurang dari 0’ itu ya….Minus di sini artinya perangkat kita menerima power dari sisi transmitter atau power yg bergerak menuju kita
iya benar, biasanya power sktr -60 dBm sinyal sudah fullbar (ingat, bukan rssi 31-51 tp power -60 dBm)
om untuk tampilan qos gimana coding nya ya?? maap mengganggu 😀
mas, lo untuk vb6 bisa bantu ?
intinya sama aja mas, gunakan komponen yg mengakses serial port. Kalo di VB bisa gunakan komponen bawaan VB6 yakni ‘MSCOMM’. Untuk sintaksnya bisa googling
Salam kenal mas, saya mau nanya gimana caranya kita bisa membaca sms dan mengirim sms dari pc melalui hp android?
androidnya dijadikan modem mas, trus sisi pc nya diinstal aplikasi sms gateway
Saya sudah coba, tp event Rxchar tidak pernah dipanggil. Ini kenapa ya?
berarti belum ada komunikasi antara laptop dengan modemnya. Coba cek settingan port COM-nya
Thank yau pak buat fast Respon nya. Seharusnya komunikasi laptop dengan modem sudah ada komunikasi pak,. Karena saya tes kirim sms tidak masalah. Tetapi dia tetap tidak manggil event Rxchar nya.
coba dicek lg event onRxChar milik komponen comport, udah diisi belum event handler-nya?
di event onRxChar nya sudah diisi dengan cara saya double click dan saya isi sesuai dengan contoh diatas
Settingan saya :
Port COM15
Baud Rate 115200
Data bits 8
Stop bits 1
Parity None
Flow Control None
Untuk SyncMethod nya smThreadSync
Event -> evRxChar True
TriggersOnRxchar True
Apa yang salah ya? Tetap tidak mau panggil event RxChar
Comport library 4.11
apakah script ini sudah ditulis?
procedure TForm1.ComPort1RxChar(Sender: TObject; Count: Integer);
var
Str: String;
begin
memo1.clear;
ComPort1.ReadStr(Str, Count);
Memo1.Text := Memo1.Text + Str;
end;
Sudah pak, justru itu kalau di trace tidak masuk ke sana atau tidak dijalankan.
kalo sudah cek bag event handler, langkah berikutnya cek event onChange milik komponen memo, karena begitu ada data yg masuk langsung di-copy-kan ke memo
procedure TForm1.Memo1Change(Sender: TObject);
var a,b:integer;
rssi:string;
begin
if pos (‘OK’,memo1.Text)<>0 then
begin
a:=pos (‘+CSQ:’,memo1.Text);
if a<>0 then
begin
b:= pos (‘,’,memo1.Text);
rssi:=copy (memo1.Text,a+6,b-a-6);
edit1.Text:=rssi;
edit2.Text:=inttostr(-113+(strtoint(rssi)*2));
end;
end;
end;
variabel RSSI tidak dikenali solusinya gmana?
harusnya bisa, kecuali modemya rusak 🙂
coba cek pake software bawaan modem, bisa detect RSSi juga ngga?
Rumus itu referensinya dari mana mas ? Kalo saya lihat jika rssi 0 maka konversinya bukan -113 tp -115 liat datasheet atcommand gsm shield. Terima kasih
dari google gan 🙂