本帖最后由 mc.six 于 2015-3-27 16:36 编辑
一个- 发送彩信的子程序测试成功,大家可以参考并完善,用的是SIM900A
- 代码如下:
- [code]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("");
- //////////////////////////////////////////////////////////////
- }
复制代码 |