菜鸟,STM32+SIM900短信不会发,求助!谢谢!

2019-08-19 20:46发布

选到了这个毕设,自己几年前学的基础C程,接触STM32和SIM900,需要用到短信收发,但不会发,翻了帖子没看见有人问这么傻的问题,所以厚着脸问
用了原子哥的例程,发送的后两行代码:u3_printf("hm")
                                                         sim900a_send_cmd((u8*)0X1A,"+CMGS:",1000)   
                                                     发送后XCOM的反应如图:

自己感觉这个也是有问题的,但是没有更靠谱的想法。到底要怎么发呀,求助! 微信图片_20170502153332.png

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
10条回答
yuzeyuan1
2019-08-20 09:12
柯墨爱 发表于 2017-5-3 11:58
哦,谢谢!但我的意思是已经实现用电脑串口助手直接控制sim900收发短信,但是呢,通过单片机就不会发消息 ...

除了发短信外,有一些配置命令需要先发,你确定都发对了吗?模块会给你回复,是不是OK?看一下先。
uint8 AT_CMGF[] = "AT+CMGF=1 ";  //设为文本模式
uint8 AT_CSCS[] = "AT+CSCS="GSM" ";  //设置GSM字符集
uint8 AT_CNMI[] = "AT+CNMI=2,1 ";  //设置新消息提示
uint8 AT_CMGD[] = "AT+CMGD=1 ";  //删除全部短信

        while(OK_OR_NOK == 0)
        {
                OK_OR_NOK = sim900a_send_cmd(AT,sizeof(AT),"OK",100);
        }

        sim900a_send_cmd(AT_CMGF,sizeof(AT_CMGF),"OK",100);
        sim900a_send_cmd(AT_CSCS,sizeof(AT_CSCS),"OK",100);
        sim900a_send_cmd(AT_CNMI,sizeof(AT_CNMI),"OK",100);

需要先发这几条命令。才能让模块干活。
        while(temp<length-1)           //这里用你自己的字符串长度
        {
                while((UART4->SR&0X40)==0);  
                UART4->DR = cmd[temp];
                temp++;
        }
        rt_thread_delay(time);
    //读串口数据并荐到buf里,数据个数是com_data_len.
  com_data_len = rt_UartReadGSM(buf);
sim900a_send_cmd内容我就不多发了,和你的都没关系。内容就是把数据按字节一个个发出去,50ms后接收信息,如果收到的是OK就返回1,如果是ERROR或是没有就返回0。
我在淘宝上买的SIM900A,卖家会给你手册的,你看手册去写自己的命令

一周热门 更多>