我有一个Arduino Mega2560和一个sim900全球移动通信系统模块。我成功地将它们连接起来,并编写了代码。它的工作,但我只能发送一条短信在while循环的时间。这意味着当我编写一个while循环来使用while循环执行sendsms() 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();
}
发布于 2014-04-06 07:13:04
你不能就这样把你的AT命令延迟100mS的转储到SIM900上,然后期望它能工作。SIM900响应AT命令(通常使用"OK"),您应该等待此响应,然后再发出下一个命令。只有在AT命令之间提供足够的延迟,以确保每个命令只在SIM900有足够的时间响应前一个命令之后发送,才能忽略这些响应。为了快速验证这一点,我将在sendTextMessage()函数的末尾添加一个延迟(10000)-一个10秒的延迟。这将(可能)给SIM900足够的时间在进入下一个之前完成短消息传输。
发布于 2016-04-25 04:29:17
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);
}
https://stackoverflow.com/questions/22877262
复制