GSMToolsGsmScanNetworks

Bu örnek, modemin IMEI numarasını yazdırır, ardından bir taşıyıcıya bağlı olup olmadığını kontrol eder ve sinyal gücünü yazdırır. Ayrıca yakındaki tüm ağları tarar.

Gerekli Donanım

Devre

Kod

İlk olarak, GSM kütüphanesini içe aktarın

#include <GSM.h>

SIM kartların işlevlerini etkinleştiren bir PIN numarası olabilir. SIM'inizin PIN kodunu tanımlayın. SIM'inizde PIN yoksa boş bırakabilirsiniz:

#define PINNUMBER ""

Kullanacağınız sınıfların örneklerini başlatın. GSM, GSMScanner ve GSMModem sınıflarına ihtiyacınız olacak.

GSM gsmAccess;
GSMScanner scannerNetworks;
GSMModem modemTest;
[Kodu Al]

IMEI numarasını tutacak bir değişken ve seri monitöre gönderilecek bir durum mesajı oluşturun:

Dize IMEI = "" ;

Dize errortext = "ERROR" ;

setup , bilgisayara seri bir bağlantı açın. Bağlantıyı açtıktan sonra, Seri Monitöre çizimin başladığını belirten bir mesaj gönderin. Modemi sıfırlamak için @ scannerNetworks.begin () @@ 'yi arayın.

void setup ( ) {
Seri . başlar ( 9600 ) ;
Seri . println ( "GSM şebekeleri tarayıcı" ) ;
scannerNetworks. begin ( ) ;

Bağlantı durumunu izlemek için yerel bir değişken oluşturun. SIM'in ağa bağlanmasına kadar çizimin başlamasını önlemek için bunu kullanırsınız:

boolean notConnected = true ;

gsmAccess.begin() çağırarak ağa bağlanın. SIM kartın PIN kodunu argüman olarak alır. Bunu bir while() döngüsünün içine yerleştirerek, bağlantının durumunu sürekli olarak kontrol edebilirsiniz. Modem bağlandığında, gsmAccess() GSM_READY değerini döndürür. notConnected değişkenini true veya false olarak ayarlamak için notConnected bayrak olarak kullanın. Bağlandıktan sonra, setup geri kalanı çalışır.

while ( bağlı değil )
{
eğer ( gsmAccess. başlar ( PINNUMBER ) == GSM_READY )
notConnected = yanlış ;
Başka
{
Seri . println ( "Bağlı değil" ) ;
gecikme ( 1000 ) ;
}
}

modemTest.getIMEI() ile modemin IMEI'sini alın ve seri monitöre yazdırın.

Seri . print ( "Modem IMEI:" ) ;
IMEI = modemTest. getIMEI ( ) ;
IMEI. değiştirin ( " \ n " , "" ) ;
eğer ( IMEI ! = NULL )
Seri . println ( IMEI ) ;

loop() , mevcut tüm ağları tarayın ve yazdırın. Bu biraz zaman alabilir

Seri . println ( "Kullanılabilir ağları tarama. Birkaç saniye sürebilir." ) ;
Seri . println ( scannerNetworks. readNetworks ( ) ) ;

Bağlı olan taşıyıcıyı ve sinyalin gücünü yazdırın. Sinyal gücü 0-31 arasındadır, burada 0 en düşük ve 31 en yüksektir. loop() kapatın loop() .

Seri . print ( "Şu anki taşıyıcı:" ) ;
Seri . println ( scannerNetworks. getCurrentCarrier ( ) ) ;

Seri . print ( "Sinyal Gücü:" ) ;
Seri . print ( scannerNetworks. getSignalStrength ( ) ) ;
Seri . println ( "[0-31]" ) ;

Kodunuz yüklendikten sonra, bağlantının durumunu görmek için seri monitörü açın.

Çizimin tamamı aşağıdadır.

/ *

GSM Tarama Ağları

Bu örnek, modemin IMEI numarasını yazdırır,
daha sonra bir taşıyıcıya bağlı olup olmadığını kontrol eder. Öyleyse,
kartla ilişkili telefon numarasını yazdırır.
Ardından yakındaki ağları tarar ve sinyal güçlerini yazdırır.

Devre:
* GSM kalkanı
* SIM kart

8 Mart 2012 tarihinde oluşturuldu
Tom Igoe, Javier Carazo tarafından uygulandı
Değiştirildi 4 Şub 2013
ile Scott Fitzgerald

http: egitim.aspx e = GSMToolsGsmScanNetworks

Bu örnek kod, genel alanın bir parçasıdır
* /


// kütüphaneler
#include <GSM.h>

// PIN numarası
#define PINNUMBER ""

// kütüphane örneğini başlat
GSM gsmAccess ; // hata ayıklamayı etkinleştirmek için bir 'true' parametresi ekle
GSMScanner tarayıcı Ağları ;
GSMModem modem Testi ;

// Veri değişkenlerini kaydet
Dize IMEI = "" ;

// seri monitör sonuç mesajları
Dize errortext = "ERROR" ;

void setup ( ) {
// seri iletişimi başlatın ve portun açılmasını bekleyin:
Seri . başlar ( 9600 ) ;
while ( ! Seri ) {
; // seri portun bağlanmasını bekleyin. Yalnızca Leonardo için gerekli
}

Seri . println ( "GSM şebekeleri tarayıcı" ) ;
scannerNetworks. begin ( ) ;

// bağlantı durumu
bool notConnected = true ;

// GSM kalkanını başlat
// SIM'iniz PIN içeriyorsa, tırnak işaretleri halinde begin () parametresi olarak iletin
while ( notConnected ) {
eğer ( gsmAccess. başlar ( PINNUMBER ) == GSM_READY ) {
notConnected = yanlış ;
} başka {
Seri . println ( "Bağlı değil" ) ;
gecikme ( 1000 ) ;
}
}

// modem parametrelerini al
// IMEI, benzersiz modem tanımlayıcısı
Seri . print ( "Modem IMEI:" ) ;
IMEI = modemTest. getIMEI ( ) ;
IMEI. değiştirin ( " \ n " , "" ) ;
eğer ( IMEI ! = NULL ) {
Seri . println ( IMEI ) ;
}
}

void loop ( ) {
// mevcut ağları tara, ağların bir listesini görüntüler
Seri . println ( "Kullanılabilir ağları tarama. Birkaç saniye sürebilir." ) ;
Seri . println ( scannerNetworks. readNetworks ( ) ) ;

// şu anda bağlı olan operatör
Seri . print ( "Şu anki taşıyıcı:" ) ;
Seri . println ( scannerNetworks. getCurrentCarrier ( ) ) ;

// gücü ve ber döndürür
// 0-31 ölçeğinde sinyal gücü. 31, güç> 51dBm anlamına gelir
// BER, Bit Hata Oranıdır. 0-7 ölçek. 99 = algılanamaz
Seri . print ( "Sinyal Gücü:" ) ;
Seri . print ( scannerNetworks. getSignalStrength ( ) ) ;
Seri . println ( "[0-31]" ) ;

}

See Also