SMS gönderen numarayı kontrol
  • Merhaba,
    Arduino'da oldukça yeniyim. C ve arduino programlama dilini bilmiyorum. Bir GSM modül ve arduino kullanarak birkaç röleye kumanda etmek istiyorum. Arduino GSM kütüphanesinde bulunan örnek programı kullanarak SMS almayı, # işareti ile başlayan SMS'leri devre dışı bırakmayı hallettim. Bu arada, belli bir numara haricindeki diğer abonelerden gelen SMS'leri dikkate almamak için, SMS gönderen numarayı kontrol etmek için aşağıdaki komutları ilave ettim.
    -------------------------------
    void loop() {
    char c;

    // Eğer bir SMS alındıysa()
    if (sms.available()) {
    Serial.println("SMS alinan numara :");

    // Gönderen numarayı alma
    sms.remoteNumber(senderNumber, 20);
    Serial.println(senderNumber);

    if (senderNumber == "+90505XXXXXXX") {
    Serial.println("Dogru numara");
    }
    else {
    Serial.println("Yanlis numara");

    }
    ----------------------------
    senderNumber değişkeni string olduğu için
    if (senderNumber == "+90505XXXXXXX") komutunu kullanarak bir karşılaştırma yapmak istedim.("+90505XXXXXXX" gerçek bir numara) Ancak, +90505XXXXXXX numarasından SMS göndersem bile arduino "Yanlis numara" diyor. Nerede hata yapıyorum acaba?
  • senderNumber string değil char tipinde veri

    bu şekilde dene
    if (strcmp(senderNumber, "+90505XXXXXXX")==0)

  • Teşekkür ederim, çalıştı.
    Bu hâliyle program ancak belirli bir numaradan gelen SMS'leri kabul ediyor. Ayrıca, SMS'in ilk karakteri # işareti ise ekrana basılıyor.
    Kodun tamamı şöyle:
    -------
    /*
    SMS receiver

    This sketch, for the Arduino GSM shield, waits for a SMS message
    and displays it through the Serial port.

    Circuit:
    * GSM shield attached to and Arduino
    * SIM card that can receive SMS messages

    created 25 Feb 2012
    by Javier Zorzano / TD

    This example is in the public domain.

    http://www.arduino.cc/en/Tutorial/GSMExamplesReceiveSMS

    */
    // GSM kütüphanesini ekle
    #include < GSM.h>

    // SIM kartın PIN numarası
    #define PINNUMBER ""

    // Gerekli kütüphane elemanları
    GSM gsmAccess;
    GSM_SMS sms;

    // SMS alınan numarayı tutacak dizi
    char senderNumber[20];

    void setup() {
    // seri bağlantı başlatılıyor ve portun açılması bekleniyor:
    Serial.begin(9600);
    while (!Serial) {
    ; // USB üzerinden seri port bağlantısı bekleniyor
    }

    Serial.println("SMS Mesaj Alma");
    // bağlantı durumu
    boolean notConnected = true;

    // GSM bağlantısı
    while (notConnected) {
    if (gsmAccess.begin(PINNUMBER) == GSM_READY) {
    notConnected = false;
    } else {
    Serial.println("Baglanamadi");
    delay(1000);
    }
    }

    Serial.println("GSM hazir.. ");
    Serial.println("SMS bekleniyor");
    }

    void loop() {
    char c;

    // Eğer bir SMS alındıysa()
    if (sms.available()) {
    Serial.println("SMS alinan numara :");

    // Gönderen numarayı alma
    sms.remoteNumber(senderNumber, 20);
    Serial.println(senderNumber);
    if (strcmp(senderNumber, "+905XXXXXXXXX")==0){
    Serial.println("Dogru numara");
    }
    else {
    Serial.println("Yanlis numara");
    sms.flush();
    }
    // # ile başlamayan SMS'ler işleme konulmayacak
    if (sms.peek() != '#') {
    Serial.println("Reddedilen SMS");
    sms.flush();
    }

    // SMS'i oku ve ekranda göster
    while (c = sms.read()) {
    Serial.print(c);
    }

    Serial.println("\nMESAJ SONU");

    // SMS, modüln hafızasından siliniyor
    //delay(1000);
    sms.flush();
    delay(1000);
    Serial.println("Son alinan SMS silindi");
    }

    delay(1000);

    }
    ---------------------------
  • Geri dönüş için teşekkürler kodlarınız başka arkadaşlara da yardımcı olacaktır

Howdy, Stranger!

It looks like you're new here. If you want to get involved, click one of these buttons!

Login with Facebook

Tagged

Açık kaynak kültürü gereği, çözdüğünüz problemlerin çözümlerini paylaşmayı lütfen unutmayın.