我有arduino和gsm模块sim900,我想在收到消息时得到号码。怎么能用c ++语言做那个命令或功能呢?感谢
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
}
}
答案 0 :(得分:0)
尝试直接使用调制解调器,例如通过管道输入并输出到USB串口,然后它会变得更清晰。
事情是,当有新消息时,您将从调制解调器获得一些字节,如下所示:
+CMTI: "SM",4
...其中4
是ID。然后,您可以发送到调制解调器AT+CMGR=4
(4
作为前面的ID),您将得到如下响应:
+CMGR: "REC UNREAD","+123456789",,"15/04/22,13:22:11+32"
Yay, a nice text message!
OK
如果最后一部分失败,您可能首先需要告诉调制解调器使用SM
读取AT+CPMS="SM"
类型的消息。
有关详细信息,请参阅http://www.developershome.com/sms/cmgrCommand2.asp