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