Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arduino Sim900没有回音,但发送了短信_Arduino_Sms_At Command_Sim900 - Fatal编程技术网

Arduino Sim900没有回音,但发送了短信

Arduino Sim900没有回音,但发送了短信,arduino,sms,at-command,sim900,Arduino,Sms,At Command,Sim900,我刚买了一台新的Sim900,连接了一台Arduino Uno。我用下面的代码给自己发了一条短信。我在手机上收到了文本,但在串行监视器上没有收到任何回音(即“OK”)。我尝试过交换RX/TX引脚和不同的波特率,但没有成功 决不能,决不能,决不能使用delay代替读取和解析从调制解调器发送回来的响应。现在,我确实认识到这是一个有点讽刺意味的建议,因为问题是您没有得到任何响应,但无论如何,您都应该在得到响应的那一刻,而不是一秒钟之后,使用delay丢弃此代码 为了强调这一点,在向调制解调器发送AT

我刚买了一台新的Sim900,连接了一台Arduino Uno。我用下面的代码给自己发了一条短信。我在手机上收到了文本,但在串行监视器上没有收到任何回音(即“OK”)。我尝试过交换RX/TX引脚和不同的波特率,但没有成功



决不能,决不能,决不能使用
delay
代替读取和解析从调制解调器发送回来的响应。现在,我确实认识到这是一个有点讽刺意味的建议,因为问题是您没有得到任何响应,但无论如何,您都应该在得到响应的那一刻,而不是一秒钟之后,使用delay丢弃此代码

为了强调这一点,在向调制解调器发送AT命令行后,在调制解调器以最终结果代码响应之前,不应发送任何内容。标准上说:

最终结果代码表示完整DCE操作的完成,以及 愿意接受DTE的新命令

如果在收到最终结果代码之前发送任何内容,则将中止当前正在执行的命令


我不知道这个sim900调制解调器,但请注意,一般情况下,调制解调器可以配置为不回显字符和抑制结果代码(
ATE
ATQ
命令),因此,除非您完全确定调制解调器配置为回显字符和打印结果代码,否则这应该是您首先要检查的

所有这些都在V.250标准中进行了描述,该标准是一个标准。阅读第5章的所有内容,并密切注意第6.2章DTE-DCE接口命令



与手机相关的命令通常在中指定,但与sms消息相关的命令在中指定。请务必密切注意这样一个事实,即对于AT+CMGS,您尤其需要在发送sms有效负载之前等待接收““\n\r>”。

正如@hlovdal所说,在消息之间使用延迟是一个坏主意。您必须等待每个命令的答案,并根据答案采取行动(或因为超时)


假设这就是您的全部代码,您将跳过读取串行端口的部分。就像您执行serial.write一样,您必须使用serial.read来获取传入字符。也许这就是你没有收到任何东西的原因



最后,Arduino UNO有一个UART端口,因此如果您想使用串行监视器进行调试,您必须使用SoftwareSerial与SIM900通信。

您能显示您的屏蔽和设置吗?
void setup()
{
  Serial.begin(9600);  //Baud rate of the GSM/GPRS Module 
  Serial.println("");
  delay(2000);                  
  Serial.println("AT+CMGF=1");    
  delay(1000);
  Serial.println("AT+CMGS=\"+120########\"");    //Number to which you want to send the sms
  delay(1000);
  Serial.print("This is a test.");   //The text of the message to be sent
  delay(1000);
  Serial.write(0x1A); // send CTRL - z to end message
  Serial.write(0x0D); // Carriage Return
  Serial.write(0x0A); // Line Feed
  delay(5000); 
 }

void loop()
{
}