从特定号码接收短信

时间:2015-01-13 10:24:46

标签: c++ arduino gsm

我正在开展一个项目,我的Arduino ATMEGA328接口SIM900 GSM Shield将收到特定号码的短信。

我能够收到消息。但我希望我的GSM只能从特定号码接收。例如,我只想收到+639123456789号码。 +639111112222和+639998887777等号码将被丢弃。任何人都可以帮助我吗?

编辑:这是我的代码。

    #include <SoftwareSerial.h> 
    #include <string.h>

    char inchar; // Will hold the incoming character from the GSM shield
    String s = "";
    SoftwareSerial SIM900(2, 3);
    void setup()
    {
      Serial.begin(9600);

      // wake up the GSM shield
      SIM900power(); 
      SIM900.begin(9600);
      delay(20000);  // 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);
      Serial.println("Ready...");
    }

    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(SIM900.find("+639123456789 ") && SIM900.find("AUTO"))
{

Serial.println("AUTOMATIC asd");
SIM900.println("AT+CMGD=1,4");
}
}
    }

1 个答案:

答案 0 :(得分:0)

  

我能够收到消息。但我希望我的GSM只能接收   来自特定的数字。

您是希望阻止GSM接收来自未知号码的短信,还是希望在满足条件时输出到串口?

如果是前者,您可能希望与您的网络提供商交谈,并考虑这种方法中的架构缺陷。

  

一旦消息不满足,它会立即删除该消息   条件

在同样的条件下,如果你没有从numXXX发送,你丢弃短信, 添加

else{
SIM900.print("AT+CNMI=2,2,0,0,0\r");
Serial.println("AUTOMATIC asd");
SIM900.println("AT+CMGD=1,4");
// or write high to led pin if that's what you want.......
}

当然,如果我们能看到那幅草图会有所帮助......