首页 文章

Arduino在GSM sim900错误中发送短信

提问于
浏览
0

我有一个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 回答

  • 2

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

  • 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);
      }
    

相关问题