我有一个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();
}
答案 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);
}