Arduino在GSM sim900中发送sms错误
我有一个Arduino Mega 2560和一个sim900 gsm模块。 我成功地与他们接口并编写了代码。它的工作,但我只能发送1条短信在一个时间在while循环。这意味着当我编写一个while循环时,使用while循环执行sendsms()5次。只发送一条短信。。它停止了 代码如下:Arduino在GSM sim900中发送sms错误,sms,arduino,gsm,at-command,Sms,Arduino,Gsm,At Command,我有一个Arduino Mega 2560和一个sim900 gsm模块。 我成功地与他们接口并编写了代码。它的工作,但我只能发送1条短信在一个时间在while循环。这意味着当我编写一个while循环时,使用while循环执行sendsms()5次。只发送一条短信。。它停止了 代码如下: #include <SoftwareSerial.h> #include <String.h> SoftwareSerial mySerial(52, 53); void setup(
#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();
}
#包括
#包括
软件序列mySerial(52,53);
无效设置()
{
mySerial.begin(19200);//GPRS波特率
Serial.begin(19200);//GPRS波特率
延迟(500);
}
int x=0;
循环()
{
而(x您不能仅以100mS的延迟在SIM900上转储AT命令,并期望它工作。SIM900响应AT命令(通常为“OK”),您应该等待此响应,然后再发出下一个命令。只有在AT命令之间提供足够的延迟,以确保每个命令仅在SIM900有足够的时间响应前一个命令后发送,您才能忽略这些响应。为了快速验证这一点,我将添加延迟(10000)-10秒延迟-在sendTextMessage()函数的末尾。这将(可能)给SIM900足够的时间来完成SMS传输,然后再进行下一次传输。确保仅为测试目的而尝试10秒延迟。对于真正的代码,您必须(如回答开头所述)读取并解析从调制解调器接收到的所有信息。绝不,绝不,绝不,绝不使用延迟等待任何AT命令响应。这就像踢挡在你面前的狗以让它们移动一样有用。是的,有时它可能确实有效,但在某个时候,你会为采用这种方法感到抱歉……了解有关如何使用此道具的更多提示呃,请参阅第一部分或与之相关的部分以了解更多详细信息。先生,实际上,我的程序在执行时应该发送10个数字的短信。同时,连接到arduino的rfid阅读器也应该工作。因此,如果我需要在每个短信命令后等待10秒,我的系统就没用了。hlovdal>你说的是什么意思“读取并解析从调制解调器接收到的所有内容。”请用代码示例进行解释。谢谢
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);
}