mc.six 发表于 2015-3-27 16:27:34

发送彩信的子程序测试成功,大家可以参考并完善

本帖最后由 mc.six 于 2015-3-27 16:36 编辑

一个发送彩信的子程序测试成功,大家可以参考并完善,用的是SIM900A


代码如下:

char SendMMS(String Tit,String MSG,String PHnum)
{

                   Serial.print("Tit========");Serial.println(Tit);       //测试一下标题传送进来没有
                  Serial.print("MSG======="); Serial.println(MSG);       //测试一下彩信内容传送进来没有
                  Serial.print("PHnum====="); Serial.println(PHnum);   //测试一下手机号码传送进来没有

////////////////////////////////////////////////////////////////////////////////
Serial1.println("AT+CGATT=?");//因为彩信用HTTP协议发送,建立在GPRS之上所以必须查询网络附着情况AT+CMMSINIT
delay(1000);
while(Serial1.available())
{
TEMPdata+=char(Serial1.read());
}
Serial.print(TEMPdata);                              //打印出AT指令返回的信息,看是否OK   
TEMPdata="";
Serial.println("");

Serial1.println("AT+CMMSINIT");                     //初始化彩信功能
delay(1000);
while(Serial1.available())
{
TEMPdata+=char(Serial1.read());
}

Serial.print(TEMPdata);                              //打印出AT指令返回的信息,看是否OK   
TEMPdata="";
Serial.println("");

Serial1.println("AT+CMMSCURL=\"mmsc.monternet.com\"");//配置中国移动手机彩信中心地址
delay(2000);
while(Serial1.available())
{
TEMPdata+=char(Serial1.read());
}

Serial.print(TEMPdata);                              //打印出AT指令返回的信息,看是否OK   
TEMPdata="";
Serial.println("");

Serial1.println("AT+CMMSCID=1");//设置承载上下文ID
delay(1000);
while(Serial1.available())
{
TEMPdata+=char(Serial1.read());
}

Serial.print(TEMPdata);                              //打印出AT指令返回的信息,看是否OK   
TEMPdata="";
Serial.println("");

Serial1.println("AT+CMMSPROTO=\"10.0.0.172\",80");   
delay(1000);
while(Serial1.available())
{
TEMPdata+=char(Serial1.read());
}

Serial.print(TEMPdata);                              //打印出AT指令返回的信息,看是否OK   
TEMPdata="";
Serial.println("");
Serial1.println("AT+CMMSSENDCFG=6,3,0,0,2,4");
delay(1000);
while(Serial1.available())
{
TEMPdata+=char(Serial1.read());
}

Serial.print(TEMPdata);                              //打印出AT指令返回的信息,看是否OK   
TEMPdata="";
Serial.println("");

////////////////////////////////////////////////////////////激活承载

Serial1.println("AT+SAPBR=3,1,\"Contype\",\"GPRS\"");
delay(1000);
while(Serial1.available())
{
TEMPdata+=char(Serial1.read());
}

Serial.print(TEMPdata);                              //打印出AT指令返回的信息,看是否OK   
TEMPdata="";
Serial.println("");

Serial1.println("AT+SAPBR=3,1,\"APN\",\"CMWAP\"");
delay(1000);
while(Serial1.available())
{
TEMPdata+=char(Serial1.read());
}

Serial.print(TEMPdata);                              //打印出AT指令返回的信息,看是否OK   
TEMPdata="";
Serial.println("");

Serial1.println("AT+SAPBR=1,1");
delay(1000);Serial.println("");
while(Serial1.available())
{
TEMPdata+=char(Serial1.read());
}
delay(200);
Serial.print(TEMPdata);                              //打印出AT指令返回的信息,看是否OK   
TEMPdata="";
Serial.println("");

Serial1.println("AT+SAPBR=2,1");
delay(1000);
while(Serial1.available())
{
TEMPdata+=char(Serial1.read());
}

Serial.print(TEMPdata);                              //打印出AT指令返回的信息,看是否OK   
TEMPdata="";
Serial.println("");

////////////////////////////////////////////////////发送
delay(200);
Serial1.println("AT+CMMSEDIT=1");
delay(1000);Serial.println("");
while(Serial1.available())
{
TEMPdata+=char(Serial1.read());
}

Serial.print(TEMPdata);                              //打印出AT指令返回的信息,看是否OK   
TEMPdata="";
Serial.println("");
//Serial1.println("AT+CMMSDOWN=\"PIC\",7955,50000");//使用例程中的JPG格式图片,目前没有测试,所以注释掉了
delay(200);
titlen =Tit.length()+2;
//Serial1.println("AT+CMMSDOWN=\"TITLE\",8,50000");
Serial1.print("AT+CMMSDOWN=\"TITLE\",");
Serial1.print( titlen );                               // 彩信标题的长度
Serial.print( Tit );Serial.println( titlen );
Serial1.println(",50000");
delay(1000);
while(Serial1.available())
{
TEMPdata+=char(Serial1.read());
}

Serial.print(TEMPdata);                              //打印出AT指令返回的信息,看是否OK   
TEMPdata="";
Serial.println("");

Serial1.println(Tit);                  //发送彩信标题
delay(1000);
Serial.println(Tit);
while(Serial1.available())
{
TEMPdata+=char(Serial1.read());
}

Serial.print(TEMPdata);                              //打印出AT指令返回的信息,看是否OK   
TEMPdata="";
Serial.println("");
MSGlen=MSG.length();
//Serial1.println("AT+CMMSDOWN=\"TEXT\",270,50000");   //完整的设置内容的AT命令代码270是长度可以根据内容长度更改
Serial1.print("AT+CMMSDOWN=\"TEXT\",");
Serial1.print(MSGlen);                           //彩信内容的长度
Serial.print( MSG);Serial.println( MSGlen);
Serial1.println(",50000");
delay(1000);
while(Serial1.available())
{
TEMPdata+=char(Serial1.read());
}
delay(200);
Serial.print(TEMPdata);                              //打印出AT指令返回的信息,看是否OK   
TEMPdata="";
Serial.println("");
Serial1.println(MSG);                  //彩信内容

//Serial.write(test,12);Serial.println("");
Serial.println();
delay(1000);
while(Serial1.available())
{
TEMPdata+=char(Serial1.read());
delay(1);
}
delay(200);
Serial.print(TEMPdata);                              //打印出AT指令返回的信息,看是否OK   
TEMPdata="";
Serial.println("");

Serial1.println("AT+CMMSCC=\"[email protected]\"");      //发送至邮箱
delay(1000);
while(Serial1.available())
{
TEMPdata+=char(Serial1.read());
}
delay(200);
Serial.print(TEMPdata);                              //打印出AT指令返回的信息,看是否OK   
TEMPdata="";
Serial.println("");

//Serial1.println("AT+CMMSRECP=\"14403220001\"");          //完整的设置接收号码的AT命令代码
Serial1.print("AT+CMMSRECP=");
Serial1.print("\"");
Serial1.print(PHnum);                     ////////////////目的手机号,务必保证手机号开通GPRS业务
Serial1.println("\"");
delay(1000);
while(Serial1.available())
{
TEMPdata+=char(Serial1.read());
}
delay(200);
Serial.print(TEMPdata);                              //打印出AT指令返回的信息,看是否OK   
TEMPdata="";
Serial.println("");

Serial1.println("AT+CMMSSEND");///////////////////////发送结束后关闭
delay(5000);
while(Serial1.available())
{
TEMPdata+=char(Serial1.read());
}
delay(200);
Serial.print(TEMPdata);                              //打印出AT指令返回的信息,看是否OK   
TEMPdata="";
Serial.println("");

Serial1.println("AT+CMMSEDIT=0");///////////////退出配置模式
delay(1000);
while(Serial1.available())
{
TEMPdata+=char(Serial1.read());
}
delay(200);
Serial.print(TEMPdata);                              //打印出AT指令返回的信息,看是否OK   
TEMPdata="";
Serial.println("");
///////////////////////////退出承载////////////////////////////////////////
Serial1.println("AT+SAPBR=0,1");
delay(1000);
while(Serial1.available())
{
TEMPdata+=char(Serial1.read());
}
delay(200);
Serial.print(TEMPdata);                              //打印出AT指令返回的信息,看是否OK   
TEMPdata="";
Serial.println("");
/////////////////////////////////退出彩信功能/////////////////////////////
Serial1.println("AT+CMMSTERM");
delay(1000);
while(Serial1.available())
{
TEMPdata+=char(Serial1.read());
}
delay(200);
Serial.print(TEMPdata);                              //打印出AT指令返回的信息,看是否OK   
TEMPdata="";
Serial.println("");

//////////////////////////////////////////////////////////////
}

mc.six 发表于 2015-3-27 18:57:17

自己消灭零回复

菜鸟一个 发表于 2015-3-27 20:55:14

good,学习学习

mc.six 发表于 2015-3-27 22:11:56

本人也是才学了两个多月的菜菜鸟,哈哈哈

suoma 发表于 2015-3-28 18:20:55

SIM900是不是集成GPS功能?期待实现GPS

mc.six 发表于 2015-3-28 21:59:09

suoma 发表于 2015-3-28 18:20 static/image/common/back.gif
SIM900是不是集成GPS功能?期待实现GPS

没有,sim908集成了,百度一下有908的例子
页: [1]
查看完整版本: 发送彩信的子程序测试成功,大家可以参考并完善