Arduino在GSM sim900错误中发送短信

时间:2014-04-05 06:10:08

标签: sms arduino gsm at-command

我有一个Arduino Mega 2560和一个sim900 gsm模块。 我成功地连接它们并编写代码。它工作,但我只能在while循环中一次发送1个短信。这意味着当我写一个while循环来使用while循环执行transmitms()5次。只发送了一个短信..它停止了......

代码如下:

#include <SoftwareSerial.h>
#include <String.h>
SoftwareSerial mySerial(52, 53);

void setup()
{
     mySerial.begin(19200);      // the GPRS baud rate   
     Serial.begin(19200);    // the GPRS baud rate 
     delay(500);

}

int x = 0;

loop()
{

    while (x<5)
    {
     SendTextMessage();  
     x++;
     }  

 }


void SendTextMessage()
{
 mySerial.print("AT+CMGF=1\r");
 delay(100);
 mySerial.println("AT + CMGS = \"+94776511996\"");
 delay(100);
 mySerial.println("hey wow");
 delay(100);
 mySerial.println((char)26);
 delay(100);
 mySerial.println();
}

2 个答案:

答案 0 :(得分:2)

您不能只在ED900上以100毫秒的延迟转储AT命令,并期望它能够正常工作。 SIM900响应AT命令(通常为“OK”),您应该在发出下一个命令之前等待此响应。只有在AT命令之间提供足够的延迟以确保每个命令仅在SIM900有足够的时间响应前一个命令后发送时,您才可以忽略这些响应。为了快速验证这一点,我会在sendTextMessage()函数的末尾添加一个延迟(10000) - 一个10秒的延迟。这将(可能)给SIM900足够的时间来完成SMS传输,然后再转到下一个。

答案 1 :(得分:0)

void SendTextMessage(){
  mySerial.write("AT+CMGF=1\r\n");
  delay(1000); 
  mySerial.write("AT+CMGS=\"+94776511996\"\r\n");
  delay(1000);
  mySerial.write("Test");
  delay(1000);   
  mySerial.write((char)26);
  delay(2000);
  }