极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 9595|回复: 5

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

[复制链接]
发表于 2015-3-27 16:27:34 | 显示全部楼层 |阅读模式
本帖最后由 mc.six 于 2015-3-27 16:36 编辑

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


  2. 代码如下:

  3. [code]char SendMMS(String Tit,String MSG,String PHnum)
  4. {

  5.                    Serial.print("Tit========");  Serial.println(Tit);       //测试一下标题传送进来没有
  6.                     Serial.print("MSG======="); Serial.println(MSG);       //测试一下彩信内容传送进来没有
  7.                     Serial.print("PHnum====="); Serial.println(PHnum);   //测试一下手机号码传送进来没有
  8.   
  9. ////////////////////////////////////////////////////////////////////////////////
  10. Serial1.println("AT+CGATT=?");//因为彩信用HTTP协议发送,建立在GPRS之上所以必须查询网络附着情况AT+CMMSINIT
  11. delay(1000);
  12. while(Serial1.available())
  13. {
  14. TEMPdata+=char(Serial1.read());
  15. }
  16. Serial.print(TEMPdata);                                //打印出AT指令返回的信息,看是否OK   
  17. TEMPdata="";
  18. Serial.println("");

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

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

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

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

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

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

  46. Serial1.println("AT+CMMSPROTO="10.0.0.172",80");     
  47.   delay(1000);
  48. while(Serial1.available())
  49. {
  50. TEMPdata+=char(Serial1.read());
  51. }

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

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

  64. ////////////////////////////////////////////////////////////激活承载

  65. Serial1.println("AT+SAPBR=3,1,"Contype","GPRS"");
  66.   delay(1000);
  67. while(Serial1.available())
  68. {
  69. TEMPdata+=char(Serial1.read());
  70. }

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

  74. Serial1.println("AT+SAPBR=3,1,"APN","CMWAP"");
  75.   delay(1000);
  76. while(Serial1.available())
  77. {
  78. TEMPdata+=char(Serial1.read());
  79. }

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

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

  93. Serial1.println("AT+SAPBR=2,1");
  94.   delay(1000);
  95. while(Serial1.available())
  96. {
  97. TEMPdata+=char(Serial1.read());
  98. }

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

  102. ////////////////////////////////////////////////////发送
  103. delay(200);
  104. Serial1.println("AT+CMMSEDIT=1");
  105.   delay(1000);Serial.println("");
  106. while(Serial1.available())
  107. {
  108. TEMPdata+=char(Serial1.read());
  109. }

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

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

  129. Serial1.println(Tit);                  //发送彩信标题
  130.   delay(1000);
  131. Serial.println(Tit);
  132. while(Serial1.available())
  133. {
  134. TEMPdata+=char(Serial1.read());
  135. }

  136. Serial.print(TEMPdata);                              //打印出AT指令返回的信息,看是否OK   
  137. TEMPdata="";
  138. Serial.println("");
  139. MSGlen=MSG.length();
  140. //Serial1.println("AT+CMMSDOWN="TEXT",270,50000");   //完整的设置内容的AT命令代码  270是长度可以根据内容长度更改
  141. Serial1.print("AT+CMMSDOWN="TEXT",");
  142. Serial1.print(MSGlen);                           //彩信内容的长度
  143. Serial.print( MSG);Serial.println( MSGlen);
  144. Serial1.println(",50000");
  145.   delay(1000);
  146. while(Serial1.available())
  147. {
  148. TEMPdata+=char(Serial1.read());
  149. }
  150. delay(200);
  151. Serial.print(TEMPdata);                              //打印出AT指令返回的信息,看是否OK   
  152. TEMPdata="";
  153. Serial.println("");
  154. Serial1.println(MSG);                    //彩信内容

  155. //Serial.write(test,12);Serial.println("");
  156. Serial.println();
  157.   delay(1000);
  158. while(Serial1.available())
  159. {
  160. TEMPdata+=char(Serial1.read());
  161. delay(1);
  162. }
  163. delay(200);
  164. Serial.print(TEMPdata);                              //打印出AT指令返回的信息,看是否OK   
  165. TEMPdata="";
  166. Serial.println("");

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

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

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

  201. Serial1.println("AT+CMMSEDIT=0");///////////////退出配置模式
  202.   delay(1000);
  203. while(Serial1.available())
  204. {
  205. TEMPdata+=char(Serial1.read());
  206. }
  207. delay(200);
  208. Serial.print(TEMPdata);                              //打印出AT指令返回的信息,看是否OK   
  209. TEMPdata="";
  210. Serial.println("");
  211. ///////////////////////////退出承载////////////////////////////////////////
  212. Serial1.println("AT+SAPBR=0,1");
  213.   delay(1000);
  214. while(Serial1.available())
  215. {
  216. TEMPdata+=char(Serial1.read());
  217. }
  218. delay(200);
  219. Serial.print(TEMPdata);                              //打印出AT指令返回的信息,看是否OK   
  220. TEMPdata="";
  221. Serial.println("");
  222. /////////////////////////////////退出彩信功能/////////////////////////////
  223. Serial1.println("AT+CMMSTERM");
  224.   delay(1000);
  225. while(Serial1.available())
  226. {
  227. TEMPdata+=char(Serial1.read());
  228. }
  229. delay(200);
  230. Serial.print(TEMPdata);                              //打印出AT指令返回的信息,看是否OK   
  231. TEMPdata="";
  232. Serial.println("");

  233. //////////////////////////////////////////////////////////////
  234. }
复制代码
回复

使用道具 举报

 楼主| 发表于 2015-3-27 18:57:17 | 显示全部楼层
自己消灭零回复
回复 支持 反对

使用道具 举报

发表于 2015-3-27 20:55:14 | 显示全部楼层
good,学习学习
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-3-27 22:11:56 | 显示全部楼层
本人也是才学了两个多月的菜菜鸟,哈哈哈
回复 支持 反对

使用道具 举报

发表于 2015-3-28 18:20:55 | 显示全部楼层
SIM900是不是集成GPS功能?期待实现GPS
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-3-28 21:59:09 | 显示全部楼层
suoma 发表于 2015-3-28 18:20
SIM900是不是集成GPS功能?期待实现GPS

没有,sim908集成了,百度一下有908的例子
回复 支持 反对

使用道具 举报

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

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

Archiver|联系我们|极客工坊

GMT+8, 2024-4-27 13:11 , Processed in 0.041121 second(s), 19 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

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