Problem GSM Shield - Rufnummer abfragen

Hallo Zusammen,

ich habe hier ein Arduino GSM Shield, das ich für eine Zugangskontrolle nutzen möchte. Ich sende dem Shield per SMS die Handynummer von jmd., der dann, durch Anruf des GSM Shields verifiziert wird und Zutritt zu einer Tür erhält.

Das funktioniert auch alles soweit, in manchen Fällen habe ich allerdings das Problem, dass das Shield bei der Abfrage der Anrufernummer (die ja zwingend benötigt wird), nichts zurück gibt. Manchmal dauert die Abfrage sogar so lange, dass der Anruf durch "Der gewünschte Teilnehmer ist z.Zt. nicht erreichbar" beendet wird.

void Anrufidentifizieren(){

         // Check the status of the voice call
        switch (vcs.getvoiceCallStatus()) {
   
         
          case IDLE_CALL:
      
              break;
      
          case RECEIVINGCALL:
      
              Serial.println("Eingehender Anruf!");
              
              vcs.answerCall();
      
              delay(1000);
              vcs.retrieveCallingNumber(numtel, 20);
     
        //      delay(200);
              vcs.retrieveCallingNumber(numtel, 20);
     
       //      delay(200);
              vcs.retrieveCallingNumber(numtel, 20);
      
        //      delay(200);
              vcs.retrieveCallingNumber(numtel, 20);
           
         //     delay(200);
              vcs.retrieveCallingNumber(numtel, 20);
      
              Serial.print("Die Rufnummer lautet: ");
              Serial.println(numtel);
              
              
              
              // Char in String umwandeln und erneut ausgeben
       
              anrufer = numtel;
              Serial.print("Anrufer als String lautet: ");   
              Serial.println(anrufer);
              
              
               if (anrufer.equals(nachricht)){   
   
                     Serial.println("Der Anrufer ist berechtigt");
                     tueroeffnen();
                     vcs.hangCall();
                     nachricht = "";
   
               } else {
   
                     Serial.println("Der Anrufer ist NICHT berechtigt");
                     delay(1000);
                     vcs.hangCall();
   
               } 
      
               break;

  }
     

}

Wie ihr seht wiederhole ich die Abfrage schon ein paar mal, trotzdem kommt es in manchen Fällen aber zu einer Nicht-Erkennung (numtel bleibt dann einfach leer). Egal ob ich zwischen den Befehlen das Delay einbaue oder wie lang dieses ist. Alle anderen Befehle, SMS empfangen, senden, Nummer des SMS-Absenders feststellen etc. funktionieren Problemlos, nur vcs.retrieveCallingNumber macht manchmal Probleme - und ich habe keine Ahnung, woran das liegt.

Vielleicht kann mir jemand weiter helfen?

Vielen Dank für Eure Bemühungen

Gruß Noel

illuminati235: Ich sende dem Shield per SMS die Handynummer von jmd., der dann, durch Anruf des GSM Shields verifiziert wird und Zutritt zu einer Tür erhält.

"Rufnummernunterdrückung" ist eine Standardfunktion, die auf jedem Handy aktiviert werden kann.

Dass es Rufnummernunterdrückung gibt ist mir klar, das ist aber für meinen Fehler nicht relevant (und auch nicht für den späteren Betrieb, da nur ausgewählt Personen die Funktion nutzen werden).

Ich habe mittlerweile festgestellt, dass es schon zu einem Hänger bei getvoiceCallStatus kommt.

Auch hier wird manchmal nichts zurück gegeben, das Programm hält dann einfach an.

Ich vermute einen Fehler in der GSM.h, kann ich das Shield per direkten Befehlen ansprechen?

Gruß Noel

Der Fehler liegt eindeutig in der Verarbeitung durch die GSM.h.

Ich habe mich per Hyper-Terminal auf die Serielle Schnittstelle des Shields geklemmt, hier wird die Rufnummer sauber übertragen, dass ein Anruf vorliegt merkt das Shield schon bevor es am Telefon überhaupt klingelt....

Ich arbeite dran...

Hallo!

Ich wollte mich mal erkundigen wie es Dir mit dem Problem geht? Konntest Du es lösen?

Auch ich habe das gleiche Problem. Das Programm hat lange Zeit funktioniert, dann habe ich was an ganz anderer Stelle (was nix mit GSM zu tun hat) geändert und nun krieg ich die Nummer nicht mehr...

Schade.

Gruß!