0

我正在使用 Arduino UNO 和 SIM900A 模块进行基于 GSM + ARDUINO 的通信。我使用以下代码拨打特定号码但没有任何反应,

void setup()
{ 
 Serial.begin(9600);
 delay(10000); 
}
void loop()
{
 Serial.println("ATDTxxxxxxxxxx;"); //where xxxxxxxxxx is  a 10 digit mobile number
 delay(30000); // wait 20 seconds.
 Serial.println("ATH"); // end call
 do // remove this loop at your peril
 { 
 delay(1); 
 }
 while (1>0);
}

而当我使用 ATDTxxxxxxxxxx 时;在 minicom 中与 SIM900A 模块通信时,我可以打电话(因为 ATDxxxxxxxxxx 给出了没有运营商错误,所以我使用了“;”)。发送消息的情况类似。我在使用时收到“+CMS ERROR: 302”

AT+ CMGF=1 
AT+CMGS="Mobno." //after this i get the error.

我无法通过 minicom + SIM900A GSM 模块发送消息,我想用 Arduino 对其进行测试。我认为我的 SIM 或任一模块的设置有问题。我什至尝试重置 SIM 的设置,但没有解决了。

4

3 回答 3

0

首先:永远,永远不要通过解析调制解调器给出的实际响应来使用延迟而不是适当的等待。您必须回读调制解调器给出的响应并等待最终结果代码,然后再继续执行下一个命令。看到这个答案这个答案有关更多详细信息(尤其是关于正确AT+CMGS处理)

27.005节中定义了所有 CMS 错误的列表3.2.5 Message Service Failure Result Code +CMS ERROR。您的订阅是否允许发送短信(很可能,但只是为了确保检查这一点。使用插入另一部手机的此 SIM 卡测试发送短信)?您使用的是什么消息存储?您确定 gsm 模块支持文本模式吗?

于 2013-07-28T22:51:01.767 回答
0

我解决了这个问题,只需使用以下代码:

void setup()
{ 
  Serial.begin(9600);
  delay(10000); 
}
void loop()
{
  Serial.println("ATD+60148266823;"); //where xxxxxxxxxx is  a 10 digit mobile number
  delay(30000); // wait 20 seconds.
  Serial.println("ATH"); // end call
  do // remove this loop at your peril
  { 
    delay(1); 
  } while (1>0);
}
于 2014-11-18T16:40:44.713 回答
0
void setup(){ 
    Serial.begin(9600); 
} 
void loop(){
    Serial.println("AT");
    delay(500);
    Serial.print("ATD");
    Serial.println("99XXXXXXX8;");
    delay(20000);
    Serial.println("ATH");
}
于 2016-08-22T04:51:22.783 回答