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!

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