ruan2570406 发表于 2016-3-21 14:59:36

mega2560做的SIM900A模块接收任意短信后发送短信。为什么不行

本帖最后由 ruan2570406 于 2016-3-21 15:04 编辑

#include <Arduino.h>
boolean test_boot=false;
boolean test_net_register=false;
const int LED = 13;
const int Power_key=2;
void setup()
{
pinMode(LED, OUTPUT);
pinMode(Power_key, OUTPUT);
Serial.begin(9600);
Serial1.begin(9600);
digitalWrite(Power_key,LOW);
}
void loop()
{
receiveMessage();   
}


/*.................................*/
void SendMessage()
{
   Serial.println("begin!");
//GSM启动
digitalWrite(Power_key,HIGH);
delay(1000);
digitalWrite(Power_key,LOW);
   
//测试GSM是否启动
while(test_boot==false)
{
    Serial1.println("AT");
    while (Serial1.available() > 0)
    {
      char comdata;
      comdata = char(Serial1.read());
      delay(2);
      if(comdata='K')
      test_boot=true;
    }
    delay(300);
}
Serial.println("boot is ok!");

//测试SIM卡是否已经注册网络
while(test_net_register==false)
{
    Serial1.println("AT+COPS?");
    unsigned char comdata;
    unsigned char GSMDATA_count=0;
    while (Serial1.available() > 0)
    {
      unsigned char comdata_bytes;
      comdata_bytes = char(Serial1.read());
      delay(2);
      if(comdata_bytes=='\n')
      {      
      if(comdata=='C')
          test_net_register=true;
      GSMDATA_count=0;
      }
      else
      {
      comdata =comdata_bytes;
      GSMDATA_count++;
      }
    }
    delay(1000);
}
Serial.println("sim register is ok!");


Serial1.println("AT+CMGF=1");
delay(200);
Serial1.println("AT+CSMP=17,167,2,25");
delay(200);
Serial1.println("AT+CSCS=\"UCS2\"");
delay(200);
Serial1.println("AT+CMGS=\"00310030003000380036\"");//此处填写的是自己的手机号码
delay(200);
Serial1.print("006C006F006E0020003100320031002E003400380037002C006C00610074002000320039002E003800390032");
delay(200);
Serial1.write(30);
delay(200);
Serial.println("send over!");
delay(30000);

//关闭GSM
digitalWrite(Power_key,HIGH);
delay(1000);
digitalWrite(Power_key,LOW);


    digitalWrite(LED,LOW);
    delay(1000);
    digitalWrite(LED,HIGH);
    delay(1000);

}

/*.........................*/
void receiveMessage()      
{
if(Serial1.available() > 0 )
{
   SendMessage();

}
}


以上是程序 我想用mega2560+sim900A做一个手机发送一条任意一条短信给SIM900A模块然后模块再返回一条短信。
为什么手机收不到短信。光发送短信是可以的,而且我
if(Serial1.available() > 0 )
{
   SendMessage();

}
通过蓝牙接串口1是可以实现的,我把sim900A接串口调试软件然后发送短信是也是有提示的
但是我接sim900a就收不到短信呢?
求大神帮忙QQ495679329.

我把sim900A接串口调试软件然后发送短信是有提示的

ruan2570406 发表于 2016-4-7 10:57:08

:L:L:L:L:L
页: [1]
查看完整版本: mega2560做的SIM900A模块接收任意短信后发送短信。为什么不行