SIM900A短信发送 ,发送0X1A,回复错误,导致发送失败

2019-07-20 02:23发布

我用的stm32f4vet6,在调试短信发送的时候,发现串口发送完0X1A后一直得不到正确的回复,最终导致失败。在电脑上调试SIM900A的时候没问题。
    if(key==14&&pohnenumlen)                //执行发送短信
                {  
                    Show_Str(0,70,170,90,"正在发送",16,0);            //显示正在发送        
                    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(p2,">",200)==0)                    //发送短信命令+电话号码
                    {     
                        Show_Str(0,70,170,90,"正在发送",16,0);                                                                              
                        u3_printf("%s",p1);                                 //发送短信内容到GSM模块
                         if(sim900a_send_cmd((u8*)0X1A,"+CMGS:",1000)==0)smssendsta=2;//发送结束符,等待发送完成(最长等待10秒钟,因为短信长了的话,等待时间会长一些)
                    }  
                    if(smssendsta==1)Show_Str(0,70,170,90,"发送失败",16,0);    //显示状态
                    else Show_Str(0,70,170,90,"发送成功",16,0);                //显示状态   
                    USART3_RX_STA=0;
                }


发送完0X1A就一直在等待回复,但最后没有得到正确回复
    if(ack&&waittime)        //需要等待应答
    {
        while(--waittime)    //等待倒计时
        {
            delay_ms(10);
            if(USART3_RX_STA&0X8000)//接收到期待的应答结果
            {
                if(sim900a_check_cmd(ack))break;//得到有效数据
                USART3_RX_STA=0;
            }
        }
        if(waittime==0)res=1;
    }

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
9条回答
feichangkunge
1楼-- · 2019-07-20 05:11
把这句
if(sim900a_send_cmd((u8*)0X1A,"+CMGS:",1000)==0)
改成
if(sim900a_send_cmd((u8*)0X1A,"OK",1000)==0)
就可以了
A不懂得空Q
2楼-- · 2019-07-20 07:10
试过了,不行。
A不懂得空Q
3楼-- · 2019-07-20 09:50
 精彩回答 2  元偷偷看……
A不懂得空Q
4楼-- · 2019-07-20 13:00
 精彩回答 2  元偷偷看……
正点原子
5楼-- · 2019-07-20 13:51
检测下stm32串口发出来的数据,是否正常?
别接SIM800C,直接接电脑串口
千里马73
6楼-- · 2019-07-20 18:23
 精彩回答 2  元偷偷看……

一周热门 更多>