如果我输入/读取串行监控器,使用不同的电话号码,为什么Arduino mega和SIM900不会发送消息?

问题描述 投票:0回答:1

我是arduino和gsm sim900的新手,我目前正在与该项目合作,当学生扫描其条形码时,它将把出勤率输入数据库并将短信发送给其监护人。我的问题是,当我尝试输入“ serial.available”和“ readString(phonenumber)”之类的不同数字时,它不会发送消息,没有错误,并且sim卡有电子负载/。对不起,语法不好。这是代码:

#include <SoftwareSerial.h>
SoftwareSerial SIM900A(6,7);
String number;
void setup()
{
  SIM900A.begin(9600);
  Serial.begin(9600);
  Serial.println ("SIM900A Ready");
  delay(100);
 Serial.print("Enter PHONE NUMBER: ");
 while(Serial.available()==0){}          //INPUT PHONE NUMBER
 number = Serial.readString();
 delay(500);
  Serial.println ("Type s to send message or r to receive message");

}
void loop()
{
  if (Serial.available()>0)
   switch(Serial.read())
  {
    case 's':
      SendMessage();
      break;
    case 'r':
      RecieveMessage();
      break;
  }
 if (SIM900A.available()>0)
   Serial.write(SIM900A.read());
}
 void SendMessage()
{
  Serial.println ("Sending Message");
  SIM900A.println("AT+CMGF=1");
  delay(1000);
  Serial.println ("Set SMS Number");
  SIM900A.print("AT+CMGS=\""+number+"\"\r");   //send to input phone number
  delay(1000);
  Serial.print(number);
  delay(500);
  Serial.println ("Set SMS Content");
  SIM900A.print("Message from ArduinoGSMSIM900");
  delay(100);
  Serial.println ("Finish");
  SIM900A.println((char)26);
  delay(1000);
  Serial.println ("Message has been sent");
}
 void RecieveMessage()
{
  Serial.println ("SIM900A Membaca SMS");
  delay (1000);
  SIM900A.println("AT+CNMI=2,2,0,0,0");
  delay(1000);
  Serial.write ("Unread Message done");
}

[请帮助我,谢谢!

arduino sms gsm sim900
1个回答
0
投票

如果您阅读SoftwareSerial库documentation,您会注意到它说:

该库具有以下已知限制:

并非Mega和Mega 2560上的所有引脚都支持更改中断,因此只能将以下内容用于RX:10、11、12、13、14、15、50、51、52、53,A8(62), A9(63),A10(64),A11(65),A12(66),A13(67),A14(68),A15(69)。

因此,将SoftwareSerial SIM900A(6,7);上的行更改为引脚6和7以外的其他线。

© www.soinside.com 2019 - 2024. All rights reserved.