2016-04-08 11 views
1

Ich habe Arduino und GSM-Modul sim900, ich möchte die Nummer erhalten, wenn ich Nachricht empfange. Wie kann man das tun? Es gibt Befehle oder Funktionen in der Sprache C++. dankearduino und gsm modul sim900 wie bekommt man nachrichten telefonnummer?

SoftwareSerial SIM900(7, 8); 

void setup() 
{ 

SIM900.begin(19200); // for GSM shield 
SIM900power(); // turn on shield 
delay(10000); // give time to log on to network. 

SIM900.print("AT+CMGF=1\r"); // set SMS mode to text 
delay(100); 
SIM900.print("AT+CNMI=2,2,0,0,0\r"); 
// blurt out contents of new SMS upon receipt to the GSM shield's serial out 
delay(100); 
} 

void SIM900power() 
// software equivalent of pressing the GSM shield "power" button 
{ 
digitalWrite(9, HIGH); 
delay(1000); 
digitalWrite(9, LOW); 
delay(7000); 
} 

void loop() 
{ 

if (SIM900.available() > 0) // if there's Message 
    { 
    inchar = SIM900.read(); //Get the character from the cellular serial port. 
    // command or function for get the phone number from message 
    } 
} 

Antwort

0

Versuchen Sie, direkt mit dem Modem zu spielen, zum Beispiel indem Sie Ein- und Ausgang mit Ihrem seriellen USB-Anschluss verbinden, dann wird es klarer.

Das Ding ist, wenn es eine neue Nachricht ist, werden Sie einige Bytes aus dem Modem wie folgt aussehen erhalten:

+CMTI: "SM",4 

... wo 4 die ID ist. Sie können dann an das Modem AT+CMGR=4 (4 die ID von früher ist) senden und Sie erhalten eine Antwort wie diese:

+CMGR: "REC UNREAD","+123456789",,"15/04/22,13:22:11+32" 
Yay, a nice text message! 

OK 

Wenn der letzte Teil ausfällt, können Sie zuerst das Modem sagen müssen SM lesen Geben Sie Nachrichten mit AT+CPMS="SM" ein. Weitere Informationen finden Sie unter http://www.developershome.com/sms/cmgrCommand2.asp