我正在开展一个项目,我的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");
}
}
}
答案 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.......
}
当然,如果我们能看到那幅草图会有所帮助......