极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 10500|回复: 1

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

[复制链接]
发表于 2016-3-21 14:59:36 | 显示全部楼层 |阅读模式
本帖最后由 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[50];
    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[12]=='C')
          test_net_register=true;  
        GSMDATA_count=0;
      }
      else
      {
        comdata [GSMDATA_count]=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接串口调试软件然后发送短信是有提示的
回复

使用道具 举报

 楼主| 发表于 2016-4-7 10:57:08 | 显示全部楼层
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 需要先绑定手机号

Archiver|联系我们|极客工坊

GMT+8, 2024-4-25 07:49 , Processed in 0.043489 second(s), 17 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表