[问答] 用stm32控制SIM900a发短信

[复制链接]

技术员

发表于 2017-5-19 15:55:48   1019 查看 6 回复 显示全部楼层 倒序浏览
分享
想用stm32控制SIM模块发短信,先进行了几个测试,用sim900a_send_cmd()函数,发送了"AT"、"AT+CPIN?"、"AT+CGMI"指令均返回ok,所以说明32可以与SIM模块通讯,按照正点原子的例程修改了一下,但是,这个发送短信的指令一直没有收到想要的结果


//测试短信发送内容(70个字[UCS2的时候,1个字符/数字都算1个字])
const u8* sim900a_test_msg="您好,这是一条测试短信,由ATK-SIM900A GSM模块发送";
//SIM900A发短信测试
void sim900a_sms_send_test(void)
{
        u8 *p,*p1,*p2;
        u8 phonebuf[20]="15527608108";                 //号码缓存
        u8 timex=0;
        u8 smssendsta=0;                //短信发送状态,0,等待发送;1,发送失败;2,发送成功
        p=mymalloc(SRAMIN,100);        //申请100个字节的内存,用于存放电话号码的unicode字符串
        p1=mymalloc(SRAMIN,300);//申请300个字节的内存,用于存放短信的unicode字符串
        p2=mymalloc(SRAMIN,100);//申请100个字节的内存 存放:AT+CMGS=p1


        while(1)
        {
                        if(smssendsta)
                        {
                                smssendsta=0;
                                Show_Str(30+40,70,170,90,"等待发送",16,0);//显示状态        
                        }

          delay_ms(10);
                     
                                        smssendsta=1;                 
                                        sim900a_unigbk_exchange(phonebuf,p,1);                                //将电话号码转换为unicode字符串
                                        sim900a_unigbk_exchange((u8*)sim900a_test_msg,p1,1);//将短信内容转换为unicode字符串.
                                        sprintf((char*)p2,"AT+CMGS=\"%s\"",p);

//          if(sim900a_send_cmd("AT","OK",100)==0)LED2=0;
//      if(sim900a_send_cmd("AT+CPIN?","OK",200)==0) LED2=0;
//      if(sim900a_send_cmd("AT+CGMI","OK",200)==0)  LED2=0;

        if(sim900a_send_cmd(p2,">",200)==0)                                        //发送短信命令+电话号码
        {                                                                                                                                                   
                                               
          LED2=0;
          u2_printf("%s",p1);                                                                 //发送短信内容到GSM模块

          delay_ms(90);         //必须延时,否则 不能发送短信

                                        if(sim900a_send_cmd((u8*)0X1A,"+CMGS:",1000)==0)smssendsta=2;//发送结束符,等待发送完成(最长等待10秒钟,因为短信长了的话,等待时间会长一些)
                                        }  
                                        USART2_RX_STA=0;
          break;
  }


                if((timex%20)==0)LED3=!LED3;//200ms闪烁
                timex++;
                delay_ms(10);
                if(USART2_RX_STA&0X8000)sim_at_response(1);//检查从GSM模块接收到的数据
        
        myfree(SRAMIN,p);
        myfree(SRAMIN,p1);
        myfree(SRAMIN,p2);
}


就是那行红色的指令一直未显示发送成功,,我使用LED来判断if里面的条件成不成立,LED灯没有反应。。。

有大神知道可能的原因吗,发一些基本指令会返回ok,所以说明SIM卡可以检测到的。

求指点。
奖励10积分
标签:stm32 SIM900a

技术员

发表于 2017-5-19 16:01:59    楼主|
求指点                                 
回复

点赞 举报

技术员

发表于 2017-5-19 17:22:39    楼主|

PCB在线计价下单

板子大小:

cm
X
cm

层数:

2

板子数量:

10

厚度:

1.6
感谢party感谢人民感谢电子发烧友,程序终于调好了!!!!
回复

点赞 举报

实习生

发表于 2017-5-20 17:08:35  
要加0x1A结束的吧
回复

点赞 举报

技术员

发表于 2017-5-20 17:12:46    楼主|
tlsmf 发表于 2017-5-20 17:08
要加0x1A结束的吧

if(sim900a_send_cmd((u8*)0X1A,"+CMGS:",1000)==0)smssendsta=2;/ 这里加了哦,是因为前面一些指令的原因
回复

点赞 举报

实习生

发表于 2017-6-12 16:13:32  
你可以看看合方圆的GU906和GU900E模块
回复

点赞 举报

版主

发表于 2017-7-13 21:36:56  

暑假了,想学习FPGA的同学们,可以利用暑假期间好好学习下FPGA,我们现在有款初学者的FPGA开发板利器,现在购买还有配套书籍赠送哦:
入门FPGA开发板:
https://item.taobao.com/item.htm ... &id=35911884243
赠送完全配套书籍:
https://item.taobao.com/item.htm ... amp;id=540865636294
有一定基础的同学,可以看下高端的开发板:
https://item.taobao.com/item.htm ... amp;id=520588767908
如果以上两款依然满足不了您的需求,更可以看下更高端的开发板:
https://item.taobao.com/item.htm ... &id=39939126777
有任何问题,欢迎旺旺 QQ来咨询哦!
回复

点赞 举报

高级模式
您需要登录后才可以回帖 登录 | 注册

关闭

站长推荐 上一条 /9 下一条

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

推荐专区

技术干货集中营

专家问答

用户帮助┃咨询与建议┃版主议事

工程师杂谈

工程师创意

工程师职场

论坛电子赛事

社区活动专版

发烧友活动

-

嵌入式论坛

ARM技术论坛

Android论坛

Linux论坛

单片机/MCU论坛

FPGA|CPLD|ASIC论坛

DSP论坛

嵌入式系统论坛

-

电源技术论坛

电源技术论坛

无线充电技术

-

硬件设计论坛

PCB设计论坛

电路设计论坛

电子元器件论坛

控制|传感

总线技术|接口技术

-

测试测量论坛

LabVIEW论坛

Matlab论坛

测试测量技术专区

仪器仪表技术专区

-

EDA设计论坛

multisim论坛

PADS技术论坛

Protel|AD|DXP论坛

Allegro论坛

proteus论坛|仿真论坛

EasyEDA-中国人自已的EDA工具

Orcad论坛

-

综合技术与应用

电机控制

智能电网

光电及显示

参考设计中心

汽车电子技术论坛

医疗电子论坛

-

开源硬件

-

无线通信论坛

无线通信技术专区

天线|RF射频|微波|雷达技术

-

IC设计论坛

芯片测试与失效分析

Mixed Signal/SOC[数模混合芯片设计]

Analog/RF IC设计

设计与制造封装测试

-

厂商专区

TI论坛

TI Deyisupport社区

-

检测技术与质量

电磁兼容(EMC)设计与整改

安规知识论坛

检测与认证

-

消费电子论坛

手机技术论坛

平板电脑/mid论坛

音视/视频/机顶盒论坛

-

电子论坛综合区

聚丰众筹官方社区

新人报道区

聚丰供应链

-

论坛服务区

-

供求信息发布

供需广告

招聘┃求职发布区

电子展览展会专区